From d65b4c94a92498a770e3e5c2497bf5abb921c522 Mon Sep 17 00:00:00 2001
From: marha <marha@users.sourceforge.net>
Date: Thu, 5 Nov 2009 18:03:37 +0000
Subject: Added libXt-1.0.7

---
 libXt/AUTHORS                                  |     0
 libXt/COPYING                                  |    21 +
 libXt/ChangeLog                                |   843 +
 libXt/INSTALL                                  |   229 +
 libXt/Makefile.am                              |    36 +
 libXt/Makefile.in                              |   834 +
 libXt/NEWS                                     |     0
 libXt/README                                   |    58 +
 libXt/acinclude.m4                             |    46 +
 libXt/aclocal.m4                               |  8438 ++++++++
 libXt/compile                                  |   143 +
 libXt/config.guess                             |  1526 ++
 libXt/config.h.in                              |    85 +
 libXt/config.sub                               |  1658 ++
 libXt/configure                                | 23214 +++++++++++++++++++++++
 libXt/configure.ac                             |   142 +
 libXt/depcomp                                  |   630 +
 libXt/include/Makefile.am                      |    44 +
 libXt/include/Makefile.in                      |   550 +
 libXt/include/X11/CallbackI.h                  |   121 +
 libXt/include/X11/Composite.h                  |   105 +
 libXt/include/X11/CompositeP.h                 |   115 +
 libXt/include/X11/ConstrainP.h                 |    98 +
 libXt/include/X11/Constraint.h                 |    64 +
 libXt/include/X11/ConvertI.h                   |    99 +
 libXt/include/X11/Core.h                       |    70 +
 libXt/include/X11/CoreP.h                      |   175 +
 libXt/include/X11/CreateI.h                    |    44 +
 libXt/include/X11/EventI.h                     |   138 +
 libXt/include/X11/HookObjI.h                   |    75 +
 libXt/include/X11/InitialI.h                   |   433 +
 libXt/include/X11/Intrinsic.h                  |  2589 +++
 libXt/include/X11/IntrinsicI.h                 |   265 +
 libXt/include/X11/IntrinsicP.h                 |   327 +
 libXt/include/X11/Object.h                     |    65 +
 libXt/include/X11/ObjectP.h                    |   143 +
 libXt/include/X11/PassivGraI.h                 |   190 +
 libXt/include/X11/RectObj.h                    |    65 +
 libXt/include/X11/RectObjP.h                   |   133 +
 libXt/include/X11/ResConfigP.h                 |    78 +
 libXt/include/X11/ResourceI.h                  |   103 +
 libXt/include/X11/SelectionI.h                 |   170 +
 libXt/include/X11/ShellI.h                     |    12 +
 libXt/include/X11/ShellP.h                     |   436 +
 libXt/include/X11/ThreadsI.h                   |   134 +
 libXt/include/X11/TranslateI.h                 |   609 +
 libXt/include/X11/VarargsI.h                   |    69 +
 libXt/include/X11/Vendor.h                     |    75 +
 libXt/include/X11/VendorP.h                    |   107 +
 libXt/include/X11/Xtos.h                       |    77 +
 libXt/install-sh                               |   520 +
 libXt/ltmain.sh                                |  6956 +++++++
 libXt/man/Makefile.am                          |   811 +
 libXt/man/Makefile.in                          |  1165 ++
 libXt/man/XtAddActions.man                     |   150 +
 libXt/man/XtAddCallback.man                    |   194 +
 libXt/man/XtAddEventHandler.man                |   242 +
 libXt/man/XtAddExposureToRegion.man            |   166 +
 libXt/man/XtAddGrab.man                        |   201 +
 libXt/man/XtAddInput.man                       |   173 +
 libXt/man/XtAllocateGC.man                     |   192 +
 libXt/man/XtAppAddActionHook.man               |   167 +
 libXt/man/XtAppAddActions.man                  |   154 +
 libXt/man/XtAppAddBlockHook.man                |   163 +
 libXt/man/XtAppAddConverter.man                |   177 +
 libXt/man/XtAppAddInput.man                    |   204 +
 libXt/man/XtAppAddSignal.man                   |   198 +
 libXt/man/XtAppAddTimeOut.man                  |   170 +
 libXt/man/XtAppAddWorkProc.man                 |   165 +
 libXt/man/XtAppCreateShell.man                 |   182 +
 libXt/man/XtAppError.man                       |   182 +
 libXt/man/XtAppErrorMsg.man                    |   195 +
 libXt/man/XtAppGetErrorDatabase.man            |   180 +
 libXt/man/XtAppGetSelectionTimeout.man         |   166 +
 libXt/man/XtAppInitialize.man                  |   209 +
 libXt/man/XtAppLock.man                        |   150 +
 libXt/man/XtAppNextEvent.man                   |   283 +
 libXt/man/XtAppReleaseCacheRefs.man            |   153 +
 libXt/man/XtAppSetExitFlag.man                 |   150 +
 libXt/man/XtAppSetFallbackResources.man        |   167 +
 libXt/man/XtAppSetTypeConverter.man            |   177 +
 libXt/man/XtBuildEventMask.man                 |   158 +
 libXt/man/XtCallAcceptFocus.man                |   156 +
 libXt/man/XtCallActionProc.man                 |   163 +
 libXt/man/XtCallCallbacks.man                  |   188 +
 libXt/man/XtClass.man                          |   245 +
 libXt/man/XtConfigureWidget.man                |   224 +
 libXt/man/XtConvert.man                        |   194 +
 libXt/man/XtConvertAndStore.man                |   226 +
 libXt/man/XtCreateApplicationContext.man       |   179 +
 libXt/man/XtCreateApplicationShell.man         |   160 +
 libXt/man/XtCreatePopupShell.man               |   181 +
 libXt/man/XtCreateSelectionRequest.man         |   201 +
 libXt/man/XtCreateWidget.man                   |   312 +
 libXt/man/XtCreateWindow.man                   |   190 +
 libXt/man/XtDisplay.man                        |   173 +
 libXt/man/XtDisplayInitialize.man              |   272 +
 libXt/man/XtDisplayStringConversionWarning.man |   163 +
 libXt/man/XtDisplayToApplicationContext.man    |   146 +
 libXt/man/XtError.man                          |   177 +
 libXt/man/XtErrorMsg.man                       |   187 +
 libXt/man/XtFindFile.man                       |   191 +
 libXt/man/XtGetActionKeysym.man                |   173 +
 libXt/man/XtGetActionList.man                  |   159 +
 libXt/man/XtGetApplicationNameAndClass.man     |   158 +
 libXt/man/XtGetApplicationResources.man        |   184 +
 libXt/man/XtGetClassExtension.man              |   166 +
 libXt/man/XtGetDisplays.man                    |   151 +
 libXt/man/XtGetErrorDatabase.man               |   172 +
 libXt/man/XtGetGC.man                          |   176 +
 libXt/man/XtGetKeyboardFocusWidget.man         |   150 +
 libXt/man/XtGetKeysymTable.man                 |   176 +
 libXt/man/XtGetResourceList.man                |   191 +
 libXt/man/XtGetSelectionParameters.man         |   171 +
 libXt/man/XtGetSelectionRequest.man            |   163 +
 libXt/man/XtGetSelectionTimeout.man            |   156 +
 libXt/man/XtGetSelectionValue.man              |   200 +
 libXt/man/XtGetSelectionValueIncremental.man   |   205 +
 libXt/man/XtGetSubresources.man                |   185 +
 libXt/man/XtGrabKey.man                        |   315 +
 libXt/man/XtHooksOfDisplay.man                 |   147 +
 libXt/man/XtInitialize.man                     |   177 +
 libXt/man/XtInitializeWidgetClass.man          |   153 +
 libXt/man/XtInsertEventTypeHandler.man         |   294 +
 libXt/man/XtLastEventProcessed.man             |   166 +
 libXt/man/XtMakeGeometryRequest.man            |   241 +
 libXt/man/XtMalloc.man                         |   237 +
 libXt/man/XtManageChildren.man                 |   354 +
 libXt/man/XtMapWidget.man                      |   176 +
 libXt/man/XtName.man                           |   145 +
 libXt/man/XtNameToWidget.man                   |   187 +
 libXt/man/XtNextEvent.man                      |   187 +
 libXt/man/XtOffset.man                         |   175 +
 libXt/man/XtOpenApplication.man                |   211 +
 libXt/man/XtOwnSelection.man                   |   231 +
 libXt/man/XtParent.man                         |   146 +
 libXt/man/XtParseAcceleratorTable.man          |   179 +
 libXt/man/XtParseTranslationTable.man          |   194 +
 libXt/man/XtPopdown.man                        |   235 +
 libXt/man/XtPopup.man                          |   328 +
 libXt/man/XtProcessLock.man                    |   147 +
 libXt/man/XtQueryGeometry.man                  |   171 +
 libXt/man/XtRealizeWidget.man                  |   215 +
 libXt/man/XtRegisterDrawable.man               |   174 +
 libXt/man/XtRegisterGrabAction.man             |   156 +
 libXt/man/XtReservePropertyAtom.man            |   152 +
 libXt/man/XtResolvePathname.man                |   285 +
 libXt/man/XtSessionGetToken.man                |   159 +
 libXt/man/XtSetArg.man                         |   210 +
 libXt/man/XtSetKeyTranslator.man               |   214 +
 libXt/man/XtSetKeyboardFocus.man               |   192 +
 libXt/man/XtSetLanguageProc.man                |   200 +
 libXt/man/XtSetMultiClickTime.man              |   155 +
 libXt/man/XtSetSelectionParameters.man         |   192 +
 libXt/man/XtSetSensitive.man                   |   191 +
 libXt/man/XtSetValues.man                      |   283 +
 libXt/man/XtSetWMColormapWindows.man           |   166 +
 libXt/man/XtStringConversionWarning.man        |   159 +
 libXt/man/XtToolkitThreadInitialize.man        |   151 +
 libXt/man/XtTranslateCoords.man                |   162 +
 libXt/man/XtVaCreateArgsList.man               |   161 +
 libXt/missing                                  |   376 +
 libXt/src/ActionHook.c                         |   135 +
 libXt/src/Alloc.c                              |   494 +
 libXt/src/ArgList.c                            |    77 +
 libXt/src/Callback.c                           |   692 +
 libXt/src/ClickTime.c                          |    93 +
 libXt/src/Composite.c                          |   283 +
 libXt/src/Constraint.c                         |   133 +
 libXt/src/Convert.c                            |  1087 ++
 libXt/src/Converters.c                         |  1864 ++
 libXt/src/Core.c                               |   398 +
 libXt/src/Create.c                             |   778 +
 libXt/src/Destroy.c                            |   374 +
 libXt/src/Display.c                            |   763 +
 libXt/src/Error.c                              |   636 +
 libXt/src/Event.c                              |  1731 ++
 libXt/src/EventUtil.c                          |   221 +
 libXt/src/Functions.c                          |   216 +
 libXt/src/GCManager.c                          |   353 +
 libXt/src/Geometry.c                           |   817 +
 libXt/src/GetActKey.c                          |   102 +
 libXt/src/GetResList.c                         |   193 +
 libXt/src/GetValues.c                          |   251 +
 libXt/src/HookObj.c                            |   137 +
 libXt/src/Hooks.c                              |   158 +
 libXt/src/Initialize.c                         |  1054 +
 libXt/src/Intrinsic.c                          |  1600 ++
 libXt/src/Keyboard.c                           |   851 +
 libXt/src/Makefile.am                          |   105 +
 libXt/src/Makefile.in                          |   729 +
 libXt/src/Manage.c                             |   491 +
 libXt/src/NextEvent.c                          |  1617 ++
 libXt/src/Object.c                             |   296 +
 libXt/src/PassivGrab.c                         |  1053 +
 libXt/src/Pointer.c                            |   115 +
 libXt/src/Popup.c                              |   198 +
 libXt/src/PopupCB.c                            |    84 +
 libXt/src/RectObj.c                            |   193 +
 libXt/src/ResConfig.c                          |  1023 +
 libXt/src/Resources.c                          |  1267 ++
 libXt/src/Selection.c                          |  2295 +++
 libXt/src/SetSens.c                            |   128 +
 libXt/src/SetValues.c                          |   443 +
 libXt/src/SetWMCW.c                            |   173 +
 libXt/src/Shell.c                              |  3412 ++++
 libXt/src/TMaction.c                           |  1056 ++
 libXt/src/TMgrab.c                             |   336 +
 libXt/src/TMkey.c                              |   718 +
 libXt/src/TMparse.c                            |  2136 +++
 libXt/src/TMprint.c                            |   885 +
 libXt/src/TMstate.c                            |  2349 +++
 libXt/src/Threads.c                            |   428 +
 libXt/src/VarCreate.c                          |   399 +
 libXt/src/VarGet.c                             |   317 +
 libXt/src/Varargs.c                            |   519 +
 libXt/src/Vendor.c                             |   159 +
 libXt/src/sharedlib.c                          |   236 +
 libXt/util/Makefile.am                         |    47 +
 libXt/util/Makefile.in                         |   646 +
 libXt/util/Shell.ht                            |    97 +
 libXt/util/StrDefs.ct                          |    54 +
 libXt/util/StrDefs.ht                          |    64 +
 libXt/util/makestrs.c                          |   752 +
 libXt/util/makestrs.man                        |   219 +
 libXt/util/string.list                         |   399 +
 libXt/xt.pc.in                                 |    13 +
 packages.txt                                   |     1 +
 228 files changed, 116757 insertions(+)
 create mode 100644 libXt/AUTHORS
 create mode 100644 libXt/COPYING
 create mode 100644 libXt/ChangeLog
 create mode 100644 libXt/INSTALL
 create mode 100644 libXt/Makefile.am
 create mode 100644 libXt/Makefile.in
 create mode 100644 libXt/NEWS
 create mode 100644 libXt/README
 create mode 100644 libXt/acinclude.m4
 create mode 100644 libXt/aclocal.m4
 create mode 100644 libXt/compile
 create mode 100644 libXt/config.guess
 create mode 100644 libXt/config.h.in
 create mode 100644 libXt/config.sub
 create mode 100644 libXt/configure
 create mode 100644 libXt/configure.ac
 create mode 100644 libXt/depcomp
 create mode 100644 libXt/include/Makefile.am
 create mode 100644 libXt/include/Makefile.in
 create mode 100644 libXt/include/X11/CallbackI.h
 create mode 100644 libXt/include/X11/Composite.h
 create mode 100644 libXt/include/X11/CompositeP.h
 create mode 100644 libXt/include/X11/ConstrainP.h
 create mode 100644 libXt/include/X11/Constraint.h
 create mode 100644 libXt/include/X11/ConvertI.h
 create mode 100644 libXt/include/X11/Core.h
 create mode 100644 libXt/include/X11/CoreP.h
 create mode 100644 libXt/include/X11/CreateI.h
 create mode 100644 libXt/include/X11/EventI.h
 create mode 100644 libXt/include/X11/HookObjI.h
 create mode 100644 libXt/include/X11/InitialI.h
 create mode 100644 libXt/include/X11/Intrinsic.h
 create mode 100644 libXt/include/X11/IntrinsicI.h
 create mode 100644 libXt/include/X11/IntrinsicP.h
 create mode 100644 libXt/include/X11/Object.h
 create mode 100644 libXt/include/X11/ObjectP.h
 create mode 100644 libXt/include/X11/PassivGraI.h
 create mode 100644 libXt/include/X11/RectObj.h
 create mode 100644 libXt/include/X11/RectObjP.h
 create mode 100644 libXt/include/X11/ResConfigP.h
 create mode 100644 libXt/include/X11/ResourceI.h
 create mode 100644 libXt/include/X11/SelectionI.h
 create mode 100644 libXt/include/X11/ShellI.h
 create mode 100644 libXt/include/X11/ShellP.h
 create mode 100644 libXt/include/X11/ThreadsI.h
 create mode 100644 libXt/include/X11/TranslateI.h
 create mode 100644 libXt/include/X11/VarargsI.h
 create mode 100644 libXt/include/X11/Vendor.h
 create mode 100644 libXt/include/X11/VendorP.h
 create mode 100644 libXt/include/X11/Xtos.h
 create mode 100644 libXt/install-sh
 create mode 100644 libXt/ltmain.sh
 create mode 100644 libXt/man/Makefile.am
 create mode 100644 libXt/man/Makefile.in
 create mode 100644 libXt/man/XtAddActions.man
 create mode 100644 libXt/man/XtAddCallback.man
 create mode 100644 libXt/man/XtAddEventHandler.man
 create mode 100644 libXt/man/XtAddExposureToRegion.man
 create mode 100644 libXt/man/XtAddGrab.man
 create mode 100644 libXt/man/XtAddInput.man
 create mode 100644 libXt/man/XtAllocateGC.man
 create mode 100644 libXt/man/XtAppAddActionHook.man
 create mode 100644 libXt/man/XtAppAddActions.man
 create mode 100644 libXt/man/XtAppAddBlockHook.man
 create mode 100644 libXt/man/XtAppAddConverter.man
 create mode 100644 libXt/man/XtAppAddInput.man
 create mode 100644 libXt/man/XtAppAddSignal.man
 create mode 100644 libXt/man/XtAppAddTimeOut.man
 create mode 100644 libXt/man/XtAppAddWorkProc.man
 create mode 100644 libXt/man/XtAppCreateShell.man
 create mode 100644 libXt/man/XtAppError.man
 create mode 100644 libXt/man/XtAppErrorMsg.man
 create mode 100644 libXt/man/XtAppGetErrorDatabase.man
 create mode 100644 libXt/man/XtAppGetSelectionTimeout.man
 create mode 100644 libXt/man/XtAppInitialize.man
 create mode 100644 libXt/man/XtAppLock.man
 create mode 100644 libXt/man/XtAppNextEvent.man
 create mode 100644 libXt/man/XtAppReleaseCacheRefs.man
 create mode 100644 libXt/man/XtAppSetExitFlag.man
 create mode 100644 libXt/man/XtAppSetFallbackResources.man
 create mode 100644 libXt/man/XtAppSetTypeConverter.man
 create mode 100644 libXt/man/XtBuildEventMask.man
 create mode 100644 libXt/man/XtCallAcceptFocus.man
 create mode 100644 libXt/man/XtCallActionProc.man
 create mode 100644 libXt/man/XtCallCallbacks.man
 create mode 100644 libXt/man/XtClass.man
 create mode 100644 libXt/man/XtConfigureWidget.man
 create mode 100644 libXt/man/XtConvert.man
 create mode 100644 libXt/man/XtConvertAndStore.man
 create mode 100644 libXt/man/XtCreateApplicationContext.man
 create mode 100644 libXt/man/XtCreateApplicationShell.man
 create mode 100644 libXt/man/XtCreatePopupShell.man
 create mode 100644 libXt/man/XtCreateSelectionRequest.man
 create mode 100644 libXt/man/XtCreateWidget.man
 create mode 100644 libXt/man/XtCreateWindow.man
 create mode 100644 libXt/man/XtDisplay.man
 create mode 100644 libXt/man/XtDisplayInitialize.man
 create mode 100644 libXt/man/XtDisplayStringConversionWarning.man
 create mode 100644 libXt/man/XtDisplayToApplicationContext.man
 create mode 100644 libXt/man/XtError.man
 create mode 100644 libXt/man/XtErrorMsg.man
 create mode 100644 libXt/man/XtFindFile.man
 create mode 100644 libXt/man/XtGetActionKeysym.man
 create mode 100644 libXt/man/XtGetActionList.man
 create mode 100644 libXt/man/XtGetApplicationNameAndClass.man
 create mode 100644 libXt/man/XtGetApplicationResources.man
 create mode 100644 libXt/man/XtGetClassExtension.man
 create mode 100644 libXt/man/XtGetDisplays.man
 create mode 100644 libXt/man/XtGetErrorDatabase.man
 create mode 100644 libXt/man/XtGetGC.man
 create mode 100644 libXt/man/XtGetKeyboardFocusWidget.man
 create mode 100644 libXt/man/XtGetKeysymTable.man
 create mode 100644 libXt/man/XtGetResourceList.man
 create mode 100644 libXt/man/XtGetSelectionParameters.man
 create mode 100644 libXt/man/XtGetSelectionRequest.man
 create mode 100644 libXt/man/XtGetSelectionTimeout.man
 create mode 100644 libXt/man/XtGetSelectionValue.man
 create mode 100644 libXt/man/XtGetSelectionValueIncremental.man
 create mode 100644 libXt/man/XtGetSubresources.man
 create mode 100644 libXt/man/XtGrabKey.man
 create mode 100644 libXt/man/XtHooksOfDisplay.man
 create mode 100644 libXt/man/XtInitialize.man
 create mode 100644 libXt/man/XtInitializeWidgetClass.man
 create mode 100644 libXt/man/XtInsertEventTypeHandler.man
 create mode 100644 libXt/man/XtLastEventProcessed.man
 create mode 100644 libXt/man/XtMakeGeometryRequest.man
 create mode 100644 libXt/man/XtMalloc.man
 create mode 100644 libXt/man/XtManageChildren.man
 create mode 100644 libXt/man/XtMapWidget.man
 create mode 100644 libXt/man/XtName.man
 create mode 100644 libXt/man/XtNameToWidget.man
 create mode 100644 libXt/man/XtNextEvent.man
 create mode 100644 libXt/man/XtOffset.man
 create mode 100644 libXt/man/XtOpenApplication.man
 create mode 100644 libXt/man/XtOwnSelection.man
 create mode 100644 libXt/man/XtParent.man
 create mode 100644 libXt/man/XtParseAcceleratorTable.man
 create mode 100644 libXt/man/XtParseTranslationTable.man
 create mode 100644 libXt/man/XtPopdown.man
 create mode 100644 libXt/man/XtPopup.man
 create mode 100644 libXt/man/XtProcessLock.man
 create mode 100644 libXt/man/XtQueryGeometry.man
 create mode 100644 libXt/man/XtRealizeWidget.man
 create mode 100644 libXt/man/XtRegisterDrawable.man
 create mode 100644 libXt/man/XtRegisterGrabAction.man
 create mode 100644 libXt/man/XtReservePropertyAtom.man
 create mode 100644 libXt/man/XtResolvePathname.man
 create mode 100644 libXt/man/XtSessionGetToken.man
 create mode 100644 libXt/man/XtSetArg.man
 create mode 100644 libXt/man/XtSetKeyTranslator.man
 create mode 100644 libXt/man/XtSetKeyboardFocus.man
 create mode 100644 libXt/man/XtSetLanguageProc.man
 create mode 100644 libXt/man/XtSetMultiClickTime.man
 create mode 100644 libXt/man/XtSetSelectionParameters.man
 create mode 100644 libXt/man/XtSetSensitive.man
 create mode 100644 libXt/man/XtSetValues.man
 create mode 100644 libXt/man/XtSetWMColormapWindows.man
 create mode 100644 libXt/man/XtStringConversionWarning.man
 create mode 100644 libXt/man/XtToolkitThreadInitialize.man
 create mode 100644 libXt/man/XtTranslateCoords.man
 create mode 100644 libXt/man/XtVaCreateArgsList.man
 create mode 100644 libXt/missing
 create mode 100644 libXt/src/ActionHook.c
 create mode 100644 libXt/src/Alloc.c
 create mode 100644 libXt/src/ArgList.c
 create mode 100644 libXt/src/Callback.c
 create mode 100644 libXt/src/ClickTime.c
 create mode 100644 libXt/src/Composite.c
 create mode 100644 libXt/src/Constraint.c
 create mode 100644 libXt/src/Convert.c
 create mode 100644 libXt/src/Converters.c
 create mode 100644 libXt/src/Core.c
 create mode 100644 libXt/src/Create.c
 create mode 100644 libXt/src/Destroy.c
 create mode 100644 libXt/src/Display.c
 create mode 100644 libXt/src/Error.c
 create mode 100644 libXt/src/Event.c
 create mode 100644 libXt/src/EventUtil.c
 create mode 100644 libXt/src/Functions.c
 create mode 100644 libXt/src/GCManager.c
 create mode 100644 libXt/src/Geometry.c
 create mode 100644 libXt/src/GetActKey.c
 create mode 100644 libXt/src/GetResList.c
 create mode 100644 libXt/src/GetValues.c
 create mode 100644 libXt/src/HookObj.c
 create mode 100644 libXt/src/Hooks.c
 create mode 100644 libXt/src/Initialize.c
 create mode 100644 libXt/src/Intrinsic.c
 create mode 100644 libXt/src/Keyboard.c
 create mode 100644 libXt/src/Makefile.am
 create mode 100644 libXt/src/Makefile.in
 create mode 100644 libXt/src/Manage.c
 create mode 100644 libXt/src/NextEvent.c
 create mode 100644 libXt/src/Object.c
 create mode 100644 libXt/src/PassivGrab.c
 create mode 100644 libXt/src/Pointer.c
 create mode 100644 libXt/src/Popup.c
 create mode 100644 libXt/src/PopupCB.c
 create mode 100644 libXt/src/RectObj.c
 create mode 100644 libXt/src/ResConfig.c
 create mode 100644 libXt/src/Resources.c
 create mode 100644 libXt/src/Selection.c
 create mode 100644 libXt/src/SetSens.c
 create mode 100644 libXt/src/SetValues.c
 create mode 100644 libXt/src/SetWMCW.c
 create mode 100644 libXt/src/Shell.c
 create mode 100644 libXt/src/TMaction.c
 create mode 100644 libXt/src/TMgrab.c
 create mode 100644 libXt/src/TMkey.c
 create mode 100644 libXt/src/TMparse.c
 create mode 100644 libXt/src/TMprint.c
 create mode 100644 libXt/src/TMstate.c
 create mode 100644 libXt/src/Threads.c
 create mode 100644 libXt/src/VarCreate.c
 create mode 100644 libXt/src/VarGet.c
 create mode 100644 libXt/src/Varargs.c
 create mode 100644 libXt/src/Vendor.c
 create mode 100644 libXt/src/sharedlib.c
 create mode 100644 libXt/util/Makefile.am
 create mode 100644 libXt/util/Makefile.in
 create mode 100644 libXt/util/Shell.ht
 create mode 100644 libXt/util/StrDefs.ct
 create mode 100644 libXt/util/StrDefs.ht
 create mode 100644 libXt/util/makestrs.c
 create mode 100644 libXt/util/makestrs.man
 create mode 100644 libXt/util/string.list
 create mode 100644 libXt/xt.pc.in

diff --git a/libXt/AUTHORS b/libXt/AUTHORS
new file mode 100644
index 000000000..e69de29bb
diff --git a/libXt/COPYING b/libXt/COPYING
new file mode 100644
index 000000000..e506314ae
--- /dev/null
+++ b/libXt/COPYING
@@ -0,0 +1,21 @@
+
+Copyright © 2001,2003 Keith Packard
+
+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 Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Keith Packard makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH PACKARD 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.
+
diff --git a/libXt/ChangeLog b/libXt/ChangeLog
new file mode 100644
index 000000000..bf0171871
--- /dev/null
+++ b/libXt/ChangeLog
@@ -0,0 +1,843 @@
+commit 5d63df924d7f66d2207c8db67e5d6cce8c7b245b
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Thu Oct 8 21:50:35 2009 -0700
+
+    libXt 1.0.7
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit f82769a1a75e17f66b67a5f71dcf889955569a57
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Thu Oct 8 21:33:27 2009 -0700
+
+    Replace AC_DEFINE_DIR with AX_DEFINE_DIR from Autoconf Archive
+
+commit 0ce97e4422409de070af7fd70da590db12c58579
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue Oct 6 16:12:03 2009 -0700
+
+    Migrate to xorg macros 1.3 & XORG_DEFAULT_OPTIONS
+    
+    Includes adding many $(AM_V_GEN) calls for the AM_SILENT_RULES included
+    by XORG_DEFAULT_OPTIONS when automake-1.11 or newer is used
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 254e2e0a8197e47bcef3e3c0b461ef8156a1af64
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue Oct 6 16:29:59 2009 -0700
+
+    Use make rules instead of shell for loops to generate shadow man pages
+    
+    Allows parallel make and simpler build logs/error reporting
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit fedc095da647b6f4fda8ca5edc5644458e2b2fbf
+Author: Julien Cristau <jcristau@debian.org>
+Date:   Tue Aug 25 18:31:49 2009 +0200
+
+    Link against libICE
+    
+    libXt uses IceConnectionNumber() and IceProcessMessages(), so make sure
+    we link against -lICE.
+    
+    Signed-off-by: Julien Cristau <jcristau@debian.org>
+
+commit f77482f0618f954de1d080599ada058e9a3c24ff
+Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date:   Tue Jul 28 11:59:41 2009 +0200
+
+    Fix compilation of host tools in cross-compilation case
+    
+    At 36e9f0d351afbf7fd2595990b2d39e7c551f6420, a fix was added to use
+    the host gcc instead of the target gcc when cross-compiling
+    libXt. This fix works, but is not solve the whole problem: the CFLAGS
+    and LDFLAGS used with the host compilers are the one defined for the
+    target compiler (and the flags for both compilers might be very
+    different).
+    
+    This new fix let libXt obey to CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD
+    environment variables, and use them to compile the host tools in
+    util/.
+    
+    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+commit 369629611609f20c89499c1f6b5562a4f3cca983
+Author: Adam Jackson <ajax@redhat.com>
+Date:   Thu Jul 2 13:28:01 2009 -0400
+
+    libXt 1.0.6
+
+commit 28677468c56888b18c44d71a62903d23e5c294cf
+Author: Jon TURNEY <jon.turney@dronecode.org.uk>
+Date:   Tue May 19 23:25:15 2009 +0100
+
+    Cygwin/X: Build fix
+    
+    Commit c59dd27ecb1751f0b097046b2f892028e5a10a3e replaces __CYGWIN__ with WIN32
+    in a preprocessor check, as the code is appropriate for both Cygwin and Mingw.
+    
+    But this isn't quite the right was to do this. Being a Win32 platform is
+    Cygwin's secret shame, and WIN32 isn't actually defined to avoid turning on
+    code specific to native-Win API ports
+    
+    (See http://www.cygwin.com/faq/faq.programming.html#faq.programming.preprocessor)
+    
+    Yes, this probably means WIN32 could bereplaced by __MINGW32__ everywhere in the
+    X sources...
+
+commit 535f8c5324205b92c15e8755008c33a2766832c8
+Author: John McKernan <john.mckernan@sun.com>
+Date:   Fri May 1 13:53:03 2009 -0700
+
+    Sun bug 4010369: Too slow to process Keycode 0 events in Xt Translation Mgr.
+    
+    Evaluation from original bug report against Solaris 2.6 in 1996:
+    
+        According to my investigation with the problem using debuggable
+        libXt and libXm, keycode 0 keypress events, which are given to
+        Xt's Translation Manager when inputting any cyrillic/greek characters,
+        are not cached in Xt's Translation Manager. At the TRANSLATE macro
+        in the Xt's source lib/Xt/TMkey.c, keycode 0 keyevents are always
+        given to XtTranslateKeycode() and it consumes a long time to parse
+        Motif's Translation Manager tables as many times as keycode 0
+        keyevent are given.
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit 061d3eebf7a0502afcd9c1831d67c8961feece8d
+Author: John McKernan <john.mckernan@sun.com>
+Date:   Fri May 1 13:41:26 2009 -0700
+
+    Sun bug #1237023:  Dtterm crashes in XtDisplayAccelerators()
+    
+    Don't try to printf if returned string is NULL
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit e500631954c8d390e8705fde7f50d1acc006406e
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Thu Mar 12 01:03:39 2009 -0700
+
+    darwin: Don't use poll() on versions of darwin before darwin10
+
+commit 81792a4cb402c4e5275d63465bc5d65599e34a25
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon Feb 2 20:34:36 2009 -0800
+
+    Add README with pointers to mailing list, bugzilla & git repos
+    
+    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+
+commit f56a69f2cf7df1e7cdf2494c5408786e53467374
+Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br>
+Date:   Fri Jan 30 18:22:10 2009 -0200
+
+    Janitor: ansification, make distcheck, compiler warnings, .gitignore.
+    
+      Most "compiler" warnings were actually sparse warnings, due to
+    assigning a integer to a pointer, or an external symbol without
+    a previous declaration.
+
+commit c1f227f94aec6f4555182965fc0d2d8f33fef01f
+Author: Peter Breitenlohner <peb@mppmu.mpg.de>
+Date:   Mon Oct 20 18:50:37 2008 -0700
+
+    X.Org Bug 17942: libXt manpage formatting
+    
+    <http://bugs.freedesktop.org/show_bug.cgi?id=17942>
+
+commit f488a6a218da6b543d1495e607ff1b31b0b48900
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Tue Sep 23 19:14:09 2008 +0300
+
+    configure.ac: Minor thinko
+
+commit 36e9f0d351afbf7fd2595990b2d39e7c551f6420
+Author: John Tapsell <johnflux@gmail.com>
+Date:   Tue Sep 23 19:00:42 2008 +0300
+
+    configure.ac: Use native compiler for build tools
+    
+    makestrs is used during the build, so use the native compiler (either
+    gcc or cc in $PATH, can be overridden as $CC_FOR_BUILD) instead of the
+    (possibly cross-) compiler.
+
+commit ace1676b0630dfe739c3bd712ed2b6e46bdb52f1
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon Jun 23 20:04:29 2008 -0700
+
+    Update ac_define_dir.m4 to 2008-04-12 version
+
+commit 556918e21fbb67131d979b04f29a0b59fcd87575
+Author: Alan Hourihane <alanh@tungstengraphics.com>
+Date:   Wed Apr 30 19:15:14 2008 +0100
+
+    Set a blank default search path for WIN32
+
+commit 56444103a3b2159d334aa87d782fbca987118bbc
+Author: Alan Hourihane <alanh@tungstengraphics.com>
+Date:   Tue Apr 29 22:44:54 2008 +0100
+
+    less speed, more haste
+
+commit a393450cbde80b6e7f0e1c4112363eb1313a6cdb
+Author: Alan Hourihane <alanh@tungstengraphics.com>
+Date:   Tue Apr 29 22:16:05 2008 +0100
+
+    fix logic inverted problem
+
+commit cd83cf47412b4a5979e152990c3b0870751aee07
+Author: Colin Harrison <colin.harrison-at-virgin.net>
+Date:   Tue Apr 29 19:45:50 2008 +0100
+
+    Reduce the path searches on mingw
+
+commit bb6d2a09b87560ae396085ef0981b700924333cd
+Author: Colin Harrison <colin.harrison-at-virgin.net>
+Date:   Tue Apr 29 13:45:06 2008 +0100
+
+    Xming specific configuration file settings
+
+commit 6baea764567c3327f1d85ba91375adaea6dab46d
+Author: Alan Hourihane <alanh@tungstengraphics.com>
+Date:   Tue Apr 29 10:22:35 2008 +0100
+
+    Link with winsock for WIN32 platforms
+
+commit c59dd27ecb1751f0b097046b2f892028e5a10a3e
+Author: Colin Harrison <colin.harrison-at-virgin.net>
+Date:   Tue Apr 29 10:19:55 2008 +0100
+
+    Fix some build issues for Win32 platforms
+
+commit 8e95cb765e88d36c35f868f650c86c62c31ad635
+Author: Colin Harrison <colin.harrison-at-virgin.net>
+Date:   Wed Apr 23 13:56:28 2008 +0100
+
+    Add __MINGW32__
+
+commit 4b64b821a48fe493056271216dbe29d43376954b
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Mar 9 08:42:48 2008 +0100
+
+    nuke RCS Ids
+
+commit b648ed992d2c3ea8a7462a595e51a07085bf4688
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Mar 7 15:52:27 2008 -0800
+
+    Solaris builds need to pass -intelabi to makestrs, even on SPARC
+    
+    For some reason, when Solaris moved to X11R6.0, the intelabi version
+    of StringDefs.c/.h was used on SPARC, so now we're stuck with 10+ years
+    of binaries built to use it.
+
+commit c044ea620446db676ee076484fed3268c4d7c695
+Author: James Cloos <cloos@jhcloos.com>
+Date:   Thu Dec 6 15:51:20 2007 -0500
+
+    Add missing PHONY line for automatic ChangeLog generation
+
+commit 6b483e355de6c5ee5dc635ab9b817bf72680b016
+Author: Julien Cristau <jcristau@debian.org>
+Date:   Sat Jun 23 15:20:09 2007 +0100
+
+    Allow C++ apps to build using libXt
+
+commit 845e51c740574db2f72a5e7c5462d8f56a3c4e22
+Author: Andreas Luik <luik@orthogon.com>
+Date:   Sun Apr 8 00:43:56 2007 +0300
+
+    Recalculate fd_set more aggressively (bug #808)
+    
+    select() can modify the fd set, so be a bit pessimistic and recalculate
+    it more often.
+
+commit 007d9e5f8b2edc3ff8ce8b2f96b8f56a417bb78d
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Mon Feb 26 18:27:43 2007 +0100
+
+    Sync XtGetErrorDatabaseText() prototype with reality.
+
+commit 4e7031510d05471e77ff48355b23fc8e4302648c
+Author: Ben Byer <bbyer@bbyer.(none)>
+Date:   Tue Feb 20 01:05:27 2007 -0800
+
+    added -flat_namespace to CFLAGS for Darwin
+
+commit 92452ca7a51fa77ea60eacd320dbd970e32653c9
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Sat Jan 27 22:29:03 2007 -0800
+
+    Version bump: 1.0.5
+
+commit a5c7d56278e569257d3d64ff7681d0a484a1f817
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Sat Jan 27 22:26:55 2007 -0800
+
+    Replace static ChangeLog with dist-hook to generate from git log
+
+commit 67772a3f39c5e8c4019336b0bf4d32e70726b0c0
+Author: Eric S. Raymond <esr@thyrsus.com>
+Date:   Tue Jan 2 17:49:17 2007 -0800
+
+    Bug 9514: Markup error in makestrs.1x man page
+    
+    <https://bugs.freedesktop.org/show_bug.cgi?id=9514>
+
+commit 75f83503ba1db628137ffc9d1d9e4f2a7a2fd97a
+Merge: 2f201b1... 153264a...
+Author: Jeremy C. Reed <reed@glacier.reedmedia.net>
+Date:   Sat Dec 9 09:31:02 2006 -0600
+
+    Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/lib/libXt
+
+commit 2f201b177816be7112884bda180d65f5fff19155
+Author: Jeremy C. Reed <reed@glacier.reedmedia.net>
+Date:   Sat Dec 9 09:28:04 2006 -0600
+
+    Don't use "INSTALL" during the build because INSTALL may be set by
+    build environment with settings for chown and make not work with
+    permissions of the builder.  So use mkdir -p and cp instead.  This
+    is for my bug #6599.
+
+commit 153264a7f290f98e01ed2dbd7265c977ec8ba7e1
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Wed Nov 8 16:16:02 2006 +0200
+
+    bump to 1.0.4
+
+commit 0c1954765c32c1bd298111cc6bed2f090494c0cf
+Author: Eric Anholt <eric@anholt.net>
+Date:   Fri Oct 27 12:35:38 2006 -0700
+
+    Fix .pc file with new autotools by using AC_DEFINE_DIR.
+    
+    With autoconf 2.60, $datadir now expands to use $datarootdir rather than just
+    $prefix, so the .pc referenced the undefined $datarootdir.  AC_DEFINE_DIR
+    expands it all out for us.
+
+commit 3c166cc1efe86ca42180a64e14b6bbbc9744bc82
+Author: Eric Anholt <eric@anholt.net>
+Date:   Fri Oct 27 12:30:09 2006 -0700
+
+    Add more generated files to ignore.
+
+commit 8d18dfa21f8349c998675e1f9971de02ca99a1cd
+Author: Adam Jackson <ajax@benzedrine.nwnk.net>
+Date:   Fri Oct 13 16:32:28 2006 -0400
+
+    Bump to 1.0.3
+
+commit b54d069ea397486c6125943ffdb813482383576a
+Author: Qiu-Yuan (Kathleen) Yang <qiu-yuan.yang@sun.com>
+Date:   Fri Sep 1 18:04:26 2006 -0700
+
+    Sun bug #4962001: Close memory leaks seen in Motif apps
+    
+    The function "GetResources" will return a copy of resources to the caller
+    and the caller has the responsibility to free the returned copy.  However some
+    functions, such as "XtGetSubresources", "_XtGetResources", and
+    "XtGetApplicationResources" invoked "GetResources" without freeing the
+    returned resource copy.
+
+commit 6e48adfab0c020ab5d55b68f9b4cc63ed5d8b14c
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri Sep 1 17:59:42 2006 -0700
+
+    Add *~ to .gitignore to skip over emacs droppings
+
+commit 1eeeff85bf9f293de875169f6dc54577de0443f1
+Author: David Nusinow <dnusinow@debian.org>
+Date:   Wed Aug 30 16:33:10 2006 -0400
+
+    Generate the internal manpage section using __libmansuffix__
+
+commit e2f43888fe021aac27770afa6a64fb3cf3fab190
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Thu Jul 13 14:59:08 2006 -0700
+
+    renamed: .cvsignore -> .gitignore
+
+commit 3d3a1bc23f571daa7a876a21169d5a0c996ce7cc
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Fri May 12 16:10:27 2006 +0000
+
+    Bump to 1.0.2
+
+commit fc82234c73362d6f07acf2dcf72bcefd96850105
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Apr 30 14:30:16 2006 +0000
+
+    Fix ERRORDB definition for the case where ${prefix} != /usr
+
+commit bc813392aa8f563e6cd385636b90a7496fcaa14e
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Thu Apr 27 00:23:17 2006 +0000
+
+    Bump to 1.0.1
+
+commit 1c55684a7411c35fce2a958d84be4c13b5349ea0
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sun Feb 12 18:19:22 2006 +0000
+
+    Bug #5628 <https://bugs.freedesktop.org/show_bug.cgi?id=5628> Shadow pages
+        not created correctly when MANDIR & MANSUFFIX don't match.
+
+commit 6851a1faf46a4d8a85e481162c8ee84f66174f89
+Author: Kevin E Martin <kem@kem.org>
+Date:   Thu Dec 15 00:24:34 2005 +0000
+
+    Update package version number for final X11R7 release candidate.
+
+commit b9464aa563b650faefbb881d5b399659aa8c30bb
+Author: Kevin E Martin <kem@kem.org>
+Date:   Sat Dec 10 16:29:07 2005 +0000
+
+    Add configure option to install makestrs and its manpage.
+    Add makestrs man page.
+
+commit 6be3ca4fb0d0f9a1361d45dfc094f0a7a85b27b4
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Dec 7 16:17:08 2005 +0000
+
+    Add configure option to set the build's app-default dir, and put the result
+        in the xt.pc file for applications to use.
+
+commit 3186014010acbda9f8e3568a1e8076130212f600
+Author: Kevin E Martin <kem@kem.org>
+Date:   Tue Dec 6 22:48:44 2005 +0000
+
+    Change *man_SOURCES ==> *man_PRE to fix autotools warnings.
+
+commit 5801485b720e1dd3799737d9f127212afd3101c7
+Author: Kevin E Martin <kem@kem.org>
+Date:   Sat Dec 3 05:49:45 2005 +0000
+
+    Update package version number for X11R7 RC3 release.
+
+commit d480f9dbd3e07b4e139f2a1422f803e6e6264854
+Author: Kevin E Martin <kem@kem.org>
+Date:   Sat Dec 3 04:41:50 2005 +0000
+
+    Add check and cflags for malloc(0) returning NULL.
+
+commit 2a591fe7b3416d8609bd71cb068f9390105ffecf
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Mon Nov 28 22:03:06 2005 +0000
+
+    Change *mandir targets to use new *_MAN_DIR variables set by xorg-macros.m4
+        update to fix bug #5167 (Linux prefers *.1x man pages in man1 subdir)
+
+commit 7a8979367e4ab1a6412fef9a027b7d38621d87b7
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Wed Nov 23 22:33:07 2005 +0000
+
+    Bug #5003 <https://bugs.freedesktop.org/show_bug.cgi?id=5003> Patch #3763
+        <https://bugs.freedesktop.org/attachment.cgi?id=3763> Xorg code misuses
+        S_IF* macros
+
+commit 2533120c26185990d326fa14c92383f85239f3b7
+Author: Kevin E Martin <kem@kem.org>
+Date:   Sat Nov 19 07:15:43 2005 +0000
+
+    Update pkgconfig files to separate library build-time dependencies from
+        application build-time dependencies, and update package deps to work
+        with separate build roots.
+
+commit 3f332f9af360cd42f5ff1b6f16ac64f7d146ff34
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Nov 9 21:19:13 2005 +0000
+
+    Update package version number for X11R7 RC2 release.
+
+commit f151f6dfa14c36cfa54ab3e55bb67f24a8a39dc6
+Author: Kean Johnson <kean@armory.com>
+Date:   Tue Nov 8 06:33:25 2005 +0000
+
+    See ChangeLog entry 2005-11-07 for details.
+
+commit 7ed0ec3136190288b0c450cdf2998000c43619df
+Author: Kevin E Martin <kem@kem.org>
+Date:   Tue Nov 1 15:11:51 2005 +0000
+
+    Update pkgcheck dependencies to work with separate build roots.
+
+commit 33b861860b86b53840007010287f5483a503c8e9
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Oct 19 02:48:11 2005 +0000
+
+    Update package version number for RC1 release.
+
+commit d3853ab17d7203e7fbdfcd5cc8ed3505e5aa6233
+Author: Kevin E Martin <kem@kem.org>
+Date:   Tue Oct 18 07:24:03 2005 +0000
+
+    Use $(INSTALL) instead of $(install_sh_DATA) for creating directories.
+
+commit 831a32df90d6b3db66d6c578f6e231d4aab2b760
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Tue Oct 18 03:10:14 2005 +0000
+
+    Split the 'install -d' over multiple lines so certain lame versions of
+        autotools don't flip out.
+
+commit 5e37faddaac8ac50ee4ca719975f9bf526e4c980
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Tue Oct 18 01:50:02 2005 +0000
+
+    Add --with-xfile-search-path=<path> and default setting to match monolith
+        XFileSearchPathDefault in Imake (including extra directories used in
+        Debian section of linux.cf.)
+
+commit 52edad6913e3efd3fcec6c73e13d33bf8c3a5e65
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Tue Oct 18 00:00:09 2005 +0000
+
+    Use @LIB_MAN_SUFFIX@ instead of $(LIB_MAN_SUFFIX) in macro substitutions to
+        work better with BSD make
+
+commit 1fcb9d04dd8b2f78aff2d64e6db7588c973cdb5b
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Mon Oct 17 21:13:22 2005 +0000
+
+    Rename .shadows.DONE to shadows.DONE to avoid some make's thinking it's a
+        suffix rule (reported by Matthieu Herrb)
+
+commit 4423fc41efc97ad1559f281c2ce3c835ccc88c61
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Thu Oct 13 04:27:16 2005 +0000
+
+    Add generated man pages to .cvsignore file
+
+commit 3c676e51ca509fff616495ac7354ac8b4ecde7e4
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Wed Oct 12 00:22:32 2005 +0000
+
+    configure.ac Set up cpp pre-processing of man pages Add shadow man pages
+        for man pages that document multiple functions.
+
+commit 0543cf76a5e11133b5f76fa37b39cbe2985c1c75
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sat Sep 24 00:23:32 2005 +0000
+
+    Include <X11/XlibConf.h> to get correct XTHREADS settings in non-Imake
+        builds.
+
+commit 88374bab9adfe73dc445d4202a28e4d6021a674f
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Wed Sep 21 02:35:01 2005 +0000
+
+    Add checks for poll & snprintf & define old Imake names if found Enable XKB
+        usage in Xt unless --disable-xkb is specified Set STRINGSABIOPTIONS for
+        building StringDefs files on Solaris, SCO, and SVR4 systems.
+
+commit dbd0485a6e1926e7b94fdffb3e71de27c4a29012
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Mon Aug 1 23:59:39 2005 +0000
+
+    Properly define BUILT_FILES
+
+commit f4043547fbb2feb87f480388a695016b90f53279
+Author: Keith Packard <keithp@keithp.com>
+Date:   Mon Aug 1 23:47:55 2005 +0000
+
+    Move building of StringDefs files to src and fix them so that parallel make
+        works right.
+
+commit 027977140e19c5622331ac90eeb5e9bb9fe72640
+Author: Kevin E Martin <kem@kem.org>
+Date:   Fri Jul 29 21:22:52 2005 +0000
+
+    Various changes preparing packages for RC0:
+    - Verify and update package version numbers as needed
+    - Implement versioning scheme
+    - Change bug address to point to bugzilla bug entry form
+    - Disable loadable i18n in libX11 by default (use --enable-loadable-i18n to
+        reenable it)
+    - Fix makedepend to use pkgconfig and pass distcheck
+    - Update build script to build macros first
+    - Update modular Xorg version
+
+commit 28845cf017b991f7ed2dd23c005ab36ca43b97a5
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Fri Jul 22 20:30:10 2005 +0000
+
+    Bug #3824: <https://bugs.freedesktop.org/show_bug.cgi?id=3824> Correct
+        incomplete license statement from Sun.
+
+commit 052efe144da64f96fb1201a36933894d2d4bfb3c
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Tue Jul 19 02:00:01 2005 +0000
+
+    distcheck fixes -- clean up after makestrs, don't list non-existant files.
+
+commit e1cd82cf0b4d51db42c5d71a63805b6fb9ad45b8
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Jul 17 10:15:26 2005 +0000
+
+    Fix for building outside of srcdir.
+
+commit 40bf5c6a837430bf23f86b97fcde8237099511c0
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Sat Jul 16 07:37:19 2005 +0000
+
+    Set version number to 6.0.0 with -version-number.
+
+commit 265f56bafdca73f28a4937ebff86ac77a25f2d4b
+Author: Keith Packard <keithp@keithp.com>
+Date:   Sat Jul 9 06:49:50 2005 +0000
+
+    Add .cvsignore files
+
+commit 63a4f8f76f5fb9159447878a4a85a14d0fbf4bf6
+Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>
+Date:   Thu Jun 30 12:23:32 2005 +0000
+
+    Add -no-undefined to linker command to build shared library on cygwin too
+
+commit 64b2b98096c6a5b2ac3af59796e07601eee4e28a
+Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
+Date:   Mon Jun 20 21:47:20 2005 +0000
+
+    - Make Xt install its internal files in /usr/include/X11, both in the
+        modular and the monolithic tree.
+    - Update XTrap to use #include <X11/internal-xt-headerI.h>
+    - Add XvMC to symlink.sh
+
+commit 6e10d9886cfe518d1407331a7a8e5bac85390249
+Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>
+Date:   Fri Jun 10 12:19:31 2005 +0000
+
+    ensure $(buildir)/src and $(builddir)/include/X11 exist before installing
+        generated files there
+
+commit 1b5fb35a8db7bcf568a2318118068b6c01169c14
+Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>
+Date:   Tue May 24 16:06:12 2005 +0000
+
+    separation of source and build directories
+
+commit e6db93aff3a4e92b8d13998866a787bdc08b6f35
+Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>
+Date:   Tue May 24 15:58:51 2005 +0000
+
+    Make source directory for templates configurable
+
+commit 82f3473668ed08af059e094a696911d2347e5d57
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sun May 22 19:05:11 2005 +0000
+
+    Convert man pages to long file names in lib/X11, lib/Xt, & lib/Xext
+
+commit 1c6db5c90aa4b4c7c82b0676416c2a9a0baa6c67
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sun May 22 04:25:43 2005 +0000
+
+    Check for <alloca.h> and define INCLUDE_ALLOCA_H if found, since
+        <Xalloca.h> requires it.
+
+commit 2e00049e9b02e26f858c3e4510641a735c03b086
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sat May 21 20:47:26 2005 +0000
+
+    Use $(install_sh_DATA) instead of "install" for better portability. Remove
+        duplicate installation lines.
+    Add AM_CFLAGS to pass through XT_CFLAGS & X11_CFLAGS
+
+commit a175c9ea92967441a7ad33d2f6c8bf26cbe954fe
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Thu May 19 00:22:33 2005 +0000
+
+    revert last change, didn't do right thing at all, sorry for the noise
+
+commit 185284247a889358b2ea269424eb665a71079826
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Thu May 19 00:10:08 2005 +0000
+
+    Require automake 1.7 in AM_INIT_AUTOMAKE
+
+commit c7fe09644945e3725c0b67b84cd24d8475cea184
+Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
+Date:   Wed May 18 19:34:25 2005 +0000
+
+    Also include include/X11
+
+commit 605a76dcc93e277e1b26841a0225b7e0fb851b76
+Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
+Date:   Wed May 18 15:38:31 2005 +0000
+
+    - conditionally include config.h in xc/lib/Xt sources
+    - add build system for lib/Xt
+
+commit b0a241cf7c7ab3840929da3b1aabdda7bab22517
+Author: Egbert Eich <eich@suse.de>
+Date:   Tue May 17 08:10:10 2005 +0000
+
+    gcc4 allows to check if sentinels are correct (a sentinel is the
+        terminating element in a varargs list). A sentinel needs to be NULL,
+        not 0 - which doesn't make a difference on 32bit but matters on 64bit.
+        Furthermore it can be told that functions have a printf-like format
+        string and argument list so that they can verify that both match. To
+        use these features certain attributes need to be set - which are
+        compiler specific. To do this we define macros which are expanded
+        depending on the compiler version. For now we put those in
+        include/Xfuncproto.h (the XFree86 DDX layer contains a file compiler.h
+        which however is not visible outside the DDX) (Bugzilla #3268).
+
+commit 2b42b9154f9886ab05da1c3d6ce75fd95f59e04e
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sun May 15 20:52:39 2005 +0000
+
+    Add settings to bring Solaris builds closer to the ones Sun packages in
+        Solaris. Adds "BuildLikeSun" options for areas Sun deviates from the
+        way Xorg is packaged on other platforms. See comment in sun.cf for
+        details. Also, use system-provided Expat on Solaris 10 and other
+        cleanups.
+    Set shared library versions for Solaris builds to match versions used in
+        Solaris. Add missing SharedXfixesReqs and SharedXdamageReqs.
+    Add -solarisabi option to create XtStrings code compatibile with existing
+        Solaris binaries. (Off by default, on if "BuildLikeSun" is set in
+        sun.cf)
+
+commit 149898492fe56f6a096a875375faa7323f7e96f4
+Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>
+Date:   Wed Apr 20 09:35:50 2005 +0000
+
+    Bugzilla #3072 (https://bugs.freedesktop.org/show_bug.cgi?id=3072)
+        attachment #2469 (https://bugs.freedesktop.org/attachment.cgi?id=2469):
+        fix uninitialized pointer in libXt on Win32. Reported by Dave Williss
+
+commit 85eb751e4e1683af6cee3ee9dce29f74911a639d
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Mon Feb 21 21:08:27 2005 +0000
+
+    Convert lib/Xt to ANSI C (Thomas Dickey). Fixes for a few valgrind warnings
+        (Thomas Dickey).
+
+commit 94150cb72d9d641c64325cd70323d93b9a3701a5
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Wed Jan 19 19:27:34 2005 +0000
+
+    doc/man/Xt/Imakefile
+    doc/man/Xt/XtAddCbk.man
+    doc/man/Xt/XtAddIn.man
+    doc/man/Xt/XtAllocGC.man
+    doc/man/Xt/XtAppE.man
+    doc/man/Xt/XtAppEM.man
+    doc/man/Xt/XtAppSTC.man
+    doc/man/Xt/XtClass.man
+    doc/man/Xt/XtConvSt.man
+    doc/man/Xt/XtConvert.man
+    doc/man/Xt/XtCreateSR.man
+    doc/man/Xt/XtDisplayI.man
+    doc/man/Xt/XtErr.man
+    doc/man/Xt/XtErrM.man
+    doc/man/Xt/XtExtEvDis.man
+    doc/man/Xt/XtGEDB.man
+    doc/man/Xt/XtGetANC.man
+    doc/man/Xt/XtGetActK.man
+    doc/man/Xt/XtGetAres.man
+    doc/man/Xt/XtGetSTO.man
+    doc/man/Xt/XtGetSres.man
+    doc/man/Xt/XtInit.man
+    doc/man/Xt/XtInitWC.man
+    doc/man/Xt/XtManChild.man
+    doc/man/Xt/XtOffset.man
+    doc/man/Xt/XtOwnSel.man
+    doc/man/Xt/XtRegDraw.man
+    doc/man/Xt/XtResPA.man
+    doc/man/Xt/XtSession.man
+    doc/man/Xt/XtSetLangP.man
+    doc/man/Xt/XtSetSP.man
+    doc/man/Xt/XtSetVal.man
+    //bugs.freedesktop.org/show_bug.cgi?id=2331> Attachment #1718
+        <https://bugs.freedesktop.org/attachment.cgi?id=1718>
+
+commit cd85103c7298be4a13909c07c95f5d53b069966e
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Jan 2 11:08:49 2005 +0000
+
+    Fix formatting.
+
+commit 054445f4238a98b7ea7910778ed110f5eff9d4f2
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Oct 3 20:08:42 2004 +0000
+
+    Xt Manual pages fixes from Dmitry Bolkhovitanov (Bugzilla #1498, $1499).
+
+commit 045e3de107523f28e765da8239d6afa9f51d6ba2
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Aug 11 21:14:17 2004 +0000
+
+    Apply PPC64 build patch (Bug #303, Mike A. Harris, Alan Coopersmith).
+
+commit 7a541dcaa28b6f97a647d0d8e0873f665ea372aa
+Author: Eric Anholt <anholt@freebsd.org>
+Date:   Sat Jul 31 01:21:51 2004 +0000
+
+    Rename some COMPOSITE macros and enums to avoid conflicting with the
+        COMPOSITE extension's new macro. These appear to only be used
+        internally.
+
+commit b83924fa380f9e68c0c8a9dada6094c95fc44441
+Author: Egbert Eich <eich@suse.de>
+Date:   Fri Apr 23 18:43:54 2004 +0000
+
+    Merging XORG-CURRENT into trunk
+
+commit 1b4f95dee32054b4d14ed5f78e47371c544fc5ac
+Author: Egbert Eich <eich@suse.de>
+Date:   Sun Mar 14 08:32:26 2004 +0000
+
+    Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004
+
+commit 83e661ed1cec6b14c60adbd48ab8588f6b13c391
+Author: Egbert Eich <eich@suse.de>
+Date:   Wed Mar 3 12:11:32 2004 +0000
+
+    Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004
+
+commit 77d281253982e2ebe27430f38b993927d879a005
+Author: Egbert Eich <eich@suse.de>
+Date:   Thu Feb 26 13:35:34 2004 +0000
+
+    readding XFree86's cvs IDs
+
+commit 0efb2e616125953a3773b9b6c9a530ad30ce9bc8
+Author: Egbert Eich <eich@suse.de>
+Date:   Thu Feb 26 09:22:45 2004 +0000
+
+    Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004
+
+commit 036e955dfcc31d3b6c081f84e4f0b85969ccdd12
+Author: Egbert Eich <eich@suse.de>
+Date:   Thu Jan 29 08:08:07 2004 +0000
+
+    Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004
+
+commit f81d7ef72c9b4f13e33efa812bed9446657ed003
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Tue Nov 25 19:28:16 2003 +0000
+
+    XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks
+
+commit bdc0667ef29e24b1a2188b11546d843a7d3e5ef6
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Fri Nov 14 16:48:49 2003 +0000
+
+    XFree86 4.3.0.1
+
+commit 6a13c9e08bb042c81ae904c44a38a50d785c824e
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Fri Nov 14 16:48:49 2003 +0000
+
+    Initial revision
+
+commit 0117b0b441d8835a11a2886f3c8aed937dcffa9d
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Fri Nov 14 15:54:39 2003 +0000
+
+    R6.6 is the Xorg base-line
diff --git a/libXt/INSTALL b/libXt/INSTALL
new file mode 100644
index 000000000..54caf7c19
--- /dev/null
+++ b/libXt/INSTALL
@@ -0,0 +1,229 @@
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   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 only 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.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  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.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. 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.
+
+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=c89 CFLAGS=-O2 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 must use a version of `make' that
+supports the `VPATH' variable, such as 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 `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have 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.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' 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.
+
+   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'.
+
+Optional Features
+=================
+
+   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.
+
+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 `--target=TYPE' option 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
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--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.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/libXt/Makefile.am b/libXt/Makefile.am
new file mode 100644
index 000000000..1d96895f3
--- /dev/null
+++ b/libXt/Makefile.am
@@ -0,0 +1,36 @@
+# 
+#  Copyright © 2003 Keith Packard, Noah Levitt
+# 
+#  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 Keith Packard not be used in
+#  advertising or publicity pertaining to distribution of the software without
+#  specific, written prior permission.  Keith Packard makes no
+#  representations about the suitability of this software for any purpose.  It
+#  is provided "as is" without express or implied warranty.
+# 
+#  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+#  EVENT SHALL KEITH PACKARD 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.
+
+SUBDIRS = util src include man
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = xt.pc
+
+EXTRA_DIST = xt.pc.in ChangeLog
+MAINTAINERCLEANFILES=ChangeLog
+
+.PHONY: ChangeLog
+
+ChangeLog:
+	$(CHANGELOG_CMD)
+
+dist-hook: ChangeLog
+
diff --git a/libXt/Makefile.in b/libXt/Makefile.in
new file mode 100644
index 000000000..8f6b33f2b
--- /dev/null
+++ b/libXt/Makefile.in
@@ -0,0 +1,834 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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 © 2003 Keith Packard, Noah Levitt
+# 
+#  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 Keith Packard not be used in
+#  advertising or publicity pertaining to distribution of the software without
+#  specific, written prior permission.  Keith Packard makes no
+#  representations about the suitability of this software for any purpose.  It
+#  is provided "as is" without express or implied warranty.
+# 
+#  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+#  EVENT SHALL KEITH PACKARD 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.
+
+VPATH = @srcdir@
+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 = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/config.h.in $(srcdir)/xt.pc.in \
+	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+	compile config.guess config.sub depcomp install-sh ltmain.sh \
+	missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = xt.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
+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__installdirs = "$(DESTDIR)$(pkgconfigdir)"
+DATA = $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(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.bz2
+GZIP_ENV = --best
+distuninstallcheck_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@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CHANGELOG_CMD = @CHANGELOG_CMD@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CWARNFLAGS = @CWARNFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
+DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
+DSYMUTIL = @DSYMUTIL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FILE_MAN_DIR = @FILE_MAN_DIR@
+FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_MAN_DIR = @LIB_MAN_DIR@
+LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
+MISC_MAN_DIR = @MISC_MAN_DIR@
+MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
+MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+RAWCPP = @RAWCPP@
+RAWCPPFLAGS = @RAWCPPFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRINGSABIOPTIONS = @STRINGSABIOPTIONS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XFILESEARCHPATHDEFAULT = @XFILESEARCHPATHDEFAULT@
+XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
+XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
+XT_CFLAGS = @XT_CFLAGS@
+XT_LIBS = @XT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+appdefaultdir = @appdefaultdir@
+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@
+distcleancheck_listfiles = @distcleancheck_listfiles@
+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@
+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 = util src include man
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = xt.pc
+EXTRA_DIST = xt.pc.in ChangeLog
+MAINTAINERCLEANFILES = ChangeLog
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: 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__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+xt.pc: $(top_builddir)/config.status $(srcdir)/xt.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool config.lt
+install-pkgconfigDATA: $(pkgconfig_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	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)$(pkgconfigdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
+	done
+
+uninstall-pkgconfigDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+
+# 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.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; 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"
+
+$(RECURSIVE_CLEAN_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	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; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(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 \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    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 -777 -exec chmod a+rwx {} \; -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) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-lzma: distdir
+	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+	$(am__remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__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*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lzma*) \
+	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(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 \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(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__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:
+	@$(am__cd) '$(distuninstallcheck_dir)' \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { 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) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(pkgconfigdir)"; 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:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+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 clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+
+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 mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pkgconfigDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+	ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am am--refresh check check-am clean clean-generic \
+	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+	dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \
+	dist-zip distcheck distclean distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck 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-pkgconfigDATA install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am uninstall-pkgconfigDATA
+
+
+.PHONY: ChangeLog
+
+ChangeLog:
+	$(CHANGELOG_CMD)
+
+dist-hook: ChangeLog
+
+# 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:
diff --git a/libXt/NEWS b/libXt/NEWS
new file mode 100644
index 000000000..e69de29bb
diff --git a/libXt/README b/libXt/README
new file mode 100644
index 000000000..56773350f
--- /dev/null
+++ b/libXt/README
@@ -0,0 +1,58 @@
+libXt - X Toolkit Intrinsics library
+
+Documentation for this library can be found in the included man pages,
+the libXt spec from the doc/xorg-docs module, also available at:
+
+	http://xorg.freedesktop.org/releases/X11R7.0/doc/PDF/intrinsics.pdf
+
+and the O'Reilly X Toolkit books, which they have made freely available online:
+
+ - X Series Volume 4: X Toolkit Intrinsics Programming Manual, 
+	1st Edition (1990, covers X11R3)
+
+	http://www.archive.org/details/xtoolkitintrsin20400nyemiss
+
+ - X Series Volume 4: X Toolkit Intrinsics Programming Manual, 
+	2nd Edition (1990, covers X11R4)
+
+	http://www.archive.org/details/xtoolkitintrinsi04nyemiss
+
+ - X Series Volume 4: X Toolkit Intrinsics Programming Manual, 
+	Motif Edition (1990, covers X11R4/Motif 1.1)
+
+	http://www.archive.org/details/xtoolktintrmotif04nyemiss
+
+ - X Series Volume 4: X Toolkit Intrinsics Programming Manual, 
+	3rd Edition (1993, covers X11R5)
+
+	http://www.archive.org/details/xtoolkitintrinsic04nyemiss
+
+ - X Series Volume 5: X Toolkit Intrinsics Reference Manual 
+	(1990, covers X11R4)
+
+	http://www.archive.org/details/xtoolkitintrinsi04nyemiss
+
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+        http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+        git://anongit.freedesktop.org/git/xorg/lib/libXt
+
+        http://cgit.freedesktop.org/xorg/lib/libXt
+
+For patch submission instructions, see:
+
+	http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+        http://wiki.x.org/wiki/GitPage
+
diff --git a/libXt/acinclude.m4 b/libXt/acinclude.m4
new file mode 100644
index 000000000..b7501e8dd
--- /dev/null
+++ b/libXt/acinclude.m4
@@ -0,0 +1,46 @@
+# ===========================================================================
+#          http://www.nongnu.org/autoconf-archive/ax_define_dir.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
+#
+# DESCRIPTION
+#
+#   This macro sets VARNAME to the expansion of the DIR variable, taking
+#   care of fixing up ${prefix} and such.
+#
+#   VARNAME is then offered as both an output variable and a C preprocessor
+#   symbol.
+#
+#   Example:
+#
+#      AX_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
+#   Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2008 Alexandre Oliva
+#
+#   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.
+
+AU_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
+AC_DEFUN([AX_DEFINE_DIR], [
+  prefix_NONE=
+  exec_prefix_NONE=
+  test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+  test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
+dnl refers to ${prefix}.  Thus we have to use `eval' twice.
+  eval ax_define_dir="\"[$]$2\""
+  eval ax_define_dir="\"$ax_define_dir\""
+  AC_SUBST($1, "$ax_define_dir")
+  AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
+  test "$prefix_NONE" && prefix=NONE
+  test "$exec_prefix_NONE" && exec_prefix=NONE
+])
diff --git a/libXt/aclocal.m4 b/libXt/aclocal.m4
new file mode 100644
index 000000000..01b2f9b97
--- /dev/null
+++ b/libXt/aclocal.m4
@@ -0,0 +1,8438 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009  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_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
+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, 2003, 2005, 2006, 2007, 2008  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.11'
+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.11], [],
+      [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.11])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, 2003, 2005  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],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# 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.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$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])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# 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.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# 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.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# 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.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 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.
+
+# serial 16
+
+# 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.
+
+# 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.62])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],
+[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_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [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([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  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)],
+		  [define([AC_PROG_CC],
+			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl 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
+])
+
+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, 2003, 2005, 2008  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}" != 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, 2005  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.
+
+# serial 2
+
+# 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])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# 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.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  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.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# 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.
+
+# serial 6
+
+# 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 supports --run.
+# If it does, 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
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  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_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  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.
+
+# serial 4
+
+# _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, 1997, 2000, 2001, 2003, 2005, 2008
+# 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.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+   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
+   rm -f conftest.file
+   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
+
+   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)])
+
+# Copyright (C) 2009  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.
+
+# serial 1
+
+# 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],
+[  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')])
+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
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005  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, 2008  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.
+
+# serial 2
+
+# _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, 2005  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.
+
+# serial 2
+
+# _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.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+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 <conftest.tar])
+    grep GrepMe conftest.dir/file >/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 xorg-macros.m4.  Generated from xorg-macros.m4.in xorgversion.m4 by configure.
+dnl
+dnl Copyright 2005-2006 Sun Microsystems, Inc.  All rights reserved.
+dnl 
+dnl Permission is hereby granted, free of charge, to any person obtaining a
+dnl copy of this software and associated documentation files (the
+dnl "Software"), to deal in the Software without restriction, including
+dnl without limitation the rights to use, copy, modify, merge, publish,
+dnl distribute, and/or sell copies of the Software, and to permit persons
+dnl to whom the Software is furnished to do so, provided that the above
+dnl copyright notice(s) and this permission notice appear in all copies of
+dnl the Software and that both the above copyright notice(s) and this
+dnl permission notice appear in supporting documentation.
+dnl
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+dnl OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+dnl HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+dnl INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+dnl FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+dnl NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+dnl WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+dnl
+dnl Except as contained in this notice, the name of a copyright holder
+dnl shall not be used in advertising or otherwise to promote the sale, use
+dnl or other dealings in this Software without prior written authorization
+dnl of the copyright holder.
+
+# 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.3.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_PROGS(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([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([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
+		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)
+]) # 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
+
+AC_DEFUN([XORG_MANPAGE_SECTIONS],[
+AC_REQUIRE([AC_CANONICAL_HOST])
+
+if test x$APP_MAN_SUFFIX = x    ; then
+    APP_MAN_SUFFIX=1
+fi
+if test x$APP_MAN_DIR = x    ; then
+    APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)'
+fi
+
+if test x$LIB_MAN_SUFFIX = x    ; then
+    LIB_MAN_SUFFIX=3
+fi
+if test x$LIB_MAN_DIR = x    ; then
+    LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)'
+fi
+
+if test x$FILE_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	FILE_MAN_SUFFIX=4  ;;
+	*)		FILE_MAN_SUFFIX=5  ;;
+    esac
+fi
+if test x$FILE_MAN_DIR = x    ; then
+    FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)'
+fi
+
+if test x$MISC_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	MISC_MAN_SUFFIX=5  ;;
+	*)		MISC_MAN_SUFFIX=7  ;;
+    esac
+fi
+if test x$MISC_MAN_DIR = x    ; then
+    MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)'
+fi
+
+if test x$DRIVER_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	DRIVER_MAN_SUFFIX=7  ;;
+	*)		DRIVER_MAN_SUFFIX=4  ;;
+    esac
+fi
+if test x$DRIVER_MAN_DIR = x    ; then
+    DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)'
+fi
+
+if test x$ADMIN_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	ADMIN_MAN_SUFFIX=1m ;;
+	*)		ADMIN_MAN_SUFFIX=8  ;;
+    esac
+fi
+if test x$ADMIN_MAN_DIR = x    ; then
+    ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)'
+fi
+
+
+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_MANPAGE_SECTIONS
+
+# 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],[
+if test x$XORG_SGML_PATH = x ; then
+    XORG_SGML_PATH=$prefix/share/sgml
+fi
+HAVE_DEFS_ENT=
+
+if test x"$cross_compiling" = x"yes" ; then
+  HAVE_DEFS_ENT=no
+else
+  AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
+fi
+
+AC_PATH_PROG(LINUXDOC, linuxdoc)
+AC_PATH_PROG(PS2PDF, ps2pdf)
+
+AC_MSG_CHECKING([Whether to build documentation])
+
+if test x$HAVE_DEFS_ENT != 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$PS2PDF != x && 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"
+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],[
+if test x$XORG_SGML_PATH = x ; then
+    XORG_SGML_PATH=$prefix/share/sgml
+fi
+HAVE_DEFS_ENT=
+BUILDTXTDOC=no
+BUILDPDFDOC=no
+BUILDPSDOC=no
+BUILDHTMLDOC=no
+
+AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
+
+AC_PATH_PROG(DOCBOOKPS, docbook2ps)
+AC_PATH_PROG(DOCBOOKPDF, docbook2pdf)
+AC_PATH_PROG(DOCBOOKHTML, docbook2html)
+AC_PATH_PROG(DOCBOOKTXT, docbook2txt)
+
+AC_MSG_CHECKING([Whether to build text documentation])
+if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKTXT != x &&
+   test x$BUILD_TXTDOC != xno; then
+	BUILDTXTDOC=yes
+fi
+AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes])
+AC_MSG_RESULT([$BUILDTXTDOC])
+
+AC_MSG_CHECKING([Whether to build PDF documentation])
+if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKPDF != x &&
+   test x$BUILD_PDFDOC != xno; then
+	BUILDPDFDOC=yes
+fi
+AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes])
+AC_MSG_RESULT([$BUILDPDFDOC])
+
+AC_MSG_CHECKING([Whether to build PostScript documentation])
+if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKPS != x &&
+   test x$BUILD_PSDOC != xno; then
+	BUILDPSDOC=yes
+fi
+AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes])
+AC_MSG_RESULT([$BUILDPSDOC])
+
+AC_MSG_CHECKING([Whether to build HTML documentation])
+if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKHTML != x &&
+   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_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_RUN_IFELSE([
+char *malloc();
+char *realloc();
+char *calloc();
+main() {
+    char *m0, *r0, *c0, *p;
+    m0 = malloc(0);
+    p = malloc(10);
+    r0 = realloc(p,0);
+    c0 = calloc(0);
+    exit(m0 == 0 || r0 == 0 || c0 == 0 ? 0 : 1);
+}],
+		[MALLOC_ZERO_RETURNS_NULL=yes],
+		[MALLOC_ZERO_RETURNS_NULL=no])
+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
+#
+# Sets up flags for source checkers such as lint and sparse if --with-lint
+# is specified.   (Use --with-lint=sparse for sparse.)
+# Sets $LINT to name of source checker passed with --with-lint (default: lint)
+# Sets $LINT_FLAGS to flags to pass to source checker
+# Sets LINT automake conditional if enabled (default: disabled)
+#
+AC_DEFUN([XORG_WITH_LINT],[
+
+# Allow checking code with lint, sparse, etc.
+AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint],
+		[Use a lint-style source code checker (default: disabled)])],
+		[use_lint=$withval], [use_lint=no])
+if test "x$use_lint" = "xyes" ; then
+	LINT="lint"
+else
+	LINT="$use_lint"
+fi
+if test "x$LINT_FLAGS" = "x" -a "x$LINT" != "xno" ; then
+    case $LINT in
+	lint|*/lint)
+	    case $host_os in
+		solaris*)
+			LINT_FLAGS="-u -b -h -erroff=E_INDISTING_FROM_TRUNC2"
+			;;
+	    esac
+	    ;;
+    esac
+fi
+
+AC_SUBST(LINT)
+AC_SUBST(LINT_FLAGS)
+AM_CONDITIONAL(LINT, [test x$LINT != xno])
+
+]) # 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.
+# Disabled by default, enable with --enable-lint-library
+# Sets: 
+#	@LINTLIB@		- name of lint library file to make
+#	MAKE_LINT_LIB		- automake conditional
+#
+
+AC_DEFUN([XORG_LINT_LIBRARY],[
+AC_REQUIRE([XORG_WITH_LINT])
+# Build lint "library" for more indepth checks of programs calling this library
+AC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library],
+	[Create lint library (default: disabled)])],
+	[make_lint_lib=$enableval], [make_lint_lib=no])
+if test "x$make_lint_lib" != "xno" ; then
+	if test "x$LINT" = "xno" ; then
+		AC_MSG_ERROR([Cannot make lint library without --with-lint])
+	fi
+	if test "x$make_lint_lib" = "xyes" ; then
+		LINTLIB=llib-l$1.ln
+	else
+		LINTLIB=$make_lint_lib
+	fi
+fi
+AC_SUBST(LINTLIB)
+AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno])
+
+]) # XORG_LINT_LIBRARY
+
+# XORG_CWARNFLAGS
+# ---------------
+# Minimum version: 1.2.0
+#
+# Defines CWARNFLAGS to enable C compiler warnings.
+#
+AC_DEFUN([XORG_CWARNFLAGS], [
+AC_REQUIRE([AC_PROG_CC])
+if  test "x$GCC" = xyes ; then
+    CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
+-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
+-Wbad-function-cast"
+    case `$CC -dumpversion` in
+    3.4.* | 4.*)
+	CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
+	;;
+    esac
+else
+    AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
+    if test "x$SUNCC" = "xyes"; then
+	CWARNFLAGS="-v"
+    fi
+fi
+AC_SUBST(CWARNFLAGS)
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+]) # XORG_CWARNFLAGS
+
+# XORG_STRICT_OPTION
+# -----------------------
+# Minimum version: 1.3.0
+#
+# Add configure option to enable strict compilation
+AC_DEFUN([XORG_STRICT_OPTION], [
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_CC_C99])
+AC_REQUIRE([XORG_CWARNFLAGS])
+
+AC_ARG_ENABLE(strict-compilation,
+			  AS_HELP_STRING([--enable-strict-compilation],
+			  [Enable all warnings from compiler and make them errors (default: disabled)]),
+			  [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
+if test "x$STRICT_COMPILE" = "xyes"; then
+	AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
+	AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
+	if test "x$GCC" = xyes ; then
+		STRICT_CFLAGS="-pedantic -Werror"
+	elif test "x$SUNCC" = "xyes"; then
+		STRICT_CFLAGS="-errwarn"
+    elif test "x$INTELCC" = "xyes"; then
+		STRICT_CFLAGS="-Werror"
+	fi
+fi
+CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
+AC_SUBST([CWARNFLAGS])
+]) # XORG_STRICT_OPTION
+
+# XORG_DEFAULT_OPTIONS
+# --------------------
+# Minimum version: 1.3.0
+#
+# Defines default options for X.Org modules.
+#
+AC_DEFUN([XORG_DEFAULT_OPTIONS], [
+XORG_CWARNFLAGS
+XORG_STRICT_OPTION
+XORG_RELEASE_VERSION
+XORG_CHANGELOG
+XORG_MANPAGE_SECTIONS
+]) # XORG_DEFAULT_OPTIONS
+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
+# --------------------
+# Adds --with/without-release-string and changes the PACKAGE and
+# PACKAGE_TARNAME to use "$PACKAGE{_TARNAME}-$RELEASE_VERSION".  If
+# no option is given, PACKAGE and PACKAGE_TARNAME are unchanged.  Also
+# defines PACKAGE_VERSION_{MAJOR,MINOR,PATCHLEVEL} for modules to use.
+ 
+AC_DEFUN([XORG_RELEASE_VERSION],[
+	AC_ARG_WITH(release-version,
+			AS_HELP_STRING([--with-release-version=STRING],
+				[Use release version string in package name]),
+			[RELEASE_VERSION="$withval"],
+			[RELEASE_VERSION=""])
+	if test "x$RELEASE_VERSION" != "x"; then
+		PACKAGE="$PACKAGE-$RELEASE_VERSION"
+		PACKAGE_TARNAME="$PACKAGE_TARNAME-$RELEASE_VERSION"
+		AC_MSG_NOTICE([Building with package name set to $PACKAGE])
+	fi
+	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.
+#
+# Arrange that distcleancheck ignores ChangeLog left over by distclean.
+#
+AC_DEFUN([XORG_CHANGELOG], [
+CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \
+mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \
+echo 'git directory not found: installing possibly empty changelog.' >&2)"
+AC_SUBST([CHANGELOG_CMD])
+AC_SUBST([distcleancheck_listfiles], ['find . -type f ! -name ChangeLog -print'])
+]) # XORG_CHANGELOG
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 52 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+	         [m4_ifdef([AC_PROVIDE_$1],
+		           [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+	[AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+	     [define([LT_AC_PROG_GCJ],
+		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+_LT_REQUIRED_DARWIN_CHECKS
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# --------------------------
+# Check for some things on darwin
+AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+   # By default we will add the -single_module flag. You can override
+   # by either setting the environment variable LT_MULTI_MODULE
+   # non-empty at configure time, or by adding -multi_module to the
+   # link flags.
+   echo "int foo(void){return 1;}" > conftest.c
+   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+     -dynamiclib ${wl}-single_module conftest.c
+   if test -f libconftest.dylib; then
+     lt_cv_apple_cc_single_mod=yes
+     rm -rf libconftest.dylib*
+   fi
+   rm conftest.c
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+   [lt_cv_ld_exported_symbols_list=yes],
+   [lt_cv_ld_exported_symbols_list=no])
+   LDFLAGS="$save_LDFLAGS"
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[0123]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*)
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+   10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+   10.[[012]]*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+   10.*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil="~$DSYMUTIL \$lib || :"
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+[$]*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+       echo_test_string=`eval $cmd` &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "[$]0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *32-bit*)
+      case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_i386_fbsd"
+          ;;
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_x86_64_fbsd"
+          ;;
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $rm -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ 	]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	      new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	      lt_cv_sys_max_cmd_len=$new_result &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on massive
+      # amounts of additional arguments before passing them to the linker.
+      # It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+   ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+    	  lt_cv_dlopen_self_static, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         old_striplib="$STRIP -S"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+m4_if($1,[],[
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`echo $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) 
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec],
+[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"])
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec],
+[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"])
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  AC_LIBTOOL_LANG_CXX_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+	  AC_LIBTOOL_LANG_F77_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+	  AC_LIBTOOL_LANG_GCJ_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+	AC_LIBTOOL_LANG_RC_CONFIG
+	;;
+
+      *)
+	AC_MSG_ERROR([Unsupported tag name: $tagname])
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognize shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognize a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# it is assumed to be `libltdl'.  LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!).  If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# Report which library types will actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix[[4-9]]*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_LD
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  aix[[4-9]]*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+	;;
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    _LT_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[[012]]|aix4.[[012]].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  :
+	else
+	  # We have old collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	fi
+	;;
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	_LT_AC_SYS_LIBPATH_AIX
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	# Exported symbols can be pulled into shared objects from archives
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	# This is similar to how AIX traditionally builds its shared libraries.
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+      if test "$GXX" = yes ; then
+      output_verbose_link_cmd='echo'
+      _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+      _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+      _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+      fi
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
+          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  freebsd[[12]]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd* | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+      case $host_cpu in
+      hppa*64*|ia64*) ;;
+      *)
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case $host_cpu in
+    hppa*64*|ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      aCC*)
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case $host_cpu in
+	    hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  interix[[3-9]]*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+    # Instead, shared libraries are loaded at an image base (0x10000000 by
+    # default) and relocated if they conflict, which is a slow very memory
+    # consuming and fragmenting process.  To avoid this, we pick a random,
+    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+	;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  linux* | k*bsd*-gnu)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC* | pgcpp*)
+        # Portland Group C++ compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C++ 5.9
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+
+	  # Not sure whether something based on
+	  # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	  # would be better.
+	  output_verbose_link_cmd='echo'
+
+	  # Archives containing C++ object files must be created using
+	  # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	  # necessary to make sure instantiated templates are included
+	  # in the archive.
+	  _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	  ;;
+	esac
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  openbsd*)
+    if test -f /usr/libexec/ld.so; then
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      fi
+      output_verbose_link_cmd='echo'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+        _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	case $host_os in
+	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	  *)
+	    # The compiler driver will combine and reorder linker options,
+	    # but understands `-z linker_flag'.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	    ;;
+	esac
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+	output_verbose_link_cmd='echo'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	  case $host_os in
+	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	  *)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	    ;;
+	  esac
+	fi
+	;;
+    esac
+    ;;
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  sysv5* | sco3.2v5* | sco5v6*)
+    # Note: We can NOT use -z defs as we might desire, because we do not
+    # link with -lc, and that would cause any symbols used from libc to
+    # always be unresolved, which means just about no library would
+    # ever link correctly.  If we're not using GNU ld we use -z text
+    # though, which does catch some bad symbols but isn't as heavy-handed
+    # as -z defs.
+    # For security reasons, it is highly recommended that you always
+    # use absolute paths for naming shared libraries, and exclude the
+    # DT_RUNPATH tag from executables and libraries.  But doing so
+    # requires that you compile everything twice, which is a pain.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+  _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_AC_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_AC_TAGVAR(predep_objects,$1)=
+  _LT_AC_TAGVAR(postdep_objects,$1)=
+  _LT_AC_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+    #
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="\
+      program t
+      end
+"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix[[4-9]]*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars.  Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(fix_srcfile_path, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([LT_AC_PROG_SED])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux* | k*bsd*-gnu)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDGIRSTW]]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler.
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C 5.9
+	  _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  ;;
+	*Sun\ F*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  _LT_CC_BASENAME([$compiler])
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    interix[[3-9]]*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	*)
+	  tmp_sharedflag='-shared' ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  :
+	  else
+  	  # We have old collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 _LT_AC_SYS_LIBPATH_AIX
+	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi[[45]]*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
+         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	     _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	     ;;
+	   *)
+	     _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+        fi
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $rm conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+	pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+
+# Cheap backport of AS_EXECUTABLE_P and required macros
+# from Autoconf 2.59; we should not use $as_executable_p directly.
+
+# _AS_TEST_PREPARE
+# ----------------
+m4_ifndef([_AS_TEST_PREPARE],
+[m4_defun([_AS_TEST_PREPARE],
+[if test -x / >/dev/null 2>&1; then
+  as_executable_p='test -x'
+else
+  as_executable_p='test -f'
+fi
+])])# _AS_TEST_PREPARE
+
+# AS_EXECUTABLE_P
+# ---------------
+# Check whether a file is executable.
+m4_ifndef([AS_EXECUTABLE_P],
+[m4_defun([AS_EXECUTABLE_P],
+[AS_REQUIRE([_AS_TEST_PREPARE])dnl
+$as_executable_p $1[]dnl
+])])# AS_EXECUTABLE_P
+
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+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
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure 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_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+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`],
+		     [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+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
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# 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
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+        else 
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+	ifelse([$4], , [AC_MSG_ERROR(dnl
+[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
+])],
+		[AC_MSG_RESULT([no])
+                $4])
+elif test $pkg_failed = untried; then
+	ifelse([$4], , [AC_MSG_FAILURE(dnl
+[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 <http://pkg-config.freedesktop.org/>.])],
+		[$4])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+m4_include([acinclude.m4])
diff --git a/libXt/compile b/libXt/compile
new file mode 100644
index 000000000..ec64c6220
--- /dev/null
+++ b/libXt/compile
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
+# Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# 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 <http://www.gnu.org/licenses/>.
+
+# 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 file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+	# configure might choose to run compile as `compile cc -o foo foo.c'.
+	# So we strip `-o arg' only if arg is an object.
+	eat=1
+	case $2 in
+	  *.o | *.obj)
+	    ofile=$2
+	    ;;
+	  *)
+	    set x "$@" -o "$2"
+	    shift
+	    ;;
+	esac
+	;;
+      *.c)
+	cfile=$1
+	set x "$@" "$1"
+	shift
+	;;
+      *)
+	set x "$@" "$1"
+	shift
+	;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no `-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # `.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libXt/config.guess b/libXt/config.guess
new file mode 100644
index 000000000..f32079abd
--- /dev/null
+++ b/libXt/config.guess
@@ -0,0 +1,1526 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2008-01-23'
+
+# 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 2 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# 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.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -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 <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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
+
+trap 'exit 1' 1 2 15
+
+# 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.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { 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) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; 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 ; set_cc_for_build= ;'
+
+# 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) >/dev/null 2>&1 ; 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
+
+# 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 tupples: *-*-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".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-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.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		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
+	# 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/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	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.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    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.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    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'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    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)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # 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:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* 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; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		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
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[456])
+	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 [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    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 [ -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 [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              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 [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $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 __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	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; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    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*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    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:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    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/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    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/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:[3456]*)
+    	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    EM64T | authenticamd)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	else
+	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` 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 ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^LIBC/{
+		s: ::g
+		p
+	    }'`"
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    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.
+	echo i386-sequent-sysv4
+	exit ;;
+    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.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    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
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/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
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    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 i386.
+	echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    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; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *: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
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#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 <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#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 <sys/param.h>
+#  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
+    printf ("vax-dec-ultrix\n"); exit (0);
+# 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; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+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`
+/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
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/libXt/config.h.in b/libXt/config.h.in
new file mode 100644
index 000000000..2fc42d747
--- /dev/null
+++ b/libXt/config.h.in
@@ -0,0 +1,85 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
+#undef HAVE_LIBWS2_32
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if Xalloca.h should include <alloca.h> */
+#undef INCLUDE_ALLOCA_H
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Major version of this package */
+#undef PACKAGE_VERSION_MAJOR
+
+/* Minor version of this package */
+#undef PACKAGE_VERSION_MINOR
+
+/* Patch version of this package */
+#undef PACKAGE_VERSION_PATCHLEVEL
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you have the "poll" function. */
+#undef USE_POLL
+
+/* Define to 1 if you have the "snprintf" function. */
+#undef USE_SNPRINTF
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 to use XKB for keysym resolution. */
+#undef XKB
+
+/* app default data directory */
+#undef appdefaultdir
diff --git a/libXt/config.sub b/libXt/config.sub
new file mode 100644
index 000000000..6759825a5
--- /dev/null
+++ b/libXt/config.sub
@@ -0,0 +1,1658 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   Free Software Foundation, Inc.
+
+timestamp='2008-01-16'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# 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 2 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# 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.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# 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.
+
+# 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.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -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 <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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"
+       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
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -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)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tile*)
+		basic_machine=tile-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# 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)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+        score-*)
+		os=-elf
+		;;
+        spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        c4x-* | tic4x-*)
+        	os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+        mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-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
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				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
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/libXt/configure b/libXt/configure
new file mode 100644
index 000000000..b589a369b
--- /dev/null
+++ b/libXt/configure
@@ -0,0 +1,23214 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63 for libXt 1.0.7.
+#
+# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 -n "${ZSH_VERSION+set}" && (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 `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# 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_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; 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
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  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
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+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
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&	 (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	   done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+	 # Try only shells that exist, to save several forks.
+	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		{ ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (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 `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+	       as_have_required=yes
+	       if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (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 `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+	done
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell bug-autoconf@gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      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" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # 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
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+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 -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+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=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+       echo_test_string=`eval $cmd` &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, 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=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='libXt'
+PACKAGE_TARNAME='libXt'
+PACKAGE_VERSION='1.0.7'
+PACKAGE_STRING='libXt 1.0.7'
+PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+XTMALLOC_ZERO_CFLAGS
+XMALLOC_ZERO_CFLAGS
+MALLOC_ZERO_CFLAGS
+RAWCPPFLAGS
+RAWCPP
+STRINGSABIOPTIONS
+appdefaultdir
+XFILESEARCHPATHDEFAULT
+INSTALL_MAKESTRS_FALSE
+INSTALL_MAKESTRS_TRUE
+XT_LIBS
+XT_CFLAGS
+PKG_CONFIG
+LDFLAGS_FOR_BUILD
+CFLAGS_FOR_BUILD
+CC_FOR_BUILD
+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
+distcleancheck_listfiles
+CHANGELOG_CMD
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+CWARNFLAGS
+LIBTOOL
+ac_ct_F77
+FFLAGS
+F77
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+CPP
+NMEDIT
+DSYMUTIL
+RANLIB
+AR
+ECHO
+LN_S
+EGREP
+GREP
+SED
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+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
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_dependency_tracking
+enable_shared
+enable_static
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+with_pic
+with_tags
+enable_silent_rules
+enable_strict_compilation
+with_release_version
+enable_xkb
+enable_install_makestrs
+with_xfile_search_path
+with_appdefaultdir
+enable_malloc0returnsnull
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+CXX
+CXXFLAGS
+CCC
+CXXCPP
+F77
+FFLAGS
+PKG_CONFIG
+XT_CFLAGS
+XT_LIBS'
+
+
+# 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'
+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=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$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 ;;
+
+  -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_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$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_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$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_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$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_echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $as_echo "$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
+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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+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
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  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_echo "$as_me: error: working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# 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 ||
+$as_echo 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_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+	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 libXt 1.0.7 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]
+  --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/libXt]
+  --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 libXt 1.0.7:";;
+   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-maintainer-mode  enable make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')
+  --enable-strict-compilation
+                          Enable all warnings from compiler and make them
+                          errors (default: disabled)
+  --disable-xkb           Disable XKB support
+  --disable-install-makestrs
+                          Disable installing makestrs
+  --enable-malloc0returnsnull
+                          malloc(0) returns NULL (default: auto)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]      include additional configurations [automatic]
+  --with-release-version=STRING
+                          Use release version string in package name
+  --with-xfile-search-path=<path>
+                          Set path to search for app-defaults and other files
+  --with-appdefaultdir=<path>
+                          Set app-default directory (default:
+                          ${datadir}/X11/app-defaults)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  PKG_CONFIG  path to pkg-config utility
+  XT_CFLAGS   C compiler flags for XT, overriding pkg-config
+  XT_LIBS     linker flags for XT, overriding pkg-config
+
+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 <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
+_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=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$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 guested configure.
+    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
+      $as_echo "$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
+libXt configure 1.0.7
+generated by GNU Autoconf 2.63
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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
+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 libXt $as_me 1.0.7, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  $ $0 $@
+
+_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
+  test -z "$as_dir" && as_dir=.
+  $as_echo "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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$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
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    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_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$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= ;; #(
+      *) $as_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
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$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'; { (exit 1); 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
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  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.
+  if test -f "$cache_file"; then
+    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+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,)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$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
+	  { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+$as_echo "$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=`$as_echo "$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.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+   { (exit 1); exit 1; }; }
+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.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# 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.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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
+
+fi
+  if test "${ac_cv_path_install+set}" = set; 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
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$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'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
+$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
+$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
+   { (exit 1); exit 1; }; };;
+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 (
+   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
+   rm -f conftest.file
+   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_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+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=`$as_echo "$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
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != 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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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"
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     '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
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P 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.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "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
+
+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_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+  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='libXt'
+ VERSION='1.0.7'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# 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"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# Require xorg-macros: XORG_DEFAULT_OPTIONS
+
+
+
+
+
+
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+# Check for progs
+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
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+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
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+# Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+   { (exit 1); exit 1; }; };;
+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
+
+
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+   { (exit 1); exit 1; }; };;
+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
+
+
+{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${lt_cv_path_SED+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+
+{ $as_echo "$as_me:$LINENO: result: $SED" >&5
+$as_echo "$SED" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_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$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_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_GREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_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$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_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_EGREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+$as_echo_n "checking for BSD-compatible nm... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+NM="$lt_cv_path_NM"
+
+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 4571 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.o` in
+    *32-bit*)
+      case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_i386_fbsd"
+          ;;
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_x86_64_fbsd"
+          ;;
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  lt_cv_cc_needs_belf=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	lt_cv_cc_needs_belf=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+     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
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+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
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+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
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ---------------------------------------------------------------------- ##
+## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg ##
+## ---------------------------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+		 $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:$LINENO: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CXXFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { $as_echo "$as_me:$LINENO: result: $F77" >&5
+$as_echo "$F77" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+$as_echo "$ac_ct_F77" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+$as_echo "$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+$as_echo_n "checking whether $F77 accepts -g... " >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_f77_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_prog_f77_g=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+$as_echo "$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+if test $ac_compiler_gnu = yes; then
+  G77=yes
+else
+  G77=
+fi
+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
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ 	]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	      new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	      lt_cv_sys_max_cmd_len=$new_result &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on massive
+      # amounts of additional arguments before passing them to the linker.
+      # It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: none" >&5
+$as_echo "none" >&6; }
+fi
+
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux* | k*bsd*-gnu)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDGIRSTW]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:$LINENO: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:$LINENO: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:$LINENO: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+
+    { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+   # By default we will add the -single_module flag. You can override
+   # by either setting the environment variable LT_MULTI_MODULE
+   # non-empty at configure time, or by adding -multi_module to the
+   # link flags.
+   echo "int foo(void){return 1;}" > conftest.c
+   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+     -dynamiclib ${wl}-single_module conftest.c
+   if test -f libconftest.dylib; then
+     lt_cv_apple_cc_single_mod=yes
+     rm -rf libconftest.dylib*
+   fi
+   rm conftest.c
+      fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  lt_cv_ld_exported_symbols_list=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	lt_cv_ld_exported_symbols_list=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[0123])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*)
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+   10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+   10.[012]*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+   10.*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil="~$DSYMUTIL \$lib || :"
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+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
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm -r conftest*
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:7675: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:7679: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic='-qnocommon'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+	*Sun\ F*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:7965: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:7969: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:8069: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:8073: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	*)
+	  tmp_sharedflag='-shared' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  :
+	  else
+  	  # We have old collect2
+  	  hardcode_direct=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L=yes
+  	  hardcode_libdir_flag_spec='-L$libdir'
+  	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec='$convenience'
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc=no
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec=''
+      link_all_deplibs=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
+         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	hardcode_direct=yes
+	export_dynamic_flag_spec='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+        fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+      $rm conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+	pic_flag=$lt_prog_compiler_pic
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc=no
+        else
+	  archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+$as_echo "$archive_cmds_need_lc" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`echo $lt_search_path_spec`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var" || \
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         old_striplib="$STRIP -S"
+         { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+       ;;
+   *)
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    { $as_echo "$as_me:$LINENO: checking for shl_load" >&5
+$as_echo_n "checking for shl_load... " >&6; }
+if test "${ac_cv_func_shl_load+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_shl_load || defined __stub___shl_load
+choke me
+#endif
+
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_shl_load=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+$as_echo "$ac_cv_func_shl_load" >&6; }
+if test "x$ac_cv_func_shl_load" = x""yes; then
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_shl_load=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  { $as_echo "$as_me:$LINENO: checking for dlopen" >&5
+$as_echo_n "checking for dlopen... " >&6; }
+if test "${ac_cv_func_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_dlopen || defined __stub___dlopen
+choke me
+#endif
+
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_dlopen=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+$as_echo "$ac_cv_func_dlopen" >&6; }
+if test "x$ac_cv_func_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_svld_dlopen=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_dld_link=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 10469 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 10569 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which library types will actually be built
+{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix[4-9]*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    compiler_lib_search_dirs \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    fix_srcfile_path \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { $as_echo "$as_me:$LINENO: creating $ofile" >&5
+$as_echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags was given.
+if test "${with_tags+set}" = set; then
+  withval=$with_tags; tagnames="$withval"
+fi
+
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+$as_echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+$as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+compiler_lib_search_dirs_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix[4-9]*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+	;;
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  :
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	fi
+	;;
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	no_undefined_flag_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX='$convenience'
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds its shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag_CXX=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+    ;;
+
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+      archive_cmds_need_lc_CXX=no
+      hardcode_direct_CXX=no
+      hardcode_automatic_CXX=yes
+      hardcode_shlibpath_var_CXX=unsupported
+      whole_archive_flag_spec_CXX=''
+      link_all_deplibs_CXX=yes
+      allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+      if test "$GXX" = yes ; then
+      output_verbose_link_cmd='echo'
+      archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+      module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+      module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+        archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+        archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+      fi
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
+          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_CXX=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC*)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_CXX=:
+
+      case $host_cpu in
+      hppa*64*|ia64*) ;;
+      *)
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case $host_cpu in
+    hppa*64*|ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      aCC*)
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case $host_cpu in
+	    hppa*64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  interix[3-9]*)
+    hardcode_direct_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+    # Instead, shared libraries are loaded at an image base (0x10000000 by
+    # default) and relocated if they conflict, which is a slow very memory
+    # consuming and fragmenting process.  To avoid this, we pick a random,
+    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+    archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux* | k*bsd*-gnu)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	archive_cmds_need_lc_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC* | pgcpp*)
+        # Portland Group C++ compiler
+	archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C++ 5.9
+	  no_undefined_flag_CXX=' -zdefs'
+	  archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+
+	  # Not sure whether something based on
+	  # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	  # would be better.
+	  output_verbose_link_cmd='echo'
+
+	  # Archives containing C++ object files must be created using
+	  # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	  # necessary to make sure instantiated templates are included
+	  # in the archive.
+	  old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	  ;;
+	esac
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    ld_shlibs_CXX=no
+    ;;
+  openbsd*)
+    if test -f /usr/libexec/ld.so; then
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	export_dynamic_flag_spec_CXX='${wl}-E'
+	whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      fi
+      output_verbose_link_cmd='echo'
+    else
+      ld_shlibs_CXX=no
+    fi
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+        archive_cmds_need_lc_CXX=yes
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The compiler driver will combine and reorder linker options,
+	    # but understands `-z linker_flag'.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=yes
+
+	output_verbose_link_cmd='echo'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	  case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	    ;;
+	  esac
+	fi
+	;;
+    esac
+    ;;
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+    no_undefined_flag_CXX='${wl}-z,text'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  sysv5* | sco3.2v5* | sco5v6*)
+    # Note: We can NOT use -z defs as we might desire, because we do not
+    # link with -lc, and that would cause any symbols used from libc to
+    # always be unresolved, which means just about no library would
+    # ever link correctly.  If we're not using GNU ld we use -z text
+    # though, which does catch some bad symbols but isn't as heavy-handed
+    # as -z defs.
+    # For security reasons, it is highly recommended that you always
+    # use absolute paths for naming shared libraries, and exclude the
+    # DT_RUNPATH tag from executables and libraries.  But doing so
+    # requires that you compile everything twice, which is a pain.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    no_undefined_flag_CXX='${wl}-z,text'
+    allow_undefined_flag_CXX='${wl}-z,nodefs'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+    export_dynamic_flag_spec_CXX='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+compiler_lib_search_dirs_CXX=
+if test -n "$compiler_lib_search_path_CXX"; then
+  compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+    #
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           lt_prog_compiler_pic_CXX='-qnocommon'
+           lt_prog_compiler_wl_CXX='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:12978: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:12982: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $rm -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:13082: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:13086: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+      $rm conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+	pic_flag=$lt_prog_compiler_pic_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+$as_echo "$archive_cmds_need_lc_CXX" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var_CXX" || \
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    compiler_lib_search_dirs_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    fix_srcfile_path_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+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
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="\
+      program t
+      end
+"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix[4-9]*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-fpic'
+	lt_prog_compiler_static_F77='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic_F77='-KPIC'
+	  lt_prog_compiler_static_F77='-Bstatic'
+	  lt_prog_compiler_wl_F77='-Wl,'
+	  ;;
+	*Sun\ F*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic_F77='-KPIC'
+	  lt_prog_compiler_static_F77='-Bstatic'
+	  lt_prog_compiler_wl_F77=''
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+$as_echo "$lt_prog_compiler_pic_F77" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14665: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:14669: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_F77=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_F77=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_F77=yes
+     fi
+   fi
+   $rm -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
+    :
+else
+    lt_prog_compiler_static_F77=
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14769: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:14773: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_F77='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	*)
+	  tmp_sharedflag='-shared' ;;
+	esac
+	archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_F77=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_F77=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  :
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77='$convenience'
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	hardcode_direct_F77=yes
+	export_dynamic_flag_spec_F77='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_F77=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	*)
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct_F77=yes
+	hardcode_shlibpath_var_F77=no
+	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec_F77='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec_F77='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+        fi
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_F77='${wl}-z,text'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_F77='${wl}-z,text'
+      allow_undefined_flag_F77='${wl}-z,nodefs'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+$as_echo "$ld_shlibs_F77" >&6; }
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+      $rm conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+	pic_flag=$lt_prog_compiler_pic_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+$as_echo "$archive_cmds_need_lc_F77" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var_F77" || \
+   test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+$as_echo "$hardcode_action_F77" >&6; }
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    compiler_lib_search_dirs_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    fix_srcfile_path_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16984: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16988: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_GCJ='-qnocommon'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | cygwin* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-fpic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic_GCJ='-KPIC'
+	  lt_prog_compiler_static_GCJ='-Bstatic'
+	  lt_prog_compiler_wl_GCJ='-Wl,'
+	  ;;
+	*Sun\ F*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic_GCJ='-KPIC'
+	  lt_prog_compiler_static_GCJ='-Bstatic'
+	  lt_prog_compiler_wl_GCJ=''
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+$as_echo "$lt_prog_compiler_pic_GCJ" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17274: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:17278: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_GCJ=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_GCJ=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_GCJ=yes
+     fi
+   fi
+   $rm -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then
+    :
+else
+    lt_prog_compiler_static_GCJ=
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17378: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:17382: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:$LINENO: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	*)
+	  tmp_sharedflag='-shared' ;;
+	esac
+	archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_GCJ=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_GCJ=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  :
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ='$convenience'
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_GCJ=no
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ=''
+      link_all_deplibs_GCJ=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
+         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_GCJ=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	hardcode_direct_GCJ=yes
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_GCJ=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	*)
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct_GCJ=yes
+	hardcode_shlibpath_var_GCJ=no
+	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+        fi
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_GCJ='${wl}-z,text'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_GCJ='${wl}-z,text'
+      allow_undefined_flag_GCJ='${wl}-z,nodefs'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+$as_echo "$ld_shlibs_GCJ" >&6; }
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+      $rm conftest*
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+	pic_flag=$lt_prog_compiler_pic_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+$as_echo "$archive_cmds_need_lc_GCJ" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+{ $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+$as_echo "$hardcode_action_GCJ" >&6; }
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    compiler_lib_search_dirs_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    fix_srcfile_path_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    compiler_lib_search_dirs_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    fix_srcfile_path_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+$as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+$as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+   test -f conftest2.$ac_objext && { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 test -f conftest2.$ac_objext && { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); };
+      then
+	# cc works too.
+	:
+      else
+	# cc exists but doesn't like -o.
+	eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_MINUS_C_MINUS_O 1
+_ACEOF
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+
+
+   { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if test "${ac_cv_prog_cc_c99+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+	{
+	case 's': // string
+	  str = va_arg (args_copy, const char *);
+	  break;
+	case 'd': // int
+	  number = va_arg (args_copy, int);
+	  break;
+	case 'f': // float
+	  fnumber = va_arg (args_copy, double);
+	  break;
+	default:
+	  break;
+	}
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+	  || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c99=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+
+
+
+
+
+
+if  test "x$GCC" = xyes ; then
+    CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
+-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
+-Wbad-function-cast"
+    case `$CC -dumpversion` in
+    3.4.* | 4.*)
+	CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
+	;;
+    esac
+else
+    { $as_echo "$as_me:$LINENO: checking whether __SUNPRO_C is declared" >&5
+$as_echo_n "checking whether __SUNPRO_C is declared... " >&6; }
+if test "${ac_cv_have_decl___SUNPRO_C+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef __SUNPRO_C
+  (void) __SUNPRO_C;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl___SUNPRO_C=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_decl___SUNPRO_C=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___SUNPRO_C" >&5
+$as_echo "$ac_cv_have_decl___SUNPRO_C" >&6; }
+if test "x$ac_cv_have_decl___SUNPRO_C" = x""yes; then
+  SUNCC="yes"
+else
+  SUNCC="no"
+fi
+
+    if test "x$SUNCC" = "xyes"; then
+	CWARNFLAGS="-v"
+    fi
+fi
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; 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_BACKSLASH='\'
+
+
+
+
+
+
+
+# Check whether --enable-strict-compilation was given.
+if test "${enable_strict_compilation+set}" = set; then
+  enableval=$enable_strict_compilation; STRICT_COMPILE=$enableval
+else
+  STRICT_COMPILE=no
+fi
+
+if test "x$STRICT_COMPILE" = "xyes"; then
+	{ $as_echo "$as_me:$LINENO: checking whether __SUNPRO_C is declared" >&5
+$as_echo_n "checking whether __SUNPRO_C is declared... " >&6; }
+if test "${ac_cv_have_decl___SUNPRO_C+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef __SUNPRO_C
+  (void) __SUNPRO_C;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl___SUNPRO_C=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_decl___SUNPRO_C=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___SUNPRO_C" >&5
+$as_echo "$ac_cv_have_decl___SUNPRO_C" >&6; }
+if test "x$ac_cv_have_decl___SUNPRO_C" = x""yes; then
+  SUNCC="yes"
+else
+  SUNCC="no"
+fi
+
+	{ $as_echo "$as_me:$LINENO: checking whether __INTEL_COMPILER is declared" >&5
+$as_echo_n "checking whether __INTEL_COMPILER is declared... " >&6; }
+if test "${ac_cv_have_decl___INTEL_COMPILER+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef __INTEL_COMPILER
+  (void) __INTEL_COMPILER;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl___INTEL_COMPILER=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_decl___INTEL_COMPILER=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___INTEL_COMPILER" >&5
+$as_echo "$ac_cv_have_decl___INTEL_COMPILER" >&6; }
+if test "x$ac_cv_have_decl___INTEL_COMPILER" = x""yes; then
+  INTELCC="yes"
+else
+  INTELCC="no"
+fi
+
+	if test "x$GCC" = xyes ; then
+		STRICT_CFLAGS="-pedantic -Werror"
+	elif test "x$SUNCC" = "xyes"; then
+		STRICT_CFLAGS="-errwarn"
+    elif test "x$INTELCC" = "xyes"; then
+		STRICT_CFLAGS="-Werror"
+	fi
+fi
+CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
+
+
+
+
+# Check whether --with-release-version was given.
+if test "${with_release_version+set}" = set; then
+  withval=$with_release_version; RELEASE_VERSION="$withval"
+else
+  RELEASE_VERSION=""
+fi
+
+	if test "x$RELEASE_VERSION" != "x"; then
+		PACKAGE="$PACKAGE-$RELEASE_VERSION"
+		PACKAGE_TARNAME="$PACKAGE_TARNAME-$RELEASE_VERSION"
+		{ $as_echo "$as_me:$LINENO: Building with package name set to $PACKAGE" >&5
+$as_echo "$as_me: Building with package name set to $PACKAGE" >&6;}
+	fi
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1`
+_ACEOF
+
+	PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1`
+	if test "x$PVM" = "x"; then
+		PVM="0"
+	fi
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION_MINOR $PVM
+_ACEOF
+
+	PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1`
+	if test "x$PVP" = "x"; then
+		PVP="0"
+	fi
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION_PATCHLEVEL $PVP
+_ACEOF
+
+
+
+CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \
+mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \
+echo 'git directory not found: installing possibly empty changelog.' >&2)"
+
+distcleancheck_listfiles='find . -type f ! -name ChangeLog -print'
+
+
+
+
+
+if test x$APP_MAN_SUFFIX = x    ; then
+    APP_MAN_SUFFIX=1
+fi
+if test x$APP_MAN_DIR = x    ; then
+    APP_MAN_DIR='$(mandir)/man$(APP_MAN_SUFFIX)'
+fi
+
+if test x$LIB_MAN_SUFFIX = x    ; then
+    LIB_MAN_SUFFIX=3
+fi
+if test x$LIB_MAN_DIR = x    ; then
+    LIB_MAN_DIR='$(mandir)/man$(LIB_MAN_SUFFIX)'
+fi
+
+if test x$FILE_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	FILE_MAN_SUFFIX=4  ;;
+	*)		FILE_MAN_SUFFIX=5  ;;
+    esac
+fi
+if test x$FILE_MAN_DIR = x    ; then
+    FILE_MAN_DIR='$(mandir)/man$(FILE_MAN_SUFFIX)'
+fi
+
+if test x$MISC_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	MISC_MAN_SUFFIX=5  ;;
+	*)		MISC_MAN_SUFFIX=7  ;;
+    esac
+fi
+if test x$MISC_MAN_DIR = x    ; then
+    MISC_MAN_DIR='$(mandir)/man$(MISC_MAN_SUFFIX)'
+fi
+
+if test x$DRIVER_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	DRIVER_MAN_SUFFIX=7  ;;
+	*)		DRIVER_MAN_SUFFIX=4  ;;
+    esac
+fi
+if test x$DRIVER_MAN_DIR = x    ; then
+    DRIVER_MAN_DIR='$(mandir)/man$(DRIVER_MAN_SUFFIX)'
+fi
+
+if test x$ADMIN_MAN_SUFFIX = x    ; then
+    case $host_os in
+	solaris*)	ADMIN_MAN_SUFFIX=1m ;;
+	*)		ADMIN_MAN_SUFFIX=8  ;;
+    esac
+fi
+if test x$ADMIN_MAN_DIR = x    ; then
+    ADMIN_MAN_DIR='$(mandir)/man$(ADMIN_MAN_SUFFIX)'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test x"$CC_FOR_BUILD" = x; then
+	if test x"$cross_compiling" = xyes; then
+		for ac_prog in gcc cc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC_FOR_BUILD+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC_FOR_BUILD"; then
+  ac_cv_prog_CC_FOR_BUILD="$CC_FOR_BUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC_FOR_BUILD="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC_FOR_BUILD=$ac_cv_prog_CC_FOR_BUILD
+if test -n "$CC_FOR_BUILD"; then
+  { $as_echo "$as_me:$LINENO: result: $CC_FOR_BUILD" >&5
+$as_echo "$CC_FOR_BUILD" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CC_FOR_BUILD" && break
+done
+
+	else
+	        CC_FOR_BUILD="$CC"
+	fi
+fi
+
+CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
+
+LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+
+
+
+
+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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "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
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  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
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$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
+	{ $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for XT" >&5
+$as_echo_n "checking for XT... " >&6; }
+
+if test -n "$XT_CFLAGS"; then
+    pkg_cv_XT_CFLAGS="$XT_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sm ice x11 xproto kbproto\"") >&5
+  ($PKG_CONFIG --exists --print-errors "sm ice x11 xproto kbproto") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_XT_CFLAGS=`$PKG_CONFIG --cflags "sm ice x11 xproto kbproto" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$XT_LIBS"; then
+    pkg_cv_XT_LIBS="$XT_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sm ice x11 xproto kbproto\"") >&5
+  ($PKG_CONFIG --exists --print-errors "sm ice x11 xproto kbproto") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_XT_LIBS=`$PKG_CONFIG --libs "sm ice x11 xproto kbproto" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        XT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "sm ice x11 xproto kbproto" 2>&1`
+        else
+	        XT_PKG_ERRORS=`$PKG_CONFIG --print-errors "sm ice x11 xproto kbproto" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$XT_PKG_ERRORS" >&5
+
+	{ { $as_echo "$as_me:$LINENO: error: Package requirements (sm ice x11 xproto kbproto) were not met:
+
+$XT_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables XT_CFLAGS
+and XT_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+$as_echo "$as_me: error: Package requirements (sm ice x11 xproto kbproto) were not met:
+
+$XT_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables XT_CFLAGS
+and XT_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: 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.
+
+Alternatively, you may set the environment variables XT_CFLAGS
+and XT_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: 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.
+
+Alternatively, you may set the environment variables XT_CFLAGS
+and XT_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+else
+	XT_CFLAGS=$pkg_cv_XT_CFLAGS
+	XT_LIBS=$pkg_cv_XT_LIBS
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	:
+fi
+
+# Needed for including Xalloca.h
+if test "${ac_cv_header_alloca_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for alloca.h" >&5
+$as_echo_n "checking for alloca.h... " >&6; }
+if test "${ac_cv_header_alloca_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_alloca_h" >&5
+$as_echo "$ac_cv_header_alloca_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking alloca.h usability" >&5
+$as_echo_n "checking alloca.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <alloca.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking alloca.h presence" >&5
+$as_echo_n "checking alloca.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <alloca.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: alloca.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: alloca.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: alloca.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: alloca.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: alloca.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: alloca.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: alloca.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: alloca.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: alloca.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ---------------------------------------------------------------------- ##
+## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg ##
+## ---------------------------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for alloca.h" >&5
+$as_echo_n "checking for alloca.h... " >&6; }
+if test "${ac_cv_header_alloca_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_alloca_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_alloca_h" >&5
+$as_echo "$ac_cv_header_alloca_h" >&6; }
+
+fi
+if test "x$ac_cv_header_alloca_h" = x""yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define INCLUDE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+
+
+# Map function checks to old Imake #defines
+case $host_os in
+	# darwin has poll() but can't be used to poll character devices
+	# darwin10 (SnowLeopard) should be tested as well once released
+	darwin7*) ;; darwin8*) ;; darwin9*) ;;
+	*)
+		{ $as_echo "$as_me:$LINENO: checking for poll" >&5
+$as_echo_n "checking for poll... " >&6; }
+if test "${ac_cv_func_poll+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define poll to an innocuous variant, in case <limits.h> declares poll.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define poll innocuous_poll
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char poll (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef poll
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char poll ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_poll || defined __stub___poll
+choke me
+#endif
+
+int
+main ()
+{
+return poll ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_poll=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_poll=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_poll" >&5
+$as_echo "$ac_cv_func_poll" >&6; }
+if test "x$ac_cv_func_poll" = x""yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_POLL 1
+_ACEOF
+
+fi
+
+	;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for snprintf" >&5
+$as_echo_n "checking for snprintf... " >&6; }
+if test "${ac_cv_func_snprintf+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define snprintf to an innocuous variant, in case <limits.h> declares snprintf.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define snprintf innocuous_snprintf
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char snprintf (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef snprintf
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char snprintf ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_snprintf || defined __stub___snprintf
+choke me
+#endif
+
+int
+main ()
+{
+return snprintf ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_func_snprintf=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_snprintf=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_snprintf" >&5
+$as_echo "$ac_cv_func_snprintf" >&6; }
+if test "x$ac_cv_func_snprintf" = x""yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_SNPRINTF 1
+_ACEOF
+
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for main in -lws2_32" >&5
+$as_echo_n "checking for main in -lws2_32... " >&6; }
+if test "${ac_cv_lib_ws2_32_main+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lws2_32  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_ws2_32_main=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ws2_32_main=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ws2_32_main" >&5
+$as_echo "$ac_cv_lib_ws2_32_main" >&6; }
+if test "x$ac_cv_lib_ws2_32_main" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBWS2_32 1
+_ACEOF
+
+  LIBS="-lws2_32 $LIBS"
+
+fi
+ac_cv_lib_ws2_32=ac_cv_lib_ws2_32_main
+
+
+# Options
+# Check whether --enable-xkb was given.
+if test "${enable_xkb+set}" = set; then
+  enableval=$enable_xkb; XKB="$enableval"
+else
+  XKB="yes"
+fi
+
+if test "x$XKB" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define XKB 1
+_ACEOF
+
+fi
+
+# Check whether --enable-install-makestrs was given.
+if test "${enable_install_makestrs+set}" = set; then
+  enableval=$enable_install_makestrs; INSTALL_MAKESTRS="$enableval"
+else
+  INSTALL_MAKESTRS="yes"
+fi
+
+ if test "x$INSTALL_MAKESTRS" = xyes; then
+  INSTALL_MAKESTRS_TRUE=
+  INSTALL_MAKESTRS_FALSE='#'
+else
+  INSTALL_MAKESTRS_TRUE='#'
+  INSTALL_MAKESTRS_FALSE=
+fi
+
+
+# Replaces XFileSearchPathDefault from Imake configs
+XFILESEARCHPATHDEFAULT='$(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'
+
+
+# Check whether --with-xfile-search-path was given.
+if test "${with_xfile_search_path+set}" = set; then
+  withval=$with_xfile_search_path; XFILESEARCHPATHDEFAULT="$withval"
+fi
+
+
+
+
+# Check whether --with-appdefaultdir was given.
+if test "${with_appdefaultdir+set}" = set; then
+  withval=$with_appdefaultdir; appdefaultdir="$withval"
+else
+  appdefaultdir=${datadir}/X11/app-defaults
+fi
+
+
+  prefix_NONE=
+  exec_prefix_NONE=
+  test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+  test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+  eval ax_define_dir="\"$appdefaultdir\""
+  eval ax_define_dir="\"$ax_define_dir\""
+  appdefaultdir="$ax_define_dir"
+
+
+cat >>confdefs.h <<_ACEOF
+#define appdefaultdir "$ax_define_dir"
+_ACEOF
+
+  test "$prefix_NONE" && prefix=NONE
+  test "$exec_prefix_NONE" && exec_prefix=NONE
+
+
+# Replacement for Imake ToolkitStringsABIOptions, controls string tables
+# generated by util/string.list in StringDefs.h & Shell.h
+case $host_os in
+	solaris*)
+		# Solaris uses -intelabi even on SPARC
+  		STRINGSABIOPTIONS="-intelabi -solarisabinames"
+		;;
+	sco* | svr4*)
+		case $host_cpu in
+		    i*86) STRINGSABIOPTIONS="-intelabi" ;;
+		       *) STRINGSABIOPTIONS="" ;;
+		esac
+		;;
+esac
+
+
+case $host_os in
+    darwin*)
+        OS_CFLAGS="-Wl,-flat_namespace"
+	;;
+    *)
+        OS_CFLAGS=
+        ;;
+esac
+
+XT_CFLAGS="$XT_CFLAGS $OS_CFLAGS"
+
+# Man page processing requirements
+
+
+for ac_prog in cpp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_RAWCPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $RAWCPP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RAWCPP="$RAWCPP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_RAWCPP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+RAWCPP=$ac_cv_path_RAWCPP
+if test -n "$RAWCPP"; then
+  { $as_echo "$as_me:$LINENO: result: $RAWCPP" >&5
+$as_echo "$RAWCPP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$RAWCPP" && break
+done
+test -n "$RAWCPP" || RAWCPP="${CPP}"
+
+
+# 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.
+{ $as_echo "$as_me:$LINENO: checking if $RAWCPP requires -undef" >&5
+$as_echo_n "checking if $RAWCPP requires -undef... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+Does cpp redefine unix ?
+_ACEOF
+if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+else
+	if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then
+		RAWCPPFLAGS=-undef
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	# 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"
+		{ $as_echo "$as_me:$LINENO: result: yes, with -ansi" >&5
+$as_echo "yes, with -ansi" >&6; }
+	else
+		{ { $as_echo "$as_me:$LINENO: error: ${RAWCPP} defines unix with or without -undef.  I don't know what to do." >&5
+$as_echo "$as_me: error: ${RAWCPP} defines unix with or without -undef.  I don't know what to do." >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+fi
+rm -f conftest.$ac_ext
+
+{ $as_echo "$as_me:$LINENO: checking if $RAWCPP requires -traditional" >&5
+$as_echo_n "checking if $RAWCPP requires -traditional... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+Does cpp preserve   "whitespace"?
+_ACEOF
+if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve   \"'` -eq 1 ; then
+	{ $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+else
+	if test `${RAWCPP} -traditional < conftest.$ac_ext | grep -c 'preserve   \"'` -eq 1 ; then
+		RAWCPPFLAGS="${RAWCPPFLAGS} -traditional"
+		{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ { $as_echo "$as_me:$LINENO: error: ${RAWCPP} does not preserve whitespace with or without -traditional.  I don't know what to do." >&5
+$as_echo "$as_me: error: ${RAWCPP} does not preserve whitespace with or without -traditional.  I don't know what to do." >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+fi
+rm -f conftest.$ac_ext
+
+
+
+
+# Check whether --enable-malloc0returnsnull was given.
+if test "${enable_malloc0returnsnull+set}" = set; then
+  enableval=$enable_malloc0returnsnull; MALLOC_ZERO_RETURNS_NULL=$enableval
+else
+  MALLOC_ZERO_RETURNS_NULL=auto
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether malloc(0) returns NULL" >&5
+$as_echo_n "checking whether malloc(0) returns NULL... " >&6; }
+if test "x$MALLOC_ZERO_RETURNS_NULL" = xauto; then
+	if test "$cross_compiling" = yes; then
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+char *malloc();
+char *realloc();
+char *calloc();
+main() {
+    char *m0, *r0, *c0, *p;
+    m0 = malloc(0);
+    p = malloc(10);
+    r0 = realloc(p,0);
+    c0 = calloc(0);
+    exit(m0 == 0 || r0 == 0 || c0 == 0 ? 0 : 1);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  MALLOC_ZERO_RETURNS_NULL=yes
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+MALLOC_ZERO_RETURNS_NULL=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $MALLOC_ZERO_RETURNS_NULL" >&5
+$as_echo "$MALLOC_ZERO_RETURNS_NULL" >&6; }
+
+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_config_files="$ac_config_files Makefile src/Makefile util/Makefile include/Makefile man/Makefile xt.pc"
+
+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_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$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= ;; #(
+      *) $as_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+set}" = set || &/
+     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
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$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}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+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=`$as_echo "$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.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${INSTALL_MAKESTRS_TRUE}" && test -z "${INSTALL_MAKESTRS_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"INSTALL_MAKESTRS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"INSTALL_MAKESTRS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_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}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (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 `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# 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_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; 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
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  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
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+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
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      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" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # 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
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+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 -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+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=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&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 libXt $as_me 1.0.7, which was
+generated by GNU Autoconf 2.63.  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
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, 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
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+libXt config.status 1.0.7
+configured by $0, generated by GNU Autoconf 2.63,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 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=$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 )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    $as_echo "$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_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$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
+  \$as_echo "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
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_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
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "util/Makefile") CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
+    "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+    "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
+    "xt.pc") CONFIG_FILES="$CONFIG_FILES xt.pc" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  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+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+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=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# 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='
'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/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 {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+  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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  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 >>"\$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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ 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[	 ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[	 ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+   { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+   { (exit 1); exit 1; }; };;
+  :[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="$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_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$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 '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    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 ||
+$as_echo 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"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$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 ||
+$as_echo 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$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@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$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 "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$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 "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+	|| { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_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" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      { as_dir=$dirpart/$fdir
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$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 ||
+$as_echo 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+
+# 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 || { (exit 1); exit 1; }
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/libXt/configure.ac b/libXt/configure.ac
new file mode 100644
index 000000000..81a4b3f21
--- /dev/null
+++ b/libXt/configure.ac
@@ -0,0 +1,142 @@
+dnl 
+dnl  Copyright © 2003 Keith Packard, Noah Levitt
+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, and that the name of Keith Packard not be used in
+dnl  advertising or publicity pertaining to distribution of the software without
+dnl  specific, written prior permission.  Keith Packard makes no
+dnl  representations about the suitability of this software for any purpose.  It
+dnl  is provided "as is" without express or implied warranty.
+dnl 
+dnl  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+dnl  EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+dnl  PERFORMANCE OF THIS SOFTWARE.
+dnl
+dnl Process this file with autoconf to create configure.
+
+AC_PREREQ([2.57])
+
+dnl
+dnl
+AC_INIT(libXt, 1.0.7, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libXt)
+AM_INIT_AUTOMAKE([dist-bzip2])
+AM_MAINTAINER_MODE
+
+# Require xorg-macros: XORG_DEFAULT_OPTIONS
+m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.3)
+AM_CONFIG_HEADER(config.h)
+
+# Check for progs
+AC_PROG_CC
+AC_PROG_LIBTOOL
+AM_PROG_CC_C_O
+XORG_DEFAULT_OPTIONS
+
+if test x"$CC_FOR_BUILD" = x; then
+	if test x"$cross_compiling" = xyes; then
+		AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
+	else
+	        CC_FOR_BUILD="$CC"
+	fi
+fi
+AC_SUBST([CC_FOR_BUILD])
+CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
+AC_SUBST(CFLAGS_FOR_BUILD)
+LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+AC_SUBST(LDFLAGS_FOR_BUILD)
+
+PKG_CHECK_MODULES(XT, sm ice x11 xproto kbproto)
+
+# Needed for including Xalloca.h
+AC_CHECK_HEADER([alloca.h], AC_DEFINE(INCLUDE_ALLOCA_H, 1, [Define to 1 if Xalloca.h should include <alloca.h>]))
+
+# Map function checks to old Imake #defines
+case $host_os in
+	# darwin has poll() but can't be used to poll character devices
+	# darwin10 (SnowLeopard) should be tested as well once released
+	darwin7*) ;; darwin8*) ;; darwin9*) ;;
+	*)
+		AC_CHECK_FUNC(poll, AC_DEFINE(USE_POLL,1,
+	        	[Define to 1 if you have the "poll" function.]))
+	;;
+esac
+AC_CHECK_FUNC(snprintf, AC_DEFINE(USE_SNPRINTF,1,
+        [Define to 1 if you have the "snprintf" function.]))
+
+AC_HAVE_LIBRARY(ws2_32)
+
+# Options
+AC_ARG_ENABLE(xkb, AC_HELP_STRING([--disable-xkb], [Disable XKB support]),
+	XKB="$enableval", XKB="yes")
+if test "x$XKB" = "xyes" ; then
+	AC_DEFINE(XKB, 1, [Define to 1 to use XKB for keysym resolution.])
+fi
+
+AC_ARG_ENABLE(install-makestrs,
+	AC_HELP_STRING([--disable-install-makestrs], [Disable installing makestrs]),
+	INSTALL_MAKESTRS="$enableval",
+	INSTALL_MAKESTRS="yes")
+AM_CONDITIONAL([INSTALL_MAKESTRS], [test "x$INSTALL_MAKESTRS" = xyes])
+
+# Replaces XFileSearchPathDefault from Imake configs
+XFILESEARCHPATHDEFAULT='$(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'
+
+AC_ARG_WITH(xfile-search-path,
+	AC_HELP_STRING([--with-xfile-search-path=<path>],
+		       [Set path to search for app-defaults and other files]),
+	[XFILESEARCHPATHDEFAULT="$withval"], [])
+AC_SUBST([XFILESEARCHPATHDEFAULT])
+
+AC_ARG_WITH(appdefaultdir,
+	AC_HELP_STRING([--with-appdefaultdir=<path>],
+		       [Set app-default directory (default: ${datadir}/X11/app-defaults)]),
+	[appdefaultdir="$withval"],
+	[appdefaultdir=${datadir}/X11/app-defaults])
+AX_DEFINE_DIR([appdefaultdir], [appdefaultdir], [app default data directory])
+
+# Replacement for Imake ToolkitStringsABIOptions, controls string tables
+# generated by util/string.list in StringDefs.h & Shell.h
+case $host_os in
+	solaris*)
+		# Solaris uses -intelabi even on SPARC
+  		STRINGSABIOPTIONS="-intelabi -solarisabinames"
+		;;
+	sco* | svr4*)
+		case $host_cpu in
+		    i*86) STRINGSABIOPTIONS="-intelabi" ;;
+		       *) STRINGSABIOPTIONS="" ;;
+		esac
+		;;
+esac
+AC_SUBST(STRINGSABIOPTIONS)
+
+case $host_os in
+    darwin*)
+        OS_CFLAGS="-Wl,-flat_namespace"
+	;;
+    *)
+        OS_CFLAGS=
+        ;;
+esac
+
+XT_CFLAGS="$XT_CFLAGS $OS_CFLAGS"
+
+# Man page processing requirements
+XORG_PROG_RAWCPP
+
+XORG_CHECK_MALLOC_ZERO
+
+AC_OUTPUT([Makefile
+	   src/Makefile
+	   util/Makefile
+	   include/Makefile
+	   man/Makefile
+           xt.pc])
diff --git a/libXt/depcomp b/libXt/depcomp
new file mode 100644
index 000000000..df8eea7e4
--- /dev/null
+++ b/libXt/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
+
+# 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 <http://www.gnu.org/licenses/>.
+
+# 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.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+	       s/^ *//
+	       s/ \\*$//
+	       s/$/:/
+	       p
+	     }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libXt/include/Makefile.am b/libXt/include/Makefile.am
new file mode 100644
index 000000000..d49cafc3e
--- /dev/null
+++ b/libXt/include/Makefile.am
@@ -0,0 +1,44 @@
+xtincludedir = ${includedir}/X11
+
+xtinclude_HEADERS = \
+	X11/Composite.h \
+	X11/CompositeP.h \
+	X11/ConstrainP.h \
+	X11/Constraint.h \
+	X11/Core.h \
+	X11/CoreP.h \
+	X11/Intrinsic.h \
+	X11/IntrinsicP.h \
+	X11/Object.h \
+	X11/ObjectP.h \
+	X11/RectObj.h \
+	X11/RectObjP.h \
+	X11/ResConfigP.h \
+	X11/ShellP.h \
+	X11/Vendor.h \
+	X11/VendorP.h	\
+			\
+	X11/CallbackI.h \
+	X11/ConvertI.h \
+	X11/CreateI.h \
+	X11/EventI.h \
+	X11/HookObjI.h \
+	X11/InitialI.h \
+	X11/IntrinsicI.h \
+	X11/PassivGraI.h \
+	X11/ResourceI.h \
+	X11/SelectionI.h \
+	X11/ShellI.h \
+	X11/ThreadsI.h \
+	X11/TranslateI.h \
+	X11/VarargsI.h	\
+	X11/Xtos.h	
+
+
+nodist_xtinclude_HEADERS = \
+	X11/StringDefs.h \
+	X11/Shell.h
+
+DISTCLEANFILES = \
+	X11/StringDefs.h \
+	X11/Shell.h
diff --git a/libXt/include/Makefile.in b/libXt/include/Makefile.in
new file mode 100644
index 000000000..a00e3b7d4
--- /dev/null
+++ b/libXt/include/Makefile.in
@@ -0,0 +1,550 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
+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 = include
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(xtinclude_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+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__installdirs = "$(DESTDIR)$(xtincludedir)" \
+	"$(DESTDIR)$(xtincludedir)"
+HEADERS = $(nodist_xtinclude_HEADERS) $(xtinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+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@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CHANGELOG_CMD = @CHANGELOG_CMD@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CWARNFLAGS = @CWARNFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
+DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
+DSYMUTIL = @DSYMUTIL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FILE_MAN_DIR = @FILE_MAN_DIR@
+FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_MAN_DIR = @LIB_MAN_DIR@
+LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
+MISC_MAN_DIR = @MISC_MAN_DIR@
+MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
+MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+RAWCPP = @RAWCPP@
+RAWCPPFLAGS = @RAWCPPFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRINGSABIOPTIONS = @STRINGSABIOPTIONS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XFILESEARCHPATHDEFAULT = @XFILESEARCHPATHDEFAULT@
+XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
+XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
+XT_CFLAGS = @XT_CFLAGS@
+XT_LIBS = @XT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+appdefaultdir = @appdefaultdir@
+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@
+distcleancheck_listfiles = @distcleancheck_listfiles@
+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@
+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@
+xtincludedir = ${includedir}/X11
+xtinclude_HEADERS = \
+	X11/Composite.h \
+	X11/CompositeP.h \
+	X11/ConstrainP.h \
+	X11/Constraint.h \
+	X11/Core.h \
+	X11/CoreP.h \
+	X11/Intrinsic.h \
+	X11/IntrinsicP.h \
+	X11/Object.h \
+	X11/ObjectP.h \
+	X11/RectObj.h \
+	X11/RectObjP.h \
+	X11/ResConfigP.h \
+	X11/ShellP.h \
+	X11/Vendor.h \
+	X11/VendorP.h	\
+			\
+	X11/CallbackI.h \
+	X11/ConvertI.h \
+	X11/CreateI.h \
+	X11/EventI.h \
+	X11/HookObjI.h \
+	X11/InitialI.h \
+	X11/IntrinsicI.h \
+	X11/PassivGraI.h \
+	X11/ResourceI.h \
+	X11/SelectionI.h \
+	X11/ShellI.h \
+	X11/ThreadsI.h \
+	X11/TranslateI.h \
+	X11/VarargsI.h	\
+	X11/Xtos.h	
+
+nodist_xtinclude_HEADERS = \
+	X11/StringDefs.h \
+	X11/Shell.h
+
+DISTCLEANFILES = \
+	X11/StringDefs.h \
+	X11/Shell.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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) --gnu include/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu include/Makefile
+.PRECIOUS: 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__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-nodist_xtincludeHEADERS: $(nodist_xtinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(xtincludedir)" || $(MKDIR_P) "$(DESTDIR)$(xtincludedir)"
+	@list='$(nodist_xtinclude_HEADERS)'; test -n "$(xtincludedir)" || list=; \
+	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_HEADER) $$files '$(DESTDIR)$(xtincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(xtincludedir)" || exit $$?; \
+	done
+
+uninstall-nodist_xtincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(nodist_xtinclude_HEADERS)'; test -n "$(xtincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(xtincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(xtincludedir)" && rm -f $$files
+install-xtincludeHEADERS: $(xtinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(xtincludedir)" || $(MKDIR_P) "$(DESTDIR)$(xtincludedir)"
+	@list='$(xtinclude_HEADERS)'; test -n "$(xtincludedir)" || list=; \
+	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_HEADER) $$files '$(DESTDIR)$(xtincludedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(xtincludedir)" || exit $$?; \
+	done
+
+uninstall-xtincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xtinclude_HEADERS)'; test -n "$(xtincludedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(xtincludedir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(xtincludedir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(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 $(HEADERS)
+installdirs:
+	for dir in "$(DESTDIR)$(xtincludedir)" "$(DESTDIR)$(xtincludedir)"; 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:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+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)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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 clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-nodist_xtincludeHEADERS \
+	install-xtincludeHEADERS
+
+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 mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-nodist_xtincludeHEADERS \
+	uninstall-xtincludeHEADERS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool ctags distclean distclean-generic \
+	distclean-libtool 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-nodist_xtincludeHEADERS \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip install-xtincludeHEADERS installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-nodist_xtincludeHEADERS \
+	uninstall-xtincludeHEADERS
+
+
+# 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:
diff --git a/libXt/include/X11/CallbackI.h b/libXt/include/X11/CallbackI.h
new file mode 100644
index 000000000..64e815256
--- /dev/null
+++ b/libXt/include/X11/CallbackI.h
@@ -0,0 +1,121 @@
+/* $Xorg: CallbackI.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86$ */
+
+/****************************************************************
+ *
+ * Callbacks
+ *
+ ****************************************************************/
+
+typedef XrmResource **CallbackTable;
+
+#define _XtCBCalling 1
+#define _XtCBFreeAfterCalling 2
+
+_XFUNCPROTOBEGIN
+
+typedef struct internalCallbackRec {
+    unsigned short count;
+    char	   is_padded;	/* contains NULL padding for external form */
+    char	   call_state;  /* combination of _XtCB{FreeAfter}Calling */
+#ifdef LONG64
+    unsigned int   align_pad;	/* padding to align callback list */
+#endif
+    /* XtCallbackList */
+} InternalCallbackRec, *InternalCallbackList;
+
+typedef Boolean (*_XtConditionProc)(
+    XtPointer	/* data */
+);
+
+extern void _XtAddCallback(
+    InternalCallbackList*	/* callbacks */,
+    XtCallbackProc		/* callback */,
+    XtPointer 			/* closure */
+);
+
+extern void _XtAddCallbackOnce(
+    InternalCallbackList*	/* callbacks */,
+    XtCallbackProc		/* callback */,
+    XtPointer 			/* closure */
+);
+
+extern InternalCallbackList _XtCompileCallbackList(
+    XtCallbackList		/* xtcallbacks */
+);
+
+extern XtCallbackList _XtGetCallbackList(
+    InternalCallbackList*	/* callbacks */
+);
+
+extern void _XtRemoveAllCallbacks(
+    InternalCallbackList*	/* callbacks */
+);
+
+extern void _XtRemoveCallback(
+    InternalCallbackList*	/* callbacks */,
+    XtCallbackProc		/* callback */,
+    XtPointer			/* closure */
+);
+
+extern void _XtPeekCallback(
+    Widget			/* widget */,
+    XtCallbackList		/* callbacks */,
+    XtCallbackProc *		/* callback */,
+    XtPointer *			/* closure */
+);
+
+extern void _XtCallConditionalCallbackList(
+    Widget			/* widget */,
+    XtCallbackList		/* callbacks */,
+    XtPointer			/* call_data */,
+    _XtConditionProc		/* cond_proc */
+);
+
+_XFUNCPROTOEND
diff --git a/libXt/include/X11/Composite.h b/libXt/include/X11/Composite.h
new file mode 100644
index 000000000..c3c982868
--- /dev/null
+++ b/libXt/include/X11/Composite.h
@@ -0,0 +1,105 @@
+/* $Xorg: Composite.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86$ */
+
+#ifndef _XtComposite_h
+#define _XtComposite_h
+
+typedef struct _CompositeClassRec *CompositeWidgetClass;
+
+typedef Cardinal (*XtOrderProc)(
+    Widget 	/* child */
+);
+
+_XFUNCPROTOBEGIN
+
+extern void XtManageChildren(
+    WidgetList 		/* children */,
+    Cardinal 		/* num_children */
+);
+
+extern void XtManageChild(
+    Widget 		/* child */
+);
+
+extern void XtUnmanageChildren(
+    WidgetList 		/* children */,
+    Cardinal 		/* num_children */
+);
+
+extern void XtUnmanageChild(
+    Widget 		/* child */
+);
+
+typedef void (*XtDoChangeProc)(
+    Widget		/* composite_parent */,
+    WidgetList		/* unmanage_children */,
+    Cardinal *		/* num_unmanage_children */,
+    WidgetList		/* manage_children */,
+    Cardinal *		/* num_manage_children */,
+    XtPointer		/* client_data */
+);
+
+extern void XtChangeManagedSet(
+    WidgetList		/* unmanage_children */,
+    Cardinal		/* num_unmanage_children */,
+    XtDoChangeProc	/* do_change_proc */,
+    XtPointer		/* client_data */,
+    WidgetList		/* manage_children */,
+    Cardinal		/* num_manage_children */
+);
+
+_XFUNCPROTOEND
+
+#ifndef VMS
+externalref WidgetClass compositeWidgetClass;
+#endif
+
+#endif /* _XtComposite_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/CompositeP.h b/libXt/include/X11/CompositeP.h
new file mode 100644
index 000000000..e93275ace
--- /dev/null
+++ b/libXt/include/X11/CompositeP.h
@@ -0,0 +1,115 @@
+/* $Xorg: CompositeP.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtCompositeP_h
+#define _XtCompositeP_h
+
+#include <X11/Composite.h>
+
+_XFUNCPROTOBEGIN
+
+/************************************************************************
+ *
+ * Additional instance fields for widgets of (sub)class 'Composite' 
+ *
+ ************************************************************************/
+
+typedef struct _CompositePart {
+    WidgetList  children;	     /* array of ALL widget children	     */
+    Cardinal    num_children;	     /* total number of widget children	     */
+    Cardinal    num_slots;           /* number of slots in children array    */
+    XtOrderProc insert_position;     /* compute position of new child	     */
+} CompositePart,*CompositePtr;
+
+typedef struct _CompositeRec {
+    CorePart      core;
+    CompositePart composite;
+} CompositeRec;
+
+/*********************************************************************
+ *
+ *  Additional class fields for widgets of (sub)class 'Composite'
+ *
+ ********************************************************************/
+
+typedef struct _CompositeClassPart {
+    XtGeometryHandler geometry_manager;	  /* geometry manager for children   */
+    XtWidgetProc      change_managed;	  /* change managed state of child   */
+    XtWidgetProc      insert_child;	  /* physically add child to parent  */
+    XtWidgetProc      delete_child;	  /* physically remove child	     */
+    XtPointer	      extension;	  /* pointer to extension record     */
+} CompositeClassPart,*CompositePartPtr;
+
+typedef struct {
+    XtPointer next_extension;	/* 1st 4 mandated for all extension records */
+    XrmQuark record_type;	/* NULLQUARK; on CompositeClassPart */
+    long version;		/* must be XtCompositeExtensionVersion */
+    Cardinal record_size;	/* sizeof(CompositeClassExtensionRec) */
+    Boolean accepts_objects;
+    Boolean allows_change_managed_set;
+} CompositeClassExtensionRec, *CompositeClassExtension;
+
+
+typedef struct _CompositeClassRec {
+     CoreClassPart      core_class;
+     CompositeClassPart composite_class;
+} CompositeClassRec;
+
+externalref CompositeClassRec compositeClassRec;
+
+_XFUNCPROTOEND
+
+#define XtCompositeExtensionVersion 2L
+#define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit)
+#define XtInheritChangeManaged ((XtWidgetProc) _XtInherit)
+#define XtInheritInsertChild ((XtWidgetProc) _XtInherit)
+#define XtInheritDeleteChild ((XtWidgetProc) _XtInherit)
+
+#endif /* _XtCompositeP_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/ConstrainP.h b/libXt/include/X11/ConstrainP.h
new file mode 100644
index 000000000..7030a3411
--- /dev/null
+++ b/libXt/include/X11/ConstrainP.h
@@ -0,0 +1,98 @@
+/* $Xorg: ConstrainP.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+/* $oHeader: ConstrainP.h,v 1.2 88/08/18 15:54:15 asente Exp $ */
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtConstraintP_h
+#define _XtConstraintP_h
+
+#include <X11/Constraint.h>
+
+_XFUNCPROTOBEGIN
+
+typedef struct _ConstraintPart {
+    XtPointer   mumble;		/* No new fields, keep C compiler happy */
+} ConstraintPart;
+
+typedef struct _ConstraintRec {
+    CorePart	    core;
+    CompositePart   composite;
+    ConstraintPart  constraint;
+} ConstraintRec, *ConstraintWidget;
+
+typedef struct _ConstraintClassPart {
+    XtResourceList resources;	      /* constraint resource list	     */
+    Cardinal   num_resources;         /* number of constraints in list       */
+    Cardinal   constraint_size;       /* size of constraint record           */
+    XtInitProc initialize;            /* constraint initialization           */
+    XtWidgetProc destroy;             /* constraint destroy proc             */
+    XtSetValuesFunc set_values;       /* constraint set_values proc          */
+    XtPointer	    extension;		/* pointer to extension record      */
+} ConstraintClassPart;
+
+typedef struct {
+    XtPointer next_extension;	/* 1st 4 mandated for all extension records */
+    XrmQuark record_type;	/* NULLQUARK; on ConstraintClassPart */
+    long version;		/* must be XtConstraintExtensionVersion */
+    Cardinal record_size;	/* sizeof(ConstraintClassExtensionRec) */
+    XtArgsProc get_values_hook;
+} ConstraintClassExtensionRec, *ConstraintClassExtension;
+
+typedef struct _ConstraintClassRec {
+    CoreClassPart       core_class;
+    CompositeClassPart  composite_class;
+    ConstraintClassPart constraint_class;
+} ConstraintClassRec;
+
+externalref ConstraintClassRec constraintClassRec;
+
+_XFUNCPROTOEND
+
+#define XtConstraintExtensionVersion 1L
+
+#endif /* _XtConstraintP_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/Constraint.h b/libXt/include/X11/Constraint.h
new file mode 100644
index 000000000..977e7eeac
--- /dev/null
+++ b/libXt/include/X11/Constraint.h
@@ -0,0 +1,64 @@
+/* $Xorg: Constraint.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+/* $oHeader: Constraint.h,v 1.2 88/08/18 15:54:18 asente Exp $ */
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtConstraint_h
+#define _XtConstraint_h
+
+_XFUNCPROTOBEGIN
+
+typedef struct _ConstraintClassRec *ConstraintWidgetClass;
+
+#ifndef VMS
+externalref WidgetClass constraintWidgetClass;
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XtConstraint_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/ConvertI.h b/libXt/include/X11/ConvertI.h
new file mode 100644
index 000000000..f3f7fb0ba
--- /dev/null
+++ b/libXt/include/X11/ConvertI.h
@@ -0,0 +1,99 @@
+/* $Xorg: ConvertI.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/ConvertI.h,v 1.3 2001/12/14 19:56:09 dawes Exp $ */
+
+_XFUNCPROTOBEGIN
+
+/* Representation types */
+
+extern	XrmQuark  _XtQString;
+
+/*
+ * Resource conversions
+ */
+
+typedef struct _ConverterRec **ConverterTable;
+
+extern void _XtAddDefaultConverters(
+    ConverterTable	/* table */
+);
+
+extern void _XtSetDefaultConverterTable(
+    ConverterTable* 		/* table */
+);
+
+extern void _XtFreeConverterTable(
+    ConverterTable 		/* table */
+);
+
+extern void _XtTableAddConverter(
+    ConverterTable		/* table */,
+    XrmRepresentation    	/* from_type */,
+    XrmRepresentation    	/* to_type */,
+    XtTypeConverter      	/* converter */,
+    XtConvertArgList     	/* convert_args */,
+    Cardinal             	/* num_args */,
+    _XtBoolean              	/* new_style */,
+    XtCacheType	    		/* cache_type */,
+    XtDestructor         	/* destructor */,
+    _XtBoolean			/* global */
+);
+
+extern Boolean _XtConvert(
+    Widget			/* widget */,
+    XrmRepresentation    	/* from_type */,
+    XrmValuePtr			/* from */,
+    XrmRepresentation		/* to_type */,
+    XrmValuePtr			/* to */,
+    XtCacheRef*			/* cache_ref_return */
+);
+
+void _XtConvertInitialize(void);
+
+_XFUNCPROTOEND
diff --git a/libXt/include/X11/Core.h b/libXt/include/X11/Core.h
new file mode 100644
index 000000000..5127b501a
--- /dev/null
+++ b/libXt/include/X11/Core.h
@@ -0,0 +1,70 @@
+/*
+* $Xorg: Core.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $
+* $oHeader: Core.h,v 1.2 88/08/18 15:54:32 asente Exp $
+*/
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtCore_h
+#define _XtCore_h
+
+_XFUNCPROTOBEGIN
+
+typedef struct _WidgetClassRec *CoreWidgetClass;
+typedef struct _WidgetRec *CoreWidget;
+externalref WidgetClass coreWidgetClass;
+
+#ifndef VMS
+externalref WidgetClass widgetClass;
+
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XtCore_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/CoreP.h b/libXt/include/X11/CoreP.h
new file mode 100644
index 000000000..57836e615
--- /dev/null
+++ b/libXt/include/X11/CoreP.h
@@ -0,0 +1,175 @@
+/*
+* $Xorg: CoreP.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $
+* $oHeader: CoreP.h,v 1.2 88/08/18 15:54:37 asente Exp $
+*/
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef XtCoreP_h
+#define XtCoreP_h
+
+#include <X11/Core.h>
+
+_XFUNCPROTOBEGIN
+
+externalref int _XtInheritTranslations;
+
+#define XtInheritTranslations  ((String) &_XtInheritTranslations)
+#define XtInheritRealize ((XtRealizeProc) _XtInherit)
+#define XtInheritResize ((XtWidgetProc) _XtInherit)
+#define XtInheritExpose ((XtExposeProc) _XtInherit)
+#define XtInheritSetValuesAlmost ((XtAlmostProc) _XtInherit)
+#define XtInheritAcceptFocus ((XtAcceptFocusProc) _XtInherit)
+#define XtInheritQueryGeometry ((XtGeometryHandler) _XtInherit)
+#define XtInheritDisplayAccelerator ((XtStringProc) _XtInherit)
+
+/***************************************************************
+ * Widget Core Data Structures
+ *
+ *
+ **************************************************************/
+
+typedef struct _CorePart {
+    Widget	    self;		/* pointer to widget itself	     */
+    WidgetClass	    widget_class;	/* pointer to Widget's ClassRec	     */
+    Widget	    parent;		/* parent widget	  	     */
+    XrmName         xrm_name;		/* widget resource name quarkified   */
+    Boolean         being_destroyed;	/* marked for destroy		     */
+    XtCallbackList  destroy_callbacks;	/* who to call when widget destroyed */
+    XtPointer       constraints;        /* constraint record                 */
+    Position        x, y;		/* window position		     */
+    Dimension       width, height;	/* window dimensions		     */
+    Dimension       border_width;	/* window border width		     */
+    Boolean         managed;            /* is widget geometry managed?       */
+    Boolean	    sensitive;		/* is widget sensitive to user events*/
+    Boolean         ancestor_sensitive;	/* are all ancestors sensitive?      */
+    XtEventTable    event_table;	/* private to event dispatcher       */
+    XtTMRec	    tm;                 /* translation management            */
+    XtTranslations  accelerators;       /* accelerator translations          */
+    Pixel	    border_pixel;	/* window border pixel		     */
+    Pixmap          border_pixmap;	/* window border pixmap or NULL      */
+    WidgetList      popup_list;         /* list of popups                    */
+    Cardinal        num_popups;         /* how many popups                   */
+    String          name;		/* widget resource name		     */
+    Screen	    *screen;		/* window's screen		     */
+    Colormap        colormap;           /* colormap                          */
+    Window	    window;		/* window ID			     */
+    Cardinal        depth;		/* number of planes in window        */
+    Pixel	    background_pixel;	/* window background pixel	     */
+    Pixmap          background_pixmap;	/* window background pixmap or NULL  */
+    Boolean         visible;		/* is window mapped and not occluded?*/
+    Boolean	    mapped_when_managed;/* map window if it's managed?       */
+} CorePart;
+
+typedef struct _WidgetRec {
+    CorePart    core;
+ } WidgetRec, CoreRec;
+
+
+
+/******************************************************************
+ *
+ * Core Class Structure. Widgets, regardless of their class, will have
+ * these fields.  All widgets of a given class will have the same values
+ * for these fields.  Widgets of a given class may also have additional
+ * common fields.  These additional fields are included in incremental
+ * class structures, such as CommandClass.
+ *
+ * The fields that are specific to this subclass, as opposed to fields that
+ * are part of the superclass, are called "subclass fields" below.  Many
+ * procedures are responsible only for the subclass fields, and not for
+ * any superclass fields.
+ *
+ ********************************************************************/
+
+typedef struct _CoreClassPart {
+    WidgetClass     superclass;		/* pointer to superclass ClassRec   */
+    String          class_name;		/* widget resource class name       */
+    Cardinal        widget_size;	/* size in bytes of widget record   */
+    XtProc	    class_initialize;   /* class initialization proc	    */
+    XtWidgetClassProc class_part_initialize; /* dynamic initialization	    */
+    XtEnum          class_inited;       /* has class been initialized?      */
+    XtInitProc      initialize;		/* initialize subclass fields       */
+    XtArgsProc      initialize_hook;    /* notify that initialize called    */
+    XtRealizeProc   realize;		/* XCreateWindow for widget	    */
+    XtActionList    actions;		/* widget semantics name to proc map */
+    Cardinal	    num_actions;	/* number of entries in actions     */
+    XtResourceList  resources;		/* resources for subclass fields    */
+    Cardinal        num_resources;      /* number of entries in resources   */
+    XrmClass        xrm_class;		/* resource class quarkified	    */
+    Boolean         compress_motion;    /* compress MotionNotify for widget */
+    XtEnum          compress_exposure;  /* compress Expose events for widget*/
+    Boolean         compress_enterleave;/* compress enter and leave events  */
+    Boolean         visible_interest;   /* select for VisibilityNotify      */
+    XtWidgetProc    destroy;		/* free data for subclass pointers  */
+    XtWidgetProc    resize;		/* geom manager changed widget size */
+    XtExposeProc    expose;		/* rediplay window		    */
+    XtSetValuesFunc set_values;		/* set subclass resource values     */
+    XtArgsFunc      set_values_hook;    /* notify that set_values called    */
+    XtAlmostProc    set_values_almost;  /* set_values got "Almost" geo reply */
+    XtArgsProc      get_values_hook;    /* notify that get_values called    */
+    XtAcceptFocusProc accept_focus;     /* assign input focus to widget     */
+    XtVersionType   version;	        /* version of intrinsics used	    */
+    XtPointer       callback_private;   /* list of callback offsets       */
+    String          tm_table;           /* state machine                    */
+    XtGeometryHandler query_geometry;	/* return preferred geometry        */
+    XtStringProc    display_accelerator;/* display your accelerator	    */
+    XtPointer	    extension;		/* pointer to extension record      */
+ } CoreClassPart;
+
+typedef struct _WidgetClassRec {
+    CoreClassPart core_class;
+} WidgetClassRec, CoreClassRec;
+
+externalref WidgetClassRec widgetClassRec;
+#define coreClassRec widgetClassRec
+
+_XFUNCPROTOEND
+
+#endif /* _XtCoreP_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/CreateI.h b/libXt/include/X11/CreateI.h
new file mode 100644
index 000000000..e0ca9a3a6
--- /dev/null
+++ b/libXt/include/X11/CreateI.h
@@ -0,0 +1,44 @@
+/* $XFree86$ */
+
+#ifndef _XtcreateI_h
+#define _XtcreateI_h
+
+_XFUNCPROTOBEGIN
+
+extern Widget _XtCreateWidget(String name, WidgetClass widget_class,
+			      Widget parent, ArgList args, Cardinal num_args,
+			      XtTypedArgList typed_args,
+			      Cardinal num_typed_args);
+extern Widget _XtCreatePopupShell(String name, WidgetClass widget_class,
+				  Widget parent, ArgList args,
+				  Cardinal num_args, XtTypedArgList typed_args,
+				  Cardinal num_typed_args);
+extern Widget _XtAppCreateShell(String name, String class,
+				WidgetClass widget_class, Display *display,
+				ArgList args, Cardinal num_args,
+				XtTypedArgList typed_args,
+				Cardinal num_typed_args);
+extern Widget _XtCreateHookObj(Screen *screen);
+
+_XFUNCPROTOEND
+
+#include <stdarg.h>
+
+_XFUNCPROTOBEGIN
+
+/* VarCreate.c */
+extern Widget _XtVaOpenApplication(XtAppContext *app_context_return,
+			_Xconst char* application_class,
+			XrmOptionDescList options, Cardinal num_options,
+			int *argc_in_out, String *argv_in_out,
+			String *fallback_resources, WidgetClass widget_class,
+			va_list var_args);
+extern Widget _XtVaAppInitialize(XtAppContext *app_context_return,
+			_Xconst char* application_class,
+			XrmOptionDescList options, Cardinal num_options,
+			int *argc_in_out, String *argv_in_out,
+			String *fallback_resources, va_list var_args);
+
+_XFUNCPROTOEND
+
+#endif /* _XtcreateI_h */
diff --git a/libXt/include/X11/EventI.h b/libXt/include/X11/EventI.h
new file mode 100644
index 000000000..d2d1d0f43
--- /dev/null
+++ b/libXt/include/X11/EventI.h
@@ -0,0 +1,138 @@
+/* $Xorg: EventI.h,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+/* $oHeader: EventI.h,v 1.3 88/08/24 09:21:11 asente Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/EventI.h,v 1.3 2001/12/14 19:56:12 dawes Exp $ */
+
+/* 
+ * Event.h - exported types and functions for toolkit event handler
+ * 
+ * Author:	Charles Haynes
+ * 		Digital Equipment Corporation
+ * 		Western Software Laboratory
+ * Date:	Sun Dec  6 1987
+ */
+
+#ifndef _Event_h_
+#define _Event_h_
+
+typedef struct _XtGrabRec  *XtGrabList;
+
+#include "PassivGraI.h"
+
+_XFUNCPROTOBEGIN
+
+extern void _XtEventInitialize(
+    void
+);
+
+typedef struct _XtEventRec {
+     XtEventTable	next;
+     EventMask		mask;	/*  also select_data count for RecExt */
+     XtEventHandler	proc;
+     XtPointer		closure;
+     unsigned int	select:1;
+     unsigned int	has_type_specifier:1;
+     unsigned int	async:1; /* not used, here for Digital extension? */
+} XtEventRec;
+
+typedef struct _XtGrabRec {
+    XtGrabList next;
+    Widget   widget;
+    unsigned int exclusive:1;
+    unsigned int spring_loaded:1;
+}XtGrabRec;
+
+typedef struct _BlockHookRec {
+    struct _BlockHookRec* next;
+    XtAppContext app;
+    XtBlockHookProc proc;
+    XtPointer closure;
+} BlockHookRec, *BlockHook;
+
+extern void _XtFreeEventTable(
+    XtEventTable*	/* event_table */
+);
+
+extern Boolean _XtOnGrabList(
+    Widget	/* widget */,
+    XtGrabRec*	/* grabList */
+);
+
+extern void _XtRemoveAllInputs(
+    XtAppContext /* app */
+);
+
+extern void _XtRefreshMapping(
+    XEvent*	/* event */,
+    _XtBoolean	/* dispatch */
+);
+
+extern void _XtSendFocusEvent(
+    Widget	/* child */,
+    int		/* type */);
+
+extern EventMask _XtConvertTypeToMask(
+    int		/* eventType */
+);
+
+/* EventUtil.c */
+extern Widget _XtFindRemapWidget(XEvent *event, Widget widget,
+				 EventMask mask, XtPerDisplayInput pdi);
+extern void _XtUngrabBadGrabs(XEvent *event, Widget widget,
+				 EventMask mask, XtPerDisplayInput pdi);
+extern void _XtFillAncestorList(Widget **listPtr, int *maxElemsPtr,
+				int *numElemsPtr, Widget start,
+				Widget breakWidget);
+
+/* NextEvent.c */
+extern Boolean XtAppPeekEvent_SkipTimer;
+
+_XFUNCPROTOEND
+
+#endif /* _Event_h_ */
diff --git a/libXt/include/X11/HookObjI.h b/libXt/include/X11/HookObjI.h
new file mode 100644
index 000000000..c0858c2b5
--- /dev/null
+++ b/libXt/include/X11/HookObjI.h
@@ -0,0 +1,75 @@
+/* $Xorg: HookObjI.h,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/*
+
+Copyright 1994, 1998  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.
+
+*/
+
+#ifndef _XtHookObjI_h
+#define _XtHookObjI_h
+
+_XFUNCPROTOBEGIN
+
+/* This object is implementation-dependent and private to the library. */
+
+typedef struct _HookObjRec *HookObject;
+typedef struct _HookObjClassRec *HookObjectClass;
+
+externalref WidgetClass hookObjectClass;
+
+typedef struct _HookObjPart {
+    /* resources */
+    XtCallbackList createhook_callbacks;
+    XtCallbackList changehook_callbacks;
+    XtCallbackList confighook_callbacks;
+    XtCallbackList geometryhook_callbacks;
+    XtCallbackList destroyhook_callbacks;
+    WidgetList shells;
+    Cardinal num_shells;
+    /* private data */
+    Cardinal max_shells;
+    Screen* screen;
+}HookObjPart;
+
+typedef struct _HookObjRec {
+    ObjectPart object;
+    HookObjPart hooks;
+} HookObjRec;
+
+typedef struct _HookObjClassPart {
+    int unused;
+} HookObjClassPart;
+
+typedef struct _HookObjClassRec {
+    ObjectClassPart object_class;
+    HookObjClassPart hook_class;
+} HookObjClassRec;
+
+externalref HookObjClassRec hookObjClassRec;
+
+_XFUNCPROTOEND
+
+#endif /* ifndef _Xt_HookObjI_h */
+
+
diff --git a/libXt/include/X11/InitialI.h b/libXt/include/X11/InitialI.h
new file mode 100644
index 000000000..2ae9b743c
--- /dev/null
+++ b/libXt/include/X11/InitialI.h
@@ -0,0 +1,433 @@
+/* $Xorg: InitialI.h,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/InitialI.h,v 3.10 2001/12/14 19:56:18 dawes Exp $ */
+
+#ifndef _XtinitialI_h
+#define _XtinitialI_h
+
+/****************************************************************
+ *
+ * Displays
+ *
+ ****************************************************************/
+
+#ifndef X_NOT_POSIX
+#ifdef _POSIX_SOURCE
+#include <limits.h>
+#else
+#define _POSIX_SOURCE
+#include <limits.h>
+#undef _POSIX_SOURCE
+#endif
+#endif
+#ifndef PATH_MAX
+#ifdef WIN32
+#define PATH_MAX 512
+#else
+#include <sys/param.h>
+#endif
+#ifndef PATH_MAX
+#ifdef MAXPATHLEN
+#define PATH_MAX MAXPATHLEN
+#else
+#define PATH_MAX 1024
+#endif
+#endif
+#endif
+
+#include <X11/Xos.h>
+#include <X11/Xpoll.h>
+
+_XFUNCPROTOBEGIN
+
+typedef struct _TimerEventRec {
+        struct timeval        te_timer_value;
+	struct _TimerEventRec *te_next;
+	XtTimerCallbackProc   te_proc;
+	XtAppContext	      app;
+	XtPointer	      te_closure;
+} TimerEventRec;
+
+typedef struct _InputEvent {
+	XtInputCallbackProc   ie_proc;
+	XtPointer	      ie_closure;
+	struct _InputEvent    *ie_next;
+	struct _InputEvent    *ie_oq;
+	XtAppContext	      app;
+	int		      ie_source;
+	XtInputMask	      ie_condition;
+} InputEvent;
+
+typedef struct _SignalEventRec {
+	XtSignalCallbackProc  se_proc;
+	XtPointer	      se_closure;
+	struct _SignalEventRec *se_next;
+	XtAppContext	      app;
+	Boolean		      se_notice;
+} SignalEventRec;
+
+typedef struct _WorkProcRec {
+	XtWorkProc proc;
+	XtPointer closure;
+	struct _WorkProcRec *next;
+	XtAppContext app;
+} WorkProcRec;
+
+
+typedef struct 
+{
+#ifndef USE_POLL
+  	fd_set rmask;
+	fd_set wmask;
+	fd_set emask;
+#endif
+	int	nfds;
+} FdStruct;
+
+typedef struct _LangProcRec {
+    XtLanguageProc	proc;
+    XtPointer		closure;
+} LangProcRec;
+
+typedef struct _ProcessContextRec {
+    XtAppContext	defaultAppContext;
+    XtAppContext	appContextList;
+    ConverterTable	globalConverterTable;
+    LangProcRec		globalLangProcRec;
+} ProcessContextRec, *ProcessContext;
+
+typedef struct {
+    char*	start;
+    char*	current;
+    int		bytes_remaining;
+} Heap;
+
+typedef struct _DestroyRec DestroyRec;
+
+
+typedef struct _XtAppStruct {
+    XtAppContext next;		/* link to next app in process context */
+    ProcessContext process;	/* back pointer to our process context */
+    InternalCallbackList destroy_callbacks;
+    Display **list;
+    TimerEventRec *timerQueue;
+    WorkProcRec *workQueue;
+    InputEvent **input_list;
+    InputEvent *outstandingQueue;
+    SignalEventRec *signalQueue;
+    XrmDatabase errorDB;
+    XtErrorMsgHandler errorMsgHandler, warningMsgHandler;
+    XtErrorHandler errorHandler, warningHandler;
+    struct _ActionListRec *action_table;
+    ConverterTable converterTable;
+    unsigned long selectionTimeout;
+    FdStruct fds;
+    short count;			/* num of assigned entries in list */
+    short max;				/* allocate size of list */
+    short last;
+    short input_count;
+    short input_max;			/* elts input_list init'd with */
+    Boolean sync, being_destroyed, error_inited;
+#ifndef NO_IDENTIFY_WINDOWS
+    Boolean identify_windows;		/* debugging hack */
+#endif
+    Heap heap;
+    String * fallback_resources;	/* Set by XtAppSetFallbackResources. */
+    struct _ActionHookRec* action_hook_list;
+    struct _BlockHookRec* block_hook_list;
+    int destroy_list_size;		/* state data for 2-phase destroy */
+    int destroy_count;
+    int dispatch_level;
+    DestroyRec* destroy_list;
+    Widget in_phase2_destroy;
+    LangProcRec langProcRec;
+    struct _TMBindCacheRec * free_bindings;
+    String display_name_tried;
+    Display **dpy_destroy_list;
+    int dpy_destroy_count;
+    Boolean exit_flag;
+    Boolean rebuild_fdlist;
+#ifdef XTHREADS
+    LockPtr lock_info;
+    ThreadAppProc lock;
+    ThreadAppProc unlock;
+    ThreadAppYieldLockProc yield_lock;
+    ThreadAppRestoreLockProc restore_lock;
+    ThreadAppProc free_lock;
+#endif
+} XtAppStruct;
+
+extern void _XtHeapInit(Heap* heap);
+extern void _XtHeapFree(Heap* heap);
+
+#ifdef XTTRACEMEMORY
+
+
+extern char *_XtHeapMalloc(
+    Heap*	/* heap */,
+    Cardinal	/* size */,
+    char *	/* file */,
+    int		/* line */
+);
+
+#define _XtHeapAlloc(heap,bytes) _XtHeapMalloc(heap, bytes, __FILE__, __LINE__)
+
+#else /* XTTRACEMEMORY */
+
+extern char* _XtHeapAlloc(
+    Heap*	/* heap */,
+    Cardinal	/* size */
+);
+
+#endif /* XTTRACEMEMORY */
+
+extern void _XtSetDefaultErrorHandlers(
+    XtErrorMsgHandler*	/* errMsg */,
+    XtErrorMsgHandler*	/* warnMsg */,
+    XtErrorHandler*	/* err */,
+    XtErrorHandler*	/* warn */
+);
+
+extern void _XtSetDefaultSelectionTimeout(
+    unsigned long* /* timeout */
+);
+
+extern XtAppContext _XtDefaultAppContext(
+    void
+);
+
+extern ProcessContext _XtGetProcessContext(
+    void
+);
+
+Display *
+_XtAppInit(
+    XtAppContext*	/* app_context_return */,
+    String		/* application_class */,
+    XrmOptionDescRec*	/* options */,
+    Cardinal		/* num_options */,
+    int*		/* argc_in_out */,
+    String**		/* argv_in_out */,
+    String*		/* fallback_resources */
+);
+
+extern void _XtDestroyAppContexts(
+    void
+);
+
+extern void _XtCloseDisplays(
+    XtAppContext	/* app */
+);
+
+extern int _XtAppDestroyCount;
+
+extern int _XtWaitForSomething(
+    XtAppContext	/* app */,
+    _XtBoolean 		/* ignoreEvents */,
+    _XtBoolean 		/* ignoreTimers */,
+    _XtBoolean 		/* ignoreInputs */,
+    _XtBoolean		/* ignoreSignals */,
+    _XtBoolean 		/* block */,
+#ifdef XTHREADS
+    _XtBoolean		/* drop_lock */,
+#endif
+    unsigned long*	/* howlong */
+);
+
+typedef struct _CaseConverterRec *CaseConverterPtr;
+typedef struct _CaseConverterRec {
+    KeySym		start;		/* first KeySym valid in converter */
+    KeySym		stop;		/* last KeySym valid in converter */
+    XtCaseProc		proc;		/* case converter function */
+    CaseConverterPtr	next;		/* next converter record */
+} CaseConverterRec;
+
+typedef struct _ExtensionSelectorRec {
+    XtExtensionSelectProc proc;
+    int min, max;
+    XtPointer client_data;
+} ExtSelectRec;
+
+typedef struct _XtPerDisplayStruct {
+    InternalCallbackList destroy_callbacks;
+    Region region;
+    CaseConverterPtr case_cvt;		/* user-registered case converters */
+    XtKeyProc defaultKeycodeTranslator;
+    XtAppContext appContext;
+    unsigned long keysyms_serial;      /* for tracking MappingNotify events */
+    KeySym *keysyms;                   /* keycode to keysym table */
+    int keysyms_per_keycode;           /* number of keysyms for each keycode*/
+    int min_keycode, max_keycode;      /* range of keycodes */
+    KeySym *modKeysyms;                /* keysym values for modToKeysysm */
+    ModToKeysymTable *modsToKeysyms;   /* modifiers to Keysysms index table*/
+    unsigned char isModifier[32];      /* key-is-modifier-p bit table */
+    KeySym lock_meaning;	       /* Lock modifier meaning */
+    Modifiers mode_switch;	       /* keyboard group modifiers */
+    Modifiers num_lock;		       /* keyboard numlock modifiers */
+    Boolean being_destroyed;
+    Boolean rv;			       /* reverse_video resource */
+    XrmName name;		       /* resolved app name */
+    XrmClass class;		       /* application class */
+    Heap heap;
+    struct _GCrec *GClist;	       /* support for XtGetGC */
+    Drawable **pixmap_tab;             /* ditto for XtGetGC */
+    String language;		       /* XPG language string */
+    XEvent last_event;		       /* last event dispatched */
+    Time last_timestamp;	       /* from last event dispatched */
+    int multi_click_time;	       /* for XtSetMultiClickTime */
+    struct _TMKeyContextRec* tm_context;     /* for XtGetActionKeysym */
+    InternalCallbackList mapping_callbacks;  /* special case for TM */
+    XtPerDisplayInputRec pdi;	       /* state for modal grabs & kbd focus */
+    struct _WWTable *WWtable;	       /* window to widget table */
+    XrmDatabase *per_screen_db;        /* per screen resource databases */
+    XrmDatabase cmd_db;		       /* db from command line, if needed */
+    XrmDatabase server_db;	       /* resource property else .Xdefaults */
+    XtEventDispatchProc* dispatcher_list;
+    ExtSelectRec* ext_select_list;
+    int ext_select_count;
+    Widget hook_object;
+#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
+    Atom rcm_init;			/* ResConfig - initialize */
+    Atom rcm_data;			/* ResConfig - data atom */
+#endif
+} XtPerDisplayStruct, *XtPerDisplay;
+
+typedef struct _PerDisplayTable {
+	Display *dpy;
+	XtPerDisplayStruct perDpy;
+	struct _PerDisplayTable *next;
+} PerDisplayTable, *PerDisplayTablePtr;
+
+extern PerDisplayTablePtr _XtperDisplayList;
+
+extern XtPerDisplay _XtSortPerDisplayList(
+    Display* /* dpy */
+);
+
+extern XtPerDisplay _XtGetPerDisplay(
+    Display*		/* dpy */
+);
+
+extern XtPerDisplayInputRec* _XtGetPerDisplayInput(
+    Display* 		/* dpy */
+);
+
+#if 0
+#ifdef DEBUG
+#define _XtGetPerDisplay(display) \
+    ((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \
+     ? &_XtperDisplayList->perDpy \
+     : _XtSortPerDisplayList(display))
+#define _XtGetPerDisplayInput(display) \
+    ((_XtperDisplayList != NULL && (_XtperDisplayList->dpy == (display))) \
+     ? &_XtperDisplayList->perDpy.pdi \
+     : &_XtSortPerDisplayList(display)->pdi)
+#else
+#define _XtGetPerDisplay(display) \
+    ((_XtperDisplayList->dpy == (display)) \
+     ? &_XtperDisplayList->perDpy \
+     : _XtSortPerDisplayList(display))
+#define _XtGetPerDisplayInput(display) \
+    ((_XtperDisplayList->dpy == (display)) \
+     ? &_XtperDisplayList->perDpy.pdi \
+     : &_XtSortPerDisplayList(display)->pdi)
+#endif /*DEBUG*/
+#endif
+
+extern void _XtDisplayInitialize(
+    Display*		/* dpy */,
+    XtPerDisplay	/* pd */,
+    _Xconst char*	/* name */,
+    XrmOptionDescRec*	/* urlist */,
+    Cardinal 		/* num_urs */,
+    int*		/* argc */,
+    char** 		/* argv */
+);
+
+extern void _XtCacheFlushTag(
+    XtAppContext /* app */,
+    XtPointer	 /* tag */
+);
+
+extern void _XtFreeActions(
+    struct _ActionListRec* /* action_table */
+);
+
+extern void _XtDoPhase2Destroy(
+    XtAppContext /* app */,
+    int		 /* dispatch_level */
+);
+
+extern void _XtDoFreeBindings(
+    XtAppContext /* app */
+);
+
+extern void _XtExtensionSelect(
+    Widget /* widget */
+);
+
+#define _XtSafeToDestroy(app) ((app)->dispatch_level == 0)
+
+extern void _XtAllocWWTable(
+    XtPerDisplay pd
+);
+
+extern void _XtFreeWWTable(
+    XtPerDisplay pd
+);
+
+extern String _XtGetUserName(String dest, int len);
+extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist,
+			Cardinal num_urs, int argc, String *argv,
+			String *applName, String *displayName,
+			String *language);
+
+_XFUNCPROTOEND
+
+#endif /* _XtinitialI_h */
diff --git a/libXt/include/X11/Intrinsic.h b/libXt/include/X11/Intrinsic.h
new file mode 100644
index 000000000..0461b842f
--- /dev/null
+++ b/libXt/include/X11/Intrinsic.h
@@ -0,0 +1,2589 @@
+/* $Xorg: Intrinsic.h,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+			All Rights Reserved
+
+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, and that the name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Intrinsic.h,v 3.8 2001/12/14 19:56:22 dawes Exp $ */
+
+#ifndef _XtIntrinsic_h
+#define _XtIntrinsic_h
+
+#include	<X11/Xlib.h>
+#include	<X11/Xutil.h>
+#include	<X11/Xresource.h>
+#include	<X11/Xfuncproto.h>
+#ifdef XT_BC
+#include <X11/Xos.h>		/* for R4 compatibility */
+#else
+#include <X11/Xosdefs.h>
+#include <string.h>		/* for XtNewString */
+#endif /* XT_BC else */
+
+#define XtSpecificationRelease 6
+
+typedef char *String;
+
+/* We do this in order to get "const" declarations to work right.  We
+ * use _XtString instead of String so that C++ applications can
+ * #define String to something else if they choose, to avoid conflicts
+ * with other C++ libraries.
+ */
+#define _XtString char*
+
+/* _Xt names are private to Xt implementation, do not use in client code */
+#if NeedWidePrototypes
+#define _XtBoolean	int
+#define _XtDimension	unsigned int
+#define _XtKeyCode	unsigned int
+#define _XtPosition	int
+#define _XtXtEnum	unsigned int
+#else
+#define _XtBoolean	Boolean
+#define _XtDimension	Dimension
+#define _XtKeyCode	KeyCode
+#define _XtPosition	Position
+#define _XtXtEnum	XtEnum
+#endif /* NeedWidePrototypes */
+
+#include <stddef.h>
+
+#ifdef VMS
+#define externalref globalref
+#define externaldef(psect) globaldef {"psect"} noshare
+#else
+#define externalref extern
+#define externaldef(psect)
+#endif /* VMS */
+
+#ifndef FALSE
+#define FALSE 0
+#define TRUE 1
+#endif
+
+#define XtNumber(arr)		((Cardinal) (sizeof(arr) / sizeof(arr[0])))
+
+typedef struct _WidgetRec *Widget;
+typedef Widget *WidgetList;
+typedef struct _WidgetClassRec *WidgetClass;
+typedef struct _CompositeRec *CompositeWidget;
+typedef struct _XtActionsRec *XtActionList;
+typedef struct _XtEventRec *XtEventTable;
+
+typedef struct _XtAppStruct *XtAppContext;
+typedef unsigned long	XtValueMask;
+typedef unsigned long	XtIntervalId;
+typedef unsigned long	XtInputId;
+typedef unsigned long	XtWorkProcId;
+typedef unsigned long	XtSignalId;
+typedef unsigned int	XtGeometryMask;
+typedef unsigned long	XtGCMask;   /* Mask of values that are used by widget*/
+typedef unsigned long	Pixel;	    /* Index into colormap		*/
+typedef int		XtCacheType;
+#define			XtCacheNone	  0x001
+#define			XtCacheAll	  0x002
+#define			XtCacheByDisplay  0x003
+#define			XtCacheRefCount	  0x100
+
+/****************************************************************
+ *
+ * System Dependent Definitions; see spec for specific range
+ * requirements.  Do not assume every implementation uses the
+ * same base types!
+ *
+ *
+ * XtArgVal ought to be a union of XtPointer, char *, long, int *, and proc *
+ * but casting to union types is not really supported.
+ *
+ * So the typedef for XtArgVal should be chosen such that
+ *
+ *	sizeof (XtArgVal) >=	sizeof(XtPointer)
+ *				sizeof(char *)
+ *				sizeof(long)
+ *				sizeof(int *)
+ *				sizeof(proc *)
+ *
+ * ArgLists rely heavily on the above typedef.
+ *
+ ****************************************************************/
+#ifdef CRAY
+typedef long		Boolean;
+typedef char*		XtArgVal;
+typedef long		XtEnum;
+#else
+typedef char		Boolean;
+typedef long		XtArgVal;
+typedef unsigned char	XtEnum;
+#endif
+
+typedef unsigned int	Cardinal;
+typedef unsigned short	Dimension;  /* Size in pixels			*/
+typedef short		Position;   /* Offset from 0 coordinate		*/
+
+typedef void*		XtPointer;
+
+/* The type Opaque is NOT part of the Xt standard, do NOT use it. */
+/* (It remains here only for backward compatibility.) */
+typedef XtPointer	Opaque;
+
+#include <X11/Core.h>
+#include <X11/Composite.h>
+#include <X11/Constraint.h>
+#include <X11/Object.h>
+#include <X11/RectObj.h>
+
+typedef struct _TranslationData *XtTranslations;
+typedef struct _TranslationData *XtAccelerators;
+typedef unsigned int Modifiers;
+
+typedef void (*XtActionProc)(
+    Widget 		/* widget */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+typedef XtActionProc* XtBoundActions;
+
+typedef struct _XtActionsRec{
+    String	 string;
+    XtActionProc proc;
+} XtActionsRec;
+
+typedef enum {
+/* address mode		parameter representation    */
+/* ------------		------------------------    */
+    XtAddress,		/* address		    */
+    XtBaseOffset,	/* offset		    */
+    XtImmediate,	/* constant		    */
+    XtResourceString,	/* resource name string	    */
+    XtResourceQuark,	/* resource name quark	    */
+    XtWidgetBaseOffset,	/* offset from ancestor	    */
+    XtProcedureArg	/* procedure to invoke	    */
+} XtAddressMode;
+
+typedef struct {
+    XtAddressMode   address_mode;
+    XtPointer	    address_id;
+    Cardinal	    size;
+} XtConvertArgRec, *XtConvertArgList;
+
+typedef void (*XtConvertArgProc)(
+    Widget 		/* widget */,
+    Cardinal*		/* size */,
+    XrmValue*		/* value */
+);
+
+typedef struct {
+    XtGeometryMask request_mode;
+    Position x, y;
+    Dimension width, height, border_width;
+    Widget sibling;
+    int stack_mode;   /* Above, Below, TopIf, BottomIf, Opposite, DontChange */
+} XtWidgetGeometry;
+
+/* Additions to Xlib geometry requests: ask what would happen, don't do it */
+#define XtCWQueryOnly	(1 << 7)
+
+/* Additions to Xlib stack modes: don't change stack order */
+#define XtSMDontChange	5
+
+typedef void (*XtConverter)( /* obsolete */
+    XrmValue*		/* args */,
+    Cardinal*		/* num_args */,
+    XrmValue*		/* from */,
+    XrmValue*		/* to */
+);
+
+typedef Boolean (*XtTypeConverter)(
+    Display*		/* dpy */,
+    XrmValue*		/* args */,
+    Cardinal*		/* num_args */,
+    XrmValue*		/* from */,
+    XrmValue*		/* to */,
+    XtPointer*		/* converter_data */
+);
+
+typedef void (*XtDestructor)(
+    XtAppContext	/* app */,
+    XrmValue*		/* to */,
+    XtPointer 		/* converter_data */,
+    XrmValue*		/* args */,
+    Cardinal*		/* num_args */
+);
+
+typedef Opaque XtCacheRef;
+
+typedef Opaque XtActionHookId;
+
+typedef void (*XtActionHookProc)(
+    Widget		/* w */,
+    XtPointer		/* client_data */,
+    String		/* action_name */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+typedef unsigned long XtBlockHookId;
+
+typedef void (*XtBlockHookProc)(
+    XtPointer		/* client_data */
+);
+
+typedef void (*XtKeyProc)(
+    Display*		/* dpy */,
+    _XtKeyCode 		/* keycode */,
+    Modifiers		/* modifiers */,
+    Modifiers*		/* modifiers_return */,
+    KeySym*		/* keysym_return */
+);
+
+typedef void (*XtCaseProc)(
+    Display*		/* display */,
+    KeySym		/* keysym */,
+    KeySym*		/* lower_return */,
+    KeySym*		/* upper_return */
+);
+
+typedef void (*XtEventHandler)(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,
+    XEvent*		/* event */,
+    Boolean*		/* continue_to_dispatch */
+);
+typedef unsigned long EventMask;
+
+typedef enum {XtListHead, XtListTail } XtListPosition;
+
+typedef unsigned long	XtInputMask;
+#define XtInputNoneMask		0L
+#define XtInputReadMask		(1L<<0)
+#define XtInputWriteMask	(1L<<1)
+#define XtInputExceptMask	(1L<<2)
+
+typedef void (*XtTimerCallbackProc)(
+    XtPointer 		/* closure */,
+    XtIntervalId*	/* id */
+);
+
+typedef void (*XtInputCallbackProc)(
+    XtPointer 		/* closure */,
+    int*		/* source */,
+    XtInputId*		/* id */
+);
+
+typedef void (*XtSignalCallbackProc)(
+    XtPointer		/* closure */,
+    XtSignalId*		/* id */
+);
+
+typedef struct {
+    String	name;
+    XtArgVal	value;
+} Arg, *ArgList;
+
+typedef XtPointer	XtVarArgsList;
+
+typedef void (*XtCallbackProc)(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,	/* data the application registered */
+    XtPointer 		/* call_data */	/* callback specific data */
+);
+
+typedef struct _XtCallbackRec {
+    XtCallbackProc  callback;
+    XtPointer	    closure;
+} XtCallbackRec, *XtCallbackList;
+
+typedef enum {
+	XtCallbackNoList,
+	XtCallbackHasNone,
+	XtCallbackHasSome
+} XtCallbackStatus;
+
+typedef enum  {
+    XtGeometryYes,	  /* Request accepted. */
+    XtGeometryNo,	  /* Request denied. */
+    XtGeometryAlmost,	  /* Request denied, but willing to take replyBox. */
+    XtGeometryDone	  /* Request accepted and done. */
+} XtGeometryResult;
+
+typedef enum {XtGrabNone, XtGrabNonexclusive, XtGrabExclusive} XtGrabKind;
+
+typedef struct {
+    Widget  shell_widget;
+    Widget  enable_widget;
+} XtPopdownIDRec, *XtPopdownID;
+
+typedef struct _XtResource {
+    String	resource_name;	/* Resource name			    */
+    String	resource_class;	/* Resource class			    */
+    String	resource_type;	/* Representation type desired		    */
+    Cardinal	resource_size;	/* Size in bytes of representation	    */
+    Cardinal	resource_offset;/* Offset from base to put resource value   */
+    String	default_type;	/* representation type of specified default */
+    XtPointer	default_addr;	/* Address of default resource		    */
+} XtResource, *XtResourceList;
+
+typedef void (*XtResourceDefaultProc)(
+    Widget	/* widget */,
+    int		/* offset */,
+    XrmValue*	/* value */
+);
+
+typedef String (*XtLanguageProc)(
+    Display*	/* dpy */,
+    String	/* xnl */,
+    XtPointer	/* client_data */
+);
+
+typedef void (*XtErrorMsgHandler)(
+    String 		/* name */,
+    String		/* type */,
+    String		/* class */,
+    String		/* default */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+typedef void (*XtErrorHandler)(
+  String		/* msg */
+);
+
+typedef void (*XtCreatePopupChildProc)(
+    Widget	/* shell */
+);
+
+typedef Boolean (*XtWorkProc)(
+    XtPointer 		/* closure */	/* data the application registered */
+);
+
+typedef struct {
+    char match;
+    String substitution;
+} SubstitutionRec, *Substitution;
+
+typedef Boolean (*XtFilePredicate)(
+   String /* filename */
+);
+
+typedef XtPointer XtRequestId;
+
+typedef Boolean (*XtConvertSelectionProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */,
+    Atom*		/* target */,
+    Atom*		/* type_return */,
+    XtPointer*		/* value_return */,
+    unsigned long*	/* length_return */,
+    int*		/* format_return */
+);
+
+typedef void (*XtLoseSelectionProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */
+);
+
+typedef void (*XtSelectionDoneProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */,
+    Atom*		/* target */
+);
+
+typedef void (*XtSelectionCallbackProc)(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,
+    Atom*		/* selection */,
+    Atom*		/* type */,
+    XtPointer 		/* value */,
+    unsigned long*	/* length */,
+    int*		/* format */
+);
+
+typedef void (*XtLoseSelectionIncrProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */,
+    XtPointer 		/* client_data */
+);
+
+typedef void (*XtSelectionDoneIncrProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */,
+    Atom*		/* target */,
+    XtRequestId*	/* receiver_id */,
+    XtPointer 		/* client_data */
+);
+
+typedef Boolean (*XtConvertSelectionIncrProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */,
+    Atom*		/* target */,
+    Atom*		/* type */,
+    XtPointer*		/* value */,
+    unsigned long*	/* length */,
+    int*		/* format */,
+    unsigned long*	/* max_length */,
+    XtPointer 		/* client_data */,
+    XtRequestId*	/* receiver_id */
+);
+
+typedef void (*XtCancelConvertSelectionProc)(
+    Widget 		/* widget */,
+    Atom*		/* selection */,
+    Atom*		/* target */,
+    XtRequestId*	/* receiver_id */,
+    XtPointer 		/* client_data */
+);
+
+typedef Boolean (*XtEventDispatchProc)(
+    XEvent*		/* event */
+);
+
+typedef void (*XtExtensionSelectProc)(
+    Widget		/* widget */,
+    int*		/* event_types */,
+    XtPointer*		/* select_data */,
+    int			/* count */,
+    XtPointer		/* client_data */
+);
+
+/***************************************************************
+ *
+ * Exported Interfaces
+ *
+ ****************************************************************/
+
+_XFUNCPROTOBEGIN
+
+extern Boolean XtConvertAndStore(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* from_type */,
+    XrmValue*		/* from */,
+    _Xconst _XtString 	/* to_type */,
+    XrmValue*		/* to_in_out */
+);
+
+extern Boolean XtCallConverter(
+    Display*		/* dpy */,
+    XtTypeConverter 	/* converter */,
+    XrmValuePtr 	/* args */,
+    Cardinal 		/* num_args */,
+    XrmValuePtr 	/* from */,
+    XrmValue*		/* to_in_out */,
+    XtCacheRef*		/* cache_ref_return */
+);
+
+extern Boolean XtDispatchEvent(
+    XEvent* 		/* event */
+);
+
+extern Boolean XtCallAcceptFocus(
+    Widget 		/* widget */,
+    Time*		/* time */
+);
+
+extern Boolean XtPeekEvent( /* obsolete */
+    XEvent*		/* event_return */
+);
+
+extern Boolean XtAppPeekEvent(
+    XtAppContext 	/* app_context */,
+    XEvent*		/* event_return */
+);
+
+extern Boolean XtIsSubclass(
+    Widget 		/* widget */,
+    WidgetClass 	/* widgetClass */
+);
+
+extern Boolean XtIsObject(
+    Widget 		/* object */
+);
+
+extern Boolean _XtCheckSubclassFlag( /* implementation-private */
+    Widget		/* object */,
+    _XtXtEnum		/* type_flag */
+);
+
+extern Boolean _XtIsSubclassOf( /* implementation-private */
+    Widget		/* object */,
+    WidgetClass		/* widget_class */,
+    WidgetClass		/* flag_class */,
+    _XtXtEnum		/* type_flag */
+);
+
+extern Boolean XtIsManaged(
+    Widget 		/* rectobj */
+);
+
+extern Boolean XtIsRealized(
+    Widget 		/* widget */
+);
+
+extern Boolean XtIsSensitive(
+    Widget 		/* widget */
+);
+
+extern Boolean XtOwnSelection(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Time 		/* time */,
+    XtConvertSelectionProc /* convert */,
+    XtLoseSelectionProc	/* lose */,
+    XtSelectionDoneProc /* done */
+);
+
+extern Boolean XtOwnSelectionIncremental(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Time 		/* time */,
+    XtConvertSelectionIncrProc	/* convert_callback */,
+    XtLoseSelectionIncrProc	/* lose_callback */,
+    XtSelectionDoneIncrProc	/* done_callback */,
+    XtCancelConvertSelectionProc /* cancel_callback */,
+    XtPointer 		/* client_data */
+);
+
+extern XtGeometryResult XtMakeResizeRequest(
+    Widget 		/* widget */,
+    _XtDimension	/* width */,
+    _XtDimension	/* height */,
+    Dimension*		/* width_return */,
+    Dimension*		/* height_return */
+);
+
+extern void XtTranslateCoords(
+    Widget 		/* widget */,
+    _XtPosition		/* x */,
+    _XtPosition		/* y */,
+    Position*		/* rootx_return */,
+    Position*		/* rooty_return */
+);
+
+extern KeySym* XtGetKeysymTable(
+    Display*		/* dpy */,
+    KeyCode*		/* min_keycode_return */,
+    int*		/* keysyms_per_keycode_return */
+);
+
+extern void XtKeysymToKeycodeList(
+    Display*		/* dpy */,
+    KeySym 		/* keysym */,
+    KeyCode**		/* keycodes_return */,
+    Cardinal*		/* keycount_return */
+);
+
+extern void XtStringConversionWarning( /* obsolete */
+    _Xconst _XtString	/* from_value */,
+    _Xconst _XtString	/* to_type */
+);
+
+extern void XtDisplayStringConversionWarning(
+    Display*	 	/* dpy */,
+    _Xconst _XtString	/* from_value */,
+    _Xconst _XtString	/* to_type */
+);
+
+externalref XtConvertArgRec const colorConvertArgs[];
+externalref XtConvertArgRec const screenConvertArg[];
+
+extern void XtAppAddConverter( /* obsolete */
+    XtAppContext	/* app_context */,
+    _Xconst _XtString	/* from_type */,
+    _Xconst _XtString	/* to_type */,
+    XtConverter 	/* converter */,
+    XtConvertArgList	/* convert_args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtAddConverter( /* obsolete */
+    _Xconst _XtString	/* from_type */,
+    _Xconst _XtString 	/* to_type */,
+    XtConverter 	/* converter */,
+    XtConvertArgList 	/* convert_args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtSetTypeConverter(
+    _Xconst _XtString 	/* from_type */,
+    _Xconst _XtString 	/* to_type */,
+    XtTypeConverter 	/* converter */,
+    XtConvertArgList 	/* convert_args */,
+    Cardinal 		/* num_args */,
+    XtCacheType 	/* cache_type */,
+    XtDestructor 	/* destructor */
+);
+
+extern void XtAppSetTypeConverter(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString 	/* from_type */,
+    _Xconst _XtString 	/* to_type */,
+    XtTypeConverter 	/* converter */,
+    XtConvertArgList 	/* convert_args */,
+    Cardinal 		/* num_args */,
+    XtCacheType 	/* cache_type */,
+    XtDestructor 	/* destructor */
+);
+
+extern void XtConvert( /* obsolete */
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* from_type */,
+    XrmValue*		/* from */,
+    _Xconst _XtString 	/* to_type */,
+    XrmValue*		/* to_return */
+);
+
+extern void XtDirectConvert( /* obsolete */
+    XtConverter 	/* converter */,
+    XrmValuePtr 	/* args */,
+    Cardinal 		/* num_args */,
+    XrmValuePtr 	/* from */,
+    XrmValue*		/* to_return */
+);
+
+/****************************************************************
+ *
+ * Translation Management
+ *
+ ****************************************************************/
+
+extern XtTranslations XtParseTranslationTable(
+    _Xconst _XtString	/* table */
+);
+
+extern XtAccelerators XtParseAcceleratorTable(
+    _Xconst _XtString	/* source */
+);
+
+extern void XtOverrideTranslations(
+    Widget 		/* widget */,
+    XtTranslations 	/* translations */
+);
+
+extern void XtAugmentTranslations(
+    Widget 		/* widget */,
+    XtTranslations 	/* translations */
+);
+
+extern void XtInstallAccelerators(
+    Widget 		/* destination */,
+    Widget		/* source */
+);
+
+extern void XtInstallAllAccelerators(
+    Widget 		/* destination */,
+    Widget		/* source */
+);
+
+extern void XtUninstallTranslations(
+    Widget 		/* widget */
+);
+
+extern void XtAppAddActions(
+    XtAppContext 	/* app_context */,
+    XtActionList 	/* actions */,
+    Cardinal 		/* num_actions */
+);
+
+extern void XtAddActions( /* obsolete */
+    XtActionList 	/* actions */,
+    Cardinal 		/* num_actions */
+);
+
+extern XtActionHookId XtAppAddActionHook(
+    XtAppContext 	/* app_context */,
+    XtActionHookProc 	/* proc */,
+    XtPointer 		/* client_data */
+);
+
+extern void XtRemoveActionHook(
+    XtActionHookId 	/* id */
+);
+
+extern void XtGetActionList(
+    WidgetClass		/* widget_class */,
+    XtActionList*	/* actions_return */,
+    Cardinal*		/* num_actions_return */
+);
+
+extern void XtCallActionProc(
+    Widget		/* widget */,
+    _Xconst _XtString	/* action */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal		/* num_params */
+);
+
+extern void XtRegisterGrabAction(
+    XtActionProc 	/* action_proc */,
+    _XtBoolean 		/* owner_events */,
+    unsigned int 	/* event_mask */,
+    int			/* pointer_mode */,
+    int	 		/* keyboard_mode */
+);
+
+extern void XtSetMultiClickTime(
+    Display*		/* dpy */,
+    int 		/* milliseconds */
+);
+
+extern int XtGetMultiClickTime(
+    Display*		/* dpy */
+);
+
+extern KeySym XtGetActionKeysym(
+    XEvent*		/* event */,
+    Modifiers*		/* modifiers_return */
+);
+
+/***************************************************************
+ *
+ * Keycode and Keysym procedures for translation management
+ *
+ ****************************************************************/
+
+extern void XtTranslateKeycode(
+    Display*		/* dpy */,
+    _XtKeyCode 		/* keycode */,
+    Modifiers 		/* modifiers */,
+    Modifiers*		/* modifiers_return */,
+    KeySym*		/* keysym_return */
+);
+
+extern void XtTranslateKey(
+    Display*		/* dpy */,
+    _XtKeyCode		/* keycode */,
+    Modifiers		/* modifiers */,
+    Modifiers*		/* modifiers_return */,
+    KeySym*		/* keysym_return */
+);
+
+extern void XtSetKeyTranslator(
+    Display*		/* dpy */,
+    XtKeyProc 		/* proc */
+);
+
+extern void XtRegisterCaseConverter(
+    Display*		/* dpy */,
+    XtCaseProc 		/* proc */,
+    KeySym 		/* start */,
+    KeySym 		/* stop */
+);
+
+extern void XtConvertCase(
+    Display*		/* dpy */,
+    KeySym 		/* keysym */,
+    KeySym*		/* lower_return */,
+    KeySym*		/* upper_return */
+);
+
+/****************************************************************
+ *
+ * Event Management
+ *
+ ****************************************************************/
+
+/* XtAllEvents is valid only for XtRemoveEventHandler and
+ * XtRemoveRawEventHandler; don't use it to select events!
+ */
+#define XtAllEvents ((EventMask) -1L)
+
+extern void XtAddEventHandler(
+    Widget 		/* widget */,
+    EventMask 		/* event_mask */,
+    _XtBoolean 		/* nonmaskable */,
+    XtEventHandler 	/* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtRemoveEventHandler(
+    Widget 		/* widget */,
+    EventMask 		/* event_mask */,
+    _XtBoolean 		/* nonmaskable */,
+    XtEventHandler 	/* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtAddRawEventHandler(
+    Widget 		/* widget */,
+    EventMask 		/* event_mask */,
+    _XtBoolean 		/* nonmaskable */,
+    XtEventHandler 	/* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtRemoveRawEventHandler(
+    Widget 		/* widget */,
+    EventMask 		/* event_mask */,
+    _XtBoolean 		/* nonmaskable */,
+    XtEventHandler 	/* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtInsertEventHandler(
+    Widget 		/* widget */,
+    EventMask 		/* event_mask */,
+    _XtBoolean 		/* nonmaskable */,
+    XtEventHandler 	/* proc */,
+    XtPointer 		/* closure */,
+    XtListPosition 	/* position */
+);
+
+extern void XtInsertRawEventHandler(
+    Widget 		/* widget */,
+    EventMask 		/* event_mask */,
+    _XtBoolean 		/* nonmaskable */,
+    XtEventHandler 	/* proc */,
+    XtPointer 		/* closure */,
+    XtListPosition 	/* position */
+);
+
+extern XtEventDispatchProc XtSetEventDispatcher(
+    Display*		/* dpy */,
+    int			/* event_type */,
+    XtEventDispatchProc	/* proc */
+);
+
+extern Boolean XtDispatchEventToWidget(
+    Widget		/* widget */,
+    XEvent*		/* event */
+);
+
+extern void XtInsertEventTypeHandler(
+    Widget		/* widget */,
+    int			/* type */,
+    XtPointer		/* select_data */,
+    XtEventHandler	/* proc */,
+    XtPointer		/* closure */,
+    XtListPosition	/* position */
+);
+
+extern void XtRemoveEventTypeHandler(
+    Widget		/* widget */,
+    int			/* type */,
+    XtPointer		/* select_data */,
+    XtEventHandler	/* proc */,
+    XtPointer		/* closure */
+);
+
+extern EventMask XtBuildEventMask(
+    Widget 		/* widget */
+);
+
+extern void XtRegisterExtensionSelector(
+    Display*		/* dpy */,
+    int			/* min_event_type */,
+    int			/* max_event_type */,
+    XtExtensionSelectProc /* proc */,
+    XtPointer		/* client_data */
+);
+
+extern void XtAddGrab(
+    Widget 		/* widget */,
+    _XtBoolean 		/* exclusive */,
+    _XtBoolean 		/* spring_loaded */
+);
+
+extern void XtRemoveGrab(
+    Widget 		/* widget */
+);
+
+extern void XtProcessEvent( /* obsolete */
+    XtInputMask 		/* mask */
+);
+
+extern void XtAppProcessEvent(
+    XtAppContext 		/* app_context */,
+    XtInputMask 		/* mask */
+);
+
+extern void XtMainLoop( /* obsolete */
+    void
+);
+
+extern void XtAppMainLoop(
+    XtAppContext 		/* app_context */
+);
+
+extern void XtAddExposureToRegion(
+    XEvent*		/* event */,
+    Region 		/* region */
+);
+
+extern void XtSetKeyboardFocus(
+    Widget		/* subtree */,
+    Widget 		/* descendent */
+);
+
+extern Widget XtGetKeyboardFocusWidget(
+    Widget		/* widget */
+);
+
+extern XEvent* XtLastEventProcessed(
+    Display*		/* dpy */
+);
+
+extern Time XtLastTimestampProcessed(
+    Display*		/* dpy */
+);
+
+/****************************************************************
+ *
+ * Event Gathering Routines
+ *
+ ****************************************************************/
+
+extern XtIntervalId XtAddTimeOut( /* obsolete */
+    unsigned long 	/* interval */,
+    XtTimerCallbackProc /* proc */,
+    XtPointer 		/* closure */
+);
+
+extern XtIntervalId XtAppAddTimeOut(
+    XtAppContext 	/* app_context */,
+    unsigned long 	/* interval */,
+    XtTimerCallbackProc /* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtRemoveTimeOut(
+    XtIntervalId 	/* timer */
+);
+
+extern XtInputId XtAddInput( /* obsolete */
+    int 		/* source */,
+    XtPointer 		/* condition */,
+    XtInputCallbackProc /* proc */,
+    XtPointer 		/* closure */
+);
+
+extern XtInputId XtAppAddInput(
+    XtAppContext       	/* app_context */,
+    int 		/* source */,
+    XtPointer 		/* condition */,
+    XtInputCallbackProc /* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtRemoveInput(
+    XtInputId 		/* id */
+);
+
+extern XtSignalId XtAddSignal(
+    XtSignalCallbackProc /* proc */,
+    XtPointer		/* closure */);
+
+extern XtSignalId XtAppAddSignal(
+    XtAppContext       	/* app_context */,
+    XtSignalCallbackProc /* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void XtRemoveSignal(
+    XtSignalId 		/* id */
+);
+
+extern void XtNoticeSignal(
+    XtSignalId		/* id */
+);
+
+extern void XtNextEvent( /* obsolete */
+    XEvent* 		/* event */
+);
+
+extern void XtAppNextEvent(
+    XtAppContext 	/* app_context */,
+    XEvent*		/* event_return */
+);
+
+#define XtIMXEvent		1
+#define XtIMTimer		2
+#define XtIMAlternateInput	4
+#define XtIMSignal		8
+#define XtIMAll (XtIMXEvent | XtIMTimer | XtIMAlternateInput | XtIMSignal)
+
+extern Boolean XtPending( /* obsolete */
+    void
+);
+
+extern XtInputMask XtAppPending(
+    XtAppContext 	/* app_context */
+);
+
+extern XtBlockHookId XtAppAddBlockHook(
+    XtAppContext 	/* app_context */,
+    XtBlockHookProc 	/* proc */,
+    XtPointer 		/* client_data */
+);
+
+extern void XtRemoveBlockHook(
+    XtBlockHookId 	/* id */
+);
+
+/****************************************************************
+ *
+ * Random utility routines
+ *
+ ****************************************************************/
+
+#define XtIsRectObj(object)	(_XtCheckSubclassFlag(object, (XtEnum)0x02))
+#define XtIsWidget(object)	(_XtCheckSubclassFlag(object, (XtEnum)0x04))
+#define XtIsComposite(widget)	(_XtCheckSubclassFlag(widget, (XtEnum)0x08))
+#define XtIsConstraint(widget)	(_XtCheckSubclassFlag(widget, (XtEnum)0x10))
+#define XtIsShell(widget)	(_XtCheckSubclassFlag(widget, (XtEnum)0x20))
+
+#undef XtIsOverrideShell
+extern Boolean XtIsOverrideShell(Widget /* object */);
+#define XtIsOverrideShell(widget) \
+    (_XtIsSubclassOf(widget, (WidgetClass)overrideShellWidgetClass, \
+		     (WidgetClass)shellWidgetClass, (XtEnum)0x20))
+
+#define XtIsWMShell(widget)	(_XtCheckSubclassFlag(widget, (XtEnum)0x40))
+
+#undef XtIsVendorShell
+extern Boolean XtIsVendorShell(Widget /* object */);
+#define XtIsVendorShell(widget)	\
+    (_XtIsSubclassOf(widget, (WidgetClass)vendorShellWidgetClass, \
+		     (WidgetClass)wmShellWidgetClass, (XtEnum)0x40))
+
+#undef XtIsTransientShell
+extern Boolean XtIsTransientShell(Widget /* object */);
+#define XtIsTransientShell(widget) \
+    (_XtIsSubclassOf(widget, (WidgetClass)transientShellWidgetClass, \
+		     (WidgetClass)wmShellWidgetClass, (XtEnum)0x40))
+#define XtIsTopLevelShell(widget) (_XtCheckSubclassFlag(widget, (XtEnum)0x80))
+
+#undef XtIsApplicationShell
+extern Boolean XtIsApplicationShell(Widget /* object */);
+#define XtIsApplicationShell(widget) \
+    (_XtIsSubclassOf(widget, (WidgetClass)applicationShellWidgetClass, \
+		     (WidgetClass)topLevelShellWidgetClass, (XtEnum)0x80))
+
+#undef XtIsSessionShell
+extern Boolean XtIsSessionShell(Widget /* object */);
+#define XtIsSessionShell(widget) \
+    (_XtIsSubclassOf(widget, (WidgetClass)sessionShellWidgetClass, \
+		     (WidgetClass)topLevelShellWidgetClass, (XtEnum)0x80))
+
+extern void XtRealizeWidget(
+    Widget 		/* widget */
+);
+
+void XtUnrealizeWidget(
+    Widget 		/* widget */
+);
+
+extern void XtDestroyWidget(
+    Widget 		/* widget */
+);
+
+extern void XtSetSensitive(
+    Widget 		/* widget */,
+    _XtBoolean 		/* sensitive */
+);
+
+extern void XtSetMappedWhenManaged(
+    Widget 		/* widget */,
+    _XtBoolean 		/* mapped_when_managed */
+);
+
+extern Widget XtNameToWidget(
+    Widget 		/* reference */,
+    _Xconst _XtString	/* names */
+);
+
+extern Widget XtWindowToWidget(
+    Display*		/* display */,
+    Window 		/* window */
+);
+
+extern XtPointer XtGetClassExtension(
+    WidgetClass		/* object_class */,
+    Cardinal		/* byte_offset */,
+    XrmQuark		/* type */,
+    long		/* version */,
+    Cardinal		/* record_size */
+);
+
+/***************************************************************
+ *
+ * Arg lists
+ *
+ ****************************************************************/
+
+
+#define XtSetArg(arg, n, d) \
+    ((void)( (arg).name = (n), (arg).value = (XtArgVal)(d) ))
+
+extern ArgList XtMergeArgLists(
+    ArgList 		/* args1 */,
+    Cardinal 		/* num_args1 */,
+    ArgList 		/* args2 */,
+    Cardinal 		/* num_args2 */
+);
+
+/***************************************************************
+ *
+ * Vararg lists
+ *
+ ****************************************************************/
+
+#define XtVaNestedList  "XtVaNestedList"
+#define XtVaTypedArg    "XtVaTypedArg"
+
+extern XtVarArgsList XtVaCreateArgsList(
+    XtPointer		/*unused*/, ...
+) _X_SENTINEL(0);
+
+/*************************************************************
+ *
+ * Information routines
+ *
+ ************************************************************/
+
+#ifndef _XtIntrinsicP_h
+
+/* We're not included from the private file, so define these */
+
+extern Display *XtDisplay(
+    Widget 		/* widget */
+);
+
+extern Display *XtDisplayOfObject(
+    Widget 		/* object */
+);
+
+extern Screen *XtScreen(
+    Widget 		/* widget */
+);
+
+extern Screen *XtScreenOfObject(
+    Widget 		/* object */
+);
+
+extern Window XtWindow(
+    Widget 		/* widget */
+);
+
+extern Window XtWindowOfObject(
+    Widget 		/* object */
+);
+
+extern String XtName(
+    Widget 		/* object */
+);
+
+extern WidgetClass XtSuperclass(
+    Widget 		/* object */
+);
+
+extern WidgetClass XtClass(
+    Widget 		/* object */
+);
+
+extern Widget XtParent(
+    Widget 		/* widget */
+);
+
+#endif /*_XtIntrinsicP_h*/
+
+#undef XtMapWidget
+extern void XtMapWidget(Widget /* w */);
+#define XtMapWidget(widget)	XMapWindow(XtDisplay(widget), XtWindow(widget))
+
+#undef XtUnmapWidget
+extern void XtUnmapWidget(Widget /* w */);
+#define XtUnmapWidget(widget)	\
+		XUnmapWindow(XtDisplay(widget), XtWindow(widget))
+
+extern void XtAddCallback(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* callback_name */,
+    XtCallbackProc 	/* callback */,
+    XtPointer 		/* closure */
+);
+
+extern void XtRemoveCallback(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* callback_name */,
+    XtCallbackProc 	/* callback */,
+    XtPointer 		/* closure */
+);
+
+extern void XtAddCallbacks(
+    Widget 		/* widget */,
+    _Xconst _XtString	/* callback_name */,
+    XtCallbackList 	/* callbacks */
+);
+
+extern void XtRemoveCallbacks(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* callback_name */,
+    XtCallbackList 	/* callbacks */
+);
+
+extern void XtRemoveAllCallbacks(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* callback_name */
+);
+
+
+extern void XtCallCallbacks(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* callback_name */,
+    XtPointer 		/* call_data */
+);
+
+extern void XtCallCallbackList(
+    Widget		/* widget */,
+    XtCallbackList 	/* callbacks */,
+    XtPointer 		/* call_data */
+);
+
+extern XtCallbackStatus XtHasCallbacks(
+    Widget 		/* widget */,
+    _Xconst _XtString 	/* callback_name */
+);
+
+/****************************************************************
+ *
+ * Geometry Management
+ *
+ ****************************************************************/
+
+
+extern XtGeometryResult XtMakeGeometryRequest(
+    Widget 		/* widget */,
+    XtWidgetGeometry*	/* request */,
+    XtWidgetGeometry*	/* reply_return */
+);
+
+extern XtGeometryResult XtQueryGeometry(
+    Widget 		/* widget */,
+    XtWidgetGeometry*	/* intended */,
+    XtWidgetGeometry*	/* preferred_return */
+);
+
+extern Widget XtCreatePopupShell(
+    _Xconst _XtString	/* name */,
+    WidgetClass 	/* widgetClass */,
+    Widget 		/* parent */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtVaCreatePopupShell(
+    _Xconst _XtString	/* name */,
+    WidgetClass		/* widgetClass */,
+    Widget		/* parent */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtPopup(
+    Widget 		/* popup_shell */,
+    XtGrabKind 		/* grab_kind */
+);
+
+extern void XtPopupSpringLoaded(
+    Widget 		/* popup_shell */
+);
+
+extern void XtCallbackNone(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,
+    XtPointer 		/* call_data */
+);
+
+extern void XtCallbackNonexclusive(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,
+    XtPointer 		/* call_data */
+);
+
+extern void XtCallbackExclusive(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,
+    XtPointer 		/* call_data */
+);
+
+extern void XtPopdown(
+    Widget 		/* popup_shell */
+);
+
+extern void XtCallbackPopdown(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,
+    XtPointer 		/* call_data */
+);
+
+extern void XtMenuPopupAction(
+    Widget 		/* widget */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern Widget XtCreateWidget(
+    _Xconst _XtString 	/* name */,
+    WidgetClass 	/* widget_class */,
+    Widget 		/* parent */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtCreateManagedWidget(
+    _Xconst _XtString 	/* name */,
+    WidgetClass 	/* widget_class */,
+    Widget 		/* parent */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtVaCreateWidget(
+    _Xconst _XtString	/* name */,
+    WidgetClass		/* widget */,
+    Widget		/* parent */,
+    ...
+) _X_SENTINEL(0);
+
+extern Widget XtVaCreateManagedWidget(
+    _Xconst _XtString	/* name */,
+    WidgetClass		/* widget_class */,
+    Widget		/* parent */,
+    ...
+) _X_SENTINEL(0);
+
+extern Widget XtCreateApplicationShell( /* obsolete */
+    _Xconst _XtString 	/* name */,
+    WidgetClass 	/* widget_class */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtAppCreateShell(
+    _Xconst _XtString	/* application_name */,
+    _Xconst _XtString	/* application_class */,
+    WidgetClass 	/* widget_class */,
+    Display*		/* display */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtVaAppCreateShell(
+    _Xconst _XtString	/* application_name */,
+    _Xconst _XtString	/* application_class */,
+    WidgetClass		/* widget_class */,
+    Display*		/* display */,
+    ...
+) _X_SENTINEL(0);
+
+/****************************************************************
+ *
+ * Toolkit initialization
+ *
+ ****************************************************************/
+
+extern void XtToolkitInitialize(
+    void
+);
+
+extern XtLanguageProc XtSetLanguageProc(
+    XtAppContext	/* app_context */,
+    XtLanguageProc	/* proc */,
+    XtPointer		/* client_data */
+);
+
+extern void XtDisplayInitialize(
+    XtAppContext 	/* app_context */,
+    Display*		/* dpy */,
+    _Xconst _XtString	/* application_name */,
+    _Xconst _XtString	/* application_class */,
+    XrmOptionDescRec* 	/* options */,
+    Cardinal 		/* num_options */,
+    int*		/* argc */,
+    char**		/* argv */
+);
+
+extern Widget XtOpenApplication(
+    XtAppContext*	/* app_context_return */,
+    _Xconst _XtString	/* application_class */,
+    XrmOptionDescList 	/* options */,
+    Cardinal 		/* num_options */,
+    int*		/* argc_in_out */,
+    String*		/* argv_in_out */,
+    String*		/* fallback_resources */,
+    WidgetClass		/* widget_class */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtVaOpenApplication(
+    XtAppContext*	/* app_context_return */,
+    _Xconst _XtString	/* application_class */,
+    XrmOptionDescList	/* options */,
+    Cardinal		/* num_options */,
+    int*		/* argc_in_out */,
+    String*		/* argv_in_out */,
+    String*		/* fallback_resources */,
+    WidgetClass		/* widget_class */,
+    ...
+) _X_SENTINEL(0);
+
+extern Widget XtAppInitialize( /* obsolete */
+    XtAppContext*	/* app_context_return */,
+    _Xconst _XtString	/* application_class */,
+    XrmOptionDescList 	/* options */,
+    Cardinal 		/* num_options */,
+    int*		/* argc_in_out */,
+    String*		/* argv_in_out */,
+    String*		/* fallback_resources */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern Widget XtVaAppInitialize( /* obsolete */
+    XtAppContext*	/* app_context_return */,
+    _Xconst _XtString	/* application_class */,
+    XrmOptionDescList	/* options */,
+    Cardinal		/* num_options */,
+    int*		/* argc_in_out */,
+    String*		/* argv_in_out */,
+    String*		/* fallback_resources */,
+    ...
+) _X_SENTINEL(0);
+
+extern Widget XtInitialize( /* obsolete */
+    _Xconst _XtString 	/* shell_name */,
+    _Xconst _XtString 	/* application_class */,
+    XrmOptionDescRec* 	/* options */,
+    Cardinal 		/* num_options */,
+    int*		/* argc */,
+    char**		/* argv */
+);
+
+extern Display *XtOpenDisplay(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString	/* display_string */,
+    _Xconst _XtString	/* application_name */,
+    _Xconst _XtString	/* application_class */,
+    XrmOptionDescRec*	/* options */,
+    Cardinal 		/* num_options */,
+    int*		/* argc */,
+    char**		/* argv */
+);
+
+extern XtAppContext XtCreateApplicationContext(
+    void
+);
+
+extern void XtAppSetFallbackResources(
+    XtAppContext 	/* app_context */,
+    String*		/* specification_list */
+);
+
+extern void XtDestroyApplicationContext(
+    XtAppContext 	/* app_context */
+);
+
+extern void XtInitializeWidgetClass(
+    WidgetClass 	/* widget_class */
+);
+
+extern XtAppContext XtWidgetToApplicationContext(
+    Widget 		/* widget */
+);
+
+extern XtAppContext XtDisplayToApplicationContext(
+    Display*		/* dpy */
+);
+
+extern XrmDatabase XtDatabase(
+    Display*		/* dpy */
+);
+
+extern XrmDatabase XtScreenDatabase(
+    Screen*		/* screen */
+);
+
+extern void XtCloseDisplay(
+    Display*		/* dpy */
+);
+
+extern void XtGetApplicationResources(
+    Widget 		/* widget */,
+    XtPointer 		/* base */,
+    XtResourceList 	/* resources */,
+    Cardinal 		/* num_resources */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtVaGetApplicationResources(
+    Widget		/* widget */,
+    XtPointer		/* base */,
+    XtResourceList	/* resources */,
+    Cardinal		/* num_resources */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtGetSubresources(
+    Widget 		/* widget */,
+    XtPointer 		/* base */,
+    _Xconst _XtString 	/* name */,
+    _Xconst _XtString 	/* class */,
+    XtResourceList 	/* resources */,
+    Cardinal 		/* num_resources */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtVaGetSubresources(
+    Widget		/* widget */,
+    XtPointer		/* base */,
+    _Xconst _XtString	/* name */,
+    _Xconst _XtString	/* class */,
+    XtResourceList	/* resources */,
+    Cardinal		/* num_resources */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtSetValues(
+    Widget 		/* widget */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtVaSetValues(
+    Widget		/* widget */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtGetValues(
+    Widget 		/* widget */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtVaGetValues(
+    Widget		/* widget */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtSetSubvalues(
+    XtPointer 		/* base */,
+    XtResourceList 	/* resources */,
+    Cardinal 		/* num_resources */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtVaSetSubvalues(
+    XtPointer		/* base */,
+    XtResourceList	/* resources */,
+    Cardinal		/* num_resources */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtGetSubvalues(
+    XtPointer 		/* base */,
+    XtResourceList 	/* resources */,
+    Cardinal 		/* num_resources */,
+    ArgList 		/* args */,
+    Cardinal 		/* num_args */
+);
+
+extern void XtVaGetSubvalues(
+    XtPointer		/* base */,
+    XtResourceList	/* resources */,
+    Cardinal		/* num_resources */,
+    ...
+) _X_SENTINEL(0);
+
+extern void XtGetResourceList(
+    WidgetClass 	/* widget_class */,
+    XtResourceList*	/* resources_return */,
+    Cardinal*		/* num_resources_return */
+);
+
+extern void XtGetConstraintResourceList(
+    WidgetClass 	/* widget_class */,
+    XtResourceList*	/* resources_return */,
+    Cardinal*		/* num_resources_return */
+);
+
+#define XtUnspecifiedPixmap	((Pixmap)2)
+#define XtUnspecifiedShellInt	(-1)
+#define XtUnspecifiedWindow	((Window)2)
+#define XtUnspecifiedWindowGroup ((Window)3)
+#define XtCurrentDirectory	"XtCurrentDirectory"
+#define XtDefaultForeground	"XtDefaultForeground"
+#define XtDefaultBackground	"XtDefaultBackground"
+#define XtDefaultFont		"XtDefaultFont"
+#define XtDefaultFontSet	"XtDefaultFontSet"
+
+#if defined(CRAY)
+#define XtOffset(p_type,field) _Offsetof(p_type,field)
+#else	/* ! CRAY */
+#define XtOffset(p_type,field) \
+	((Cardinal) (((char *) (&(((p_type)NULL)->field))) - ((char *) NULL)))
+#endif /* !CRAY */
+
+#ifdef offsetof
+#define XtOffsetOf(s_type,field) offsetof(s_type,field)
+#else
+#define XtOffsetOf(s_type,field) XtOffset(s_type*,field)
+#endif
+
+/*************************************************************
+ *
+ * Session Management
+ *
+ ************************************************************/
+
+typedef struct _XtCheckpointTokenRec {
+    int		save_type;
+    int		interact_style;
+    Boolean	shutdown;
+    Boolean	fast;
+    Boolean	cancel_shutdown;
+    int		phase;
+    int		interact_dialog_type;	/* return */
+    Boolean	request_cancel;		/* return */
+    Boolean	request_next_phase;	/* return */
+    Boolean	save_success;		/* return */
+    int		type;		/* implementation private */
+    Widget	widget;		/* implementation private */
+} XtCheckpointTokenRec, *XtCheckpointToken;
+
+XtCheckpointToken XtSessionGetToken(
+    Widget		/* widget */
+);
+
+void XtSessionReturnToken(
+    XtCheckpointToken	/* token */
+);
+
+/*************************************************************
+ *
+ * Error Handling
+ *
+ ************************************************************/
+
+extern XtErrorMsgHandler XtAppSetErrorMsgHandler(
+    XtAppContext 	/* app_context */,
+    XtErrorMsgHandler 	/* handler */
+);
+
+extern void XtSetErrorMsgHandler( /* obsolete */
+    XtErrorMsgHandler 	/* handler */
+);
+
+extern XtErrorMsgHandler XtAppSetWarningMsgHandler(
+    XtAppContext 	/* app_context */,
+    XtErrorMsgHandler 	/* handler */
+);
+
+extern void XtSetWarningMsgHandler( /* obsolete */
+    XtErrorMsgHandler 	/* handler */
+);
+
+extern void XtAppErrorMsg(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString 	/* name */,
+    _Xconst _XtString	/* type */,
+    _Xconst _XtString	/* class */,
+    _Xconst _XtString	/* default */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern void XtErrorMsg( /* obsolete */
+    _Xconst _XtString 	/* name */,
+    _Xconst _XtString	/* type */,
+    _Xconst _XtString	/* class */,
+    _Xconst _XtString	/* default */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern void XtAppWarningMsg(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString 	/* name */,
+    _Xconst _XtString 	/* type */,
+    _Xconst _XtString 	/* class */,
+    _Xconst _XtString 	/* default */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern void XtWarningMsg( /* obsolete */
+    _Xconst _XtString	/* name */,
+    _Xconst _XtString	/* type */,
+    _Xconst _XtString	/* class */,
+    _Xconst _XtString	/* default */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern XtErrorHandler XtAppSetErrorHandler(
+    XtAppContext 	/* app_context */,
+    XtErrorHandler 	/* handler */
+);
+
+extern void XtSetErrorHandler( /* obsolete */
+    XtErrorHandler 	/* handler */
+);
+
+extern XtErrorHandler XtAppSetWarningHandler(
+    XtAppContext 	/* app_context */,
+    XtErrorHandler 	/* handler */
+);
+
+extern void XtSetWarningHandler( /* obsolete */
+    XtErrorHandler 	/* handler */
+);
+
+extern void XtAppError(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString	/* message */
+);
+
+extern void XtError( /* obsolete */
+    _Xconst _XtString	/* message */
+);
+
+extern void XtAppWarning(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString	/* message */
+);
+
+extern void XtWarning( /* obsolete */
+    _Xconst _XtString	/* message */
+);
+
+extern XrmDatabase *XtAppGetErrorDatabase(
+    XtAppContext 	/* app_context */
+);
+
+extern XrmDatabase *XtGetErrorDatabase( /* obsolete */
+    void
+);
+
+extern void XtAppGetErrorDatabaseText(
+    XtAppContext 	/* app_context */,
+    _Xconst _XtString	/* name */,
+    _Xconst _XtString	/* type */,
+    _Xconst _XtString	/* class */,
+    _Xconst _XtString 	/* default */,
+    String 		/* buffer_return */,
+    int 		/* nbytes */,
+    XrmDatabase 	/* database */
+);
+
+extern void XtGetErrorDatabaseText( /* obsolete */
+    _Xconst _XtString	/* name */,
+    _Xconst _XtString	/* type */,
+    _Xconst _XtString	/* class */,
+    _Xconst _XtString 	/* default */,
+    String 		/* buffer_return */,
+    int 		/* nbytes */
+);
+
+/****************************************************************
+ *
+ * Memory Management
+ *
+ ****************************************************************/
+
+extern char *XtMalloc(
+    Cardinal 		/* size */
+);
+
+extern char *XtCalloc(
+    Cardinal		/* num */,
+    Cardinal 		/* size */
+);
+
+extern char *XtRealloc(
+    char* 		/* ptr */,
+    Cardinal 		/* num */
+);
+
+extern void XtFree(
+    char*		/* ptr */
+);
+
+#ifdef XTTRACEMEMORY
+
+extern char *_XtMalloc( /* implementation-private */
+    Cardinal	/* size */,
+    char *	/* file */,
+    int	        /* line */
+);
+
+extern char *_XtRealloc( /* implementation-private */
+    char *	/* ptr */,
+    Cardinal    /* size */,
+    char *	/* file */,
+    int		/* line */
+);
+
+extern char *_XtCalloc( /* implementation-private */
+    Cardinal	/* num */,
+    Cardinal 	/* size */,
+    char *	/* file */,
+    int		/* line */
+);
+
+extern void _XtFree( /* implementation-private */
+    char *	/* ptr */
+);
+
+#define XtMalloc(size) _XtMalloc(size, __FILE__, __LINE__)
+#define XtRealloc(ptr,size) _XtRealloc(ptr, size, __FILE__, __LINE__)
+#define XtCalloc(num,size) _XtCalloc(num, size, __FILE__, __LINE__)
+#define XtFree(ptr) _XtFree(ptr)
+
+#endif /* ifdef XTTRACEMEMORY */
+
+#define XtNew(type) ((type *) XtMalloc((unsigned) sizeof(type)))
+
+#undef XtNewString
+extern String XtNewString(String /* str */);
+#define XtNewString(str) \
+    ((str) != NULL ? (strcpy(XtMalloc((unsigned)strlen(str) + 1), str)) : NULL)
+
+/*************************************************************
+ *
+ *  Work procs
+ *
+ **************************************************************/
+
+extern XtWorkProcId XtAddWorkProc( /* obsolete */
+    XtWorkProc 		/* proc */,
+    XtPointer 		/* closure */
+);
+
+extern XtWorkProcId XtAppAddWorkProc(
+    XtAppContext 	/* app_context */,
+    XtWorkProc 		/* proc */,
+    XtPointer 		/* closure */
+);
+
+extern void  XtRemoveWorkProc(
+    XtWorkProcId 	/* id */
+);
+
+
+/****************************************************************
+ *
+ * Graphic Context Management
+ *****************************************************************/
+
+extern GC XtGetGC(
+    Widget 		/* widget */,
+    XtGCMask 		/* valueMask */,
+    XGCValues* 		/* values */
+);
+
+extern GC XtAllocateGC(
+    Widget 		/* widget */,
+    Cardinal		/* depth */,
+    XtGCMask 		/* valueMask */,
+    XGCValues* 		/* values */,
+    XtGCMask		/* dynamicMask */,
+    XtGCMask		/* unusedMask */
+);
+
+/* This implementation of XtDestroyGC differs from the formal specification
+ * for historic backwards compatibility reasons.  As other implementations
+ * may conform to the spec, use of XtReleaseGC is strongly encouraged.
+ */
+extern void XtDestroyGC( /* obsolete */
+    GC 			/* gc */
+);
+
+extern void XtReleaseGC(
+    Widget 		/* object */,
+    GC 			/* gc */
+);
+
+
+
+extern void XtAppReleaseCacheRefs(
+    XtAppContext	/* app_context */,
+    XtCacheRef*		/* cache_ref */
+);
+
+extern void XtCallbackReleaseCacheRef(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,	/* XtCacheRef */
+    XtPointer 		/* call_data */
+);
+
+extern void XtCallbackReleaseCacheRefList(
+    Widget 		/* widget */,
+    XtPointer 		/* closure */,	/* XtCacheRef* */
+    XtPointer 		/* call_data */
+);
+
+extern void XtSetWMColormapWindows(
+    Widget 		/* widget */,
+    Widget*		/* list */,
+    Cardinal		/* count */
+);
+
+extern String XtFindFile(
+    _Xconst _XtString	/* path */,
+    Substitution	/* substitutions */,
+    Cardinal 		/* num_substitutions */,
+    XtFilePredicate	/* predicate */
+);
+
+extern String XtResolvePathname(
+    Display*		/* dpy */,
+    _Xconst _XtString	/* type */,
+    _Xconst _XtString	/* filename */,
+    _Xconst _XtString	/* suffix */,
+    _Xconst _XtString	/* path */,
+    Substitution	/* substitutions */,
+    Cardinal		/* num_substitutions */,
+    XtFilePredicate 	/* predicate */
+);
+
+/****************************************************************
+ *
+ * Selections
+ *
+ *****************************************************************/
+
+#define XT_CONVERT_FAIL (Atom)0x80000001
+
+extern void XtDisownSelection(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Time 		/* time */
+);
+
+extern void XtGetSelectionValue(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Atom 		/* target */,
+    XtSelectionCallbackProc /* callback */,
+    XtPointer 		/* closure */,
+    Time 		/* time */
+);
+
+extern void XtGetSelectionValues(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Atom*		/* targets */,
+    int 		/* count */,
+    XtSelectionCallbackProc /* callback */,
+    XtPointer*		/* closures */,
+    Time 		/* time */
+);
+
+extern void XtAppSetSelectionTimeout(
+    XtAppContext 	/* app_context */,
+    unsigned long 	/* timeout */
+);
+
+extern void XtSetSelectionTimeout( /* obsolete */
+    unsigned long 	/* timeout */
+);
+
+extern unsigned long XtAppGetSelectionTimeout(
+    XtAppContext 	/* app_context */
+);
+
+extern unsigned long XtGetSelectionTimeout( /* obsolete */
+    void
+);
+
+extern XSelectionRequestEvent *XtGetSelectionRequest(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    XtRequestId 	/* request_id */
+);
+
+extern void XtGetSelectionValueIncremental(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Atom 		/* target */,
+    XtSelectionCallbackProc /* selection_callback */,
+    XtPointer 		/* client_data */,
+    Time 		/* time */
+);
+
+extern void XtGetSelectionValuesIncremental(
+    Widget 		/* widget */,
+    Atom 		/* selection */,
+    Atom*		/* targets */,
+    int 		/* count */,
+    XtSelectionCallbackProc /* callback */,
+    XtPointer*		/* client_data */,
+    Time 		/* time */
+);
+
+extern void XtSetSelectionParameters(
+    Widget		/* requestor */,
+    Atom		/* selection */,
+    Atom		/* type */,
+    XtPointer		/* value */,
+    unsigned long	/* length */,
+    int			/* format */
+);
+
+extern void XtGetSelectionParameters(
+    Widget		/* owner */,
+    Atom		/* selection */,
+    XtRequestId		/* request_id */,
+    Atom*		/* type_return */,
+    XtPointer*		/* value_return */,
+    unsigned long*	/* length_return */,
+    int*		/* format_return */
+);
+
+extern void XtCreateSelectionRequest(
+    Widget		/* requestor */,
+    Atom		/* selection */
+);
+
+extern void XtSendSelectionRequest(
+    Widget		/* requestor */,
+    Atom		/* selection */,
+    Time		/* time */
+);
+
+extern void XtCancelSelectionRequest(
+    Widget		/* requestor */,
+    Atom		/* selection */
+);
+
+extern Atom XtReservePropertyAtom(
+    Widget		/* widget */
+);
+
+extern void XtReleasePropertyAtom(
+    Widget		/* widget */,
+    Atom		/* selection */
+);
+
+extern void XtGrabKey(
+    Widget 		/* widget */,
+    _XtKeyCode 		/* keycode */,
+    Modifiers	 	/* modifiers */,
+    _XtBoolean 		/* owner_events */,
+    int 		/* pointer_mode */,
+    int 		/* keyboard_mode */
+);
+
+extern void XtUngrabKey(
+    Widget 		/* widget */,
+    _XtKeyCode 		/* keycode */,
+    Modifiers	 	/* modifiers */
+);
+
+extern int XtGrabKeyboard(
+    Widget 		/* widget */,
+    _XtBoolean 		/* owner_events */,
+    int 		/* pointer_mode */,
+    int 		/* keyboard_mode */,
+    Time 		/* time */
+);
+
+extern void XtUngrabKeyboard(
+    Widget 		/* widget */,
+    Time 		/* time */
+);
+
+extern void XtGrabButton(
+    Widget 		/* widget */,
+    int 		/* button */,
+    Modifiers	 	/* modifiers */,
+    _XtBoolean 		/* owner_events */,
+    unsigned int	/* event_mask */,
+    int 		/* pointer_mode */,
+    int 		/* keyboard_mode */,
+    Window 		/* confine_to */,
+    Cursor 		/* cursor */
+);
+
+extern void XtUngrabButton(
+    Widget 		/* widget */,
+    unsigned int	/* button */,
+    Modifiers	 	/* modifiers */
+);
+
+extern int XtGrabPointer(
+    Widget 		/* widget */,
+    _XtBoolean 		/* owner_events */,
+    unsigned int	/* event_mask */,
+    int 		/* pointer_mode */,
+    int 		/* keyboard_mode */,
+    Window 		/* confine_to */,
+    Cursor 		/* cursor */,
+    Time 		/* time */
+);
+
+extern void XtUngrabPointer(
+    Widget 		/* widget */,
+    Time 		/* time */
+);
+
+extern void XtGetApplicationNameAndClass(
+    Display*		/* dpy */,
+    String*		/* name_return */,
+    String*		/* class_return */
+);
+
+extern void XtRegisterDrawable(
+    Display*		/* dpy */,
+    Drawable		/* drawable */,
+    Widget		/* widget */
+);
+
+extern void XtUnregisterDrawable(
+    Display*		/* dpy */,
+    Drawable		/* drawable */
+);
+
+extern Widget XtHooksOfDisplay(
+    Display*		/* dpy */
+);
+
+typedef struct {
+    String type;
+    Widget widget;
+    ArgList args;
+    Cardinal num_args;
+} XtCreateHookDataRec, *XtCreateHookData;
+
+typedef struct {
+    String type;
+    Widget widget;
+    XtPointer event_data;
+    Cardinal num_event_data;
+} XtChangeHookDataRec, *XtChangeHookData;
+
+typedef struct {
+    Widget old, req;
+    ArgList args;
+    Cardinal num_args;
+} XtChangeHookSetValuesDataRec, *XtChangeHookSetValuesData;
+
+typedef struct {
+    String type;
+    Widget widget;
+    XtGeometryMask changeMask;
+    XWindowChanges changes;
+} XtConfigureHookDataRec, *XtConfigureHookData;
+
+typedef struct {
+    String type;
+    Widget widget;
+    XtWidgetGeometry* request;
+    XtWidgetGeometry* reply;
+    XtGeometryResult result;
+} XtGeometryHookDataRec, *XtGeometryHookData;
+
+typedef struct {
+    String type;
+    Widget widget;
+} XtDestroyHookDataRec, *XtDestroyHookData;
+
+extern void XtGetDisplays(
+    XtAppContext	/* app_context */,
+    Display***		/* dpy_return */,
+    Cardinal*		/* num_dpy_return */
+);
+
+extern Boolean XtToolkitThreadInitialize(
+    void
+);
+
+extern void XtAppSetExitFlag(
+    XtAppContext	/* app_context */
+);
+
+extern Boolean XtAppGetExitFlag(
+    XtAppContext	/* app_context */
+);
+
+extern void XtAppLock(
+    XtAppContext	/* app_context */
+);
+
+extern void XtAppUnlock(
+    XtAppContext	/* app_context */
+);
+
+/*
+ *	Predefined Resource Converters
+ */
+
+
+/* String converters */
+
+extern Boolean XtCvtStringToAcceleratorTable(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToAtom(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Display */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToBool(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToBoolean(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToCommandArgArray(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToCursor(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Display */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToDimension(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToDirectoryString(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToDisplay(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToFile(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToFloat(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToFont(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Display */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToFontSet(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Display, locale */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToFontStruct(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Display */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToGravity(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToInitialState(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToInt(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToPixel(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Screen, Colormap */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+#define XtCvtStringToPosition XtCvtStringToShort
+
+extern Boolean XtCvtStringToRestartStyle(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToShort(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToTranslationTable(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToUnsignedChar(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtStringToVisual(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Screen, depth */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+/* int converters */
+
+extern Boolean XtCvtIntToBool(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtIntToBoolean(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtIntToColor(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* Screen, Colormap */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+#define XtCvtIntToDimension XtCvtIntToShort
+
+extern Boolean XtCvtIntToFloat(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtIntToFont(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtIntToPixel(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtIntToPixmap(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+#define XtCvtIntToPosition XtCvtIntToShort
+
+extern Boolean XtCvtIntToShort(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+extern Boolean XtCvtIntToUnsignedChar(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+/* Color converter */
+
+extern Boolean XtCvtColorToPixel(
+    Display*	/* dpy */,
+    XrmValuePtr /* args */,	/* none */
+    Cardinal*   /* num_args */,
+    XrmValuePtr	/* fromVal */,
+    XrmValuePtr	/* toVal */,
+    XtPointer*	/* closure_ret */
+);
+
+/* Pixel converter */
+
+#define XtCvtPixelToColor XtCvtIntToColor
+
+
+_XFUNCPROTOEND
+
+#endif /*_XtIntrinsic_h*/
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/IntrinsicI.h b/libXt/include/X11/IntrinsicI.h
new file mode 100644
index 000000000..d88166fc3
--- /dev/null
+++ b/libXt/include/X11/IntrinsicI.h
@@ -0,0 +1,265 @@
+/* $Xorg: IntrinsicI.h,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/IntrinsicI.h,v 3.8 2001/12/14 19:56:25 dawes Exp $ */
+
+#ifndef _XtintrinsicI_h
+#define _XtintrinsicI_h
+
+#include "Xtos.h"
+#include "IntrinsicP.h"
+#ifdef WIN32
+#define _WILLWINSOCK_
+#endif
+#include <X11/Xos.h>
+
+#include "Object.h"
+#include "RectObj.h"
+#include "ObjectP.h"
+#include "RectObjP.h"
+
+#include "ConvertI.h"
+#include "TranslateI.h"
+
+#define RectObjClassFlag	0x02
+#define WidgetClassFlag		0x04
+#define CompositeClassFlag	0x08
+#define ConstraintClassFlag	0x10
+#define ShellClassFlag		0x20
+#define WMShellClassFlag	0x40
+#define TopLevelClassFlag	0x80
+
+/*
+ * The following macros, though very handy, are not suitable for
+ * IntrinsicP.h as they violate the rule that arguments are to
+ * be evaluated exactly once.
+ */
+
+#define XtDisplayOfObject(object) \
+    (XtIsWidget(object) ? (object)->core.screen->display : \
+    _XtIsHookObject(object) ? ((HookObject)(object))->hooks.screen->display : \
+    _XtWindowedAncestor(object)->core.screen->display)
+
+#define XtScreenOfObject(object) \
+    (XtIsWidget(object) ? (object)->core.screen : \
+    _XtIsHookObject(object) ? ((HookObject)(object))->hooks.screen : \
+    _XtWindowedAncestor(object)->core.screen)
+
+#define XtWindowOfObject(object) \
+    ((XtIsWidget(object) ? (object) : _XtWindowedAncestor(object)) \
+     ->core.window)
+
+#define XtIsManaged(object) \
+    (XtIsRectObj(object) ? (object)->core.managed : False)
+
+#define XtIsSensitive(object) \
+    (XtIsRectObj(object) ? ((object)->core.sensitive && \
+			    (object)->core.ancestor_sensitive) : False)
+
+
+/****************************************************************
+ *
+ * Byte utilities
+ *
+ ****************************************************************/
+
+#define _XBCOPYFUNC _XtBcopy
+#include <X11/Xfuncs.h>
+
+/* If the alignment characteristics of your machine are right, these may be
+   faster */
+
+#ifdef UNALIGNED
+
+#define XtMemmove(dst, src, size)			    \
+    if ((char *)(dst) != (char *)(src)) {		    \
+	if (size == sizeof(int))			    \
+	    *((int *) (dst)) = *((int *) (src));	    \
+	else if (size == sizeof(char))			    \
+	    *((char *) (dst)) = *((char *) (src));	    \
+	else if (size == sizeof(short))			    \
+	    *((short *) (dst)) = *((short *) (src));	    \
+	else						    \
+	    (void) memcpy((char *) (dst), (char *) (src), (int) (size)); \
+    }
+
+#define XtBZero(dst, size)				    \
+    if (size == sizeof(int))				    \
+	*((int *) (dst)) = 0;				    \
+    else						    \
+	bzero((char *) (dst), (int) (size))
+
+#define XtMemcmp(b1, b2, size)				    \
+    (size == sizeof(int) ?				    \
+	*((int *) (b1)) != *((int *) (b2))		    \
+    :   memcmp((char *) (b1), (char *) (b2), (int) (size))  \
+    )
+
+#else
+
+#define XtMemmove(dst, src, size)	\
+    if ((char *)(dst) != (char *)(src)) {		    \
+	(void) memcpy((char *) (dst), (char *) (src), (int) (size)); \
+    }
+
+#define XtBZero(dst, size) 	\
+	bzero((char *) (dst), (int) (size))
+
+#define XtMemcmp(b1, b2, size) 		\
+	memcmp((char *) (b1), (char *) (b2), (int) (size))
+
+#endif
+
+
+/****************************************************************
+ *
+ * Stack cache allocation/free
+ *
+ ****************************************************************/
+
+#define XtStackAlloc(size, stack_cache_array)     \
+    ((size) <= sizeof(stack_cache_array)	  \
+    ?  (XtPointer)(stack_cache_array)		  \
+    :  XtMalloc((unsigned)(size)))
+
+#define XtStackFree(pointer, stack_cache_array) \
+    { if ((pointer) != ((XtPointer)(stack_cache_array))) XtFree(pointer); }
+
+/***************************************************************
+ *
+ * Filename defines
+ *
+ **************************************************************/
+
+/* used by XtResolvePathname */
+#ifndef XFILESEARCHPATHDEFAULT
+#define XFILESEARCHPATHDEFAULT "/usr/lib/X11/%L/%T/%N%S:/usr/lib/X11/%l/%T/%N%S:/usr/lib/X11/%T/%N%S"
+#endif
+
+/* the following two were both "X Toolkit " prior to R4 */
+#ifndef XTERROR_PREFIX
+#define XTERROR_PREFIX ""
+#endif
+
+#ifndef XTWARNING_PREFIX
+#define XTWARNING_PREFIX ""
+#endif
+
+#ifndef ERRORDB
+#define ERRORDB "/usr/lib/X11/XtErrorDB"
+#endif
+
+_XFUNCPROTOBEGIN
+
+extern String XtCXtToolkitError;
+
+extern void _XtAllocError(
+    String	/* alloc_type */
+);
+
+extern void _XtCompileResourceList(
+    XtResourceList 	/* resources */,
+    Cardinal 		/* num_resources */
+);
+
+extern XtGeometryResult _XtMakeGeometryRequest(
+    Widget 		/* widget */,
+    XtWidgetGeometry*	/* request */,
+    XtWidgetGeometry*	/* reply_return */,
+    Boolean*		/* clear_rect_obj */
+);
+
+extern Boolean _XtIsHookObject(
+    Widget      /* widget */
+);
+
+extern void _XtAddShellToHookObj(
+    Widget      /* widget */
+);
+
+/* GCManager.c */
+extern void _XtGClistFree(Display *dpy, XtPerDisplay pd);
+
+/** GeoTattler stuff */
+
+#ifdef XT_GEO_TATTLER
+
+extern void _XtGeoTab (int);
+extern void _XtGeoTrace (
+			    Widget widget,
+			    ...
+) _X_ATTRIBUTE_PRINTF(2,3);
+
+#define CALLGEOTAT(f) f
+
+#else /* XT_GEO_TATTLER */
+
+#define CALLGEOTAT(f)
+
+#endif /* XT_GEO_TATTLER */
+
+#ifndef XTTRACEMEMORY
+
+extern char* __XtMalloc (
+    unsigned	/* size */
+);
+extern char* __XtCalloc (
+    unsigned	/* num */,
+    unsigned	/* size */
+);
+
+#else
+
+#define __XtMalloc XtMalloc
+#define __XtCalloc XtCalloc
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XtintrinsicI_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/IntrinsicP.h b/libXt/include/X11/IntrinsicP.h
new file mode 100644
index 000000000..517c55d2b
--- /dev/null
+++ b/libXt/include/X11/IntrinsicP.h
@@ -0,0 +1,327 @@
+/* $Xorg: IntrinsicP.h,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86$ */
+
+#ifndef _XtintrinsicP_h
+#define _XtintrinsicP_h
+
+#include <X11/Intrinsic.h>
+
+/*
+ * Field sizes and offsets of XrmResource must match those of XtResource.
+ * Type long is used instead of XrmQuark here because XrmQuark and String
+ * are not the same size on all systems.
+ */
+typedef struct {
+    long	xrm_name;	  /* Resource name quark		*/
+    long	xrm_class;	  /* Resource class quark		*/
+    long	xrm_type;	  /* Resource representation type quark */
+    Cardinal	xrm_size;	  /* Size in bytes of representation	*/
+    int		xrm_offset;	  /* -offset-1				*/
+    long	xrm_default_type; /* Default representation type quark	*/
+    XtPointer	xrm_default_addr; /* Default resource address		*/
+} XrmResource, *XrmResourceList;
+
+typedef unsigned long XtVersionType;
+
+#define XT_VERSION 11
+#ifndef XT_REVISION
+#define XT_REVISION 6
+#endif
+#define XtVersion (XT_VERSION * 1000 + XT_REVISION)
+#define XtVersionDontCheck 0
+
+typedef void (*XtProc)(
+    void
+);
+
+typedef void (*XtWidgetClassProc)(
+    WidgetClass /* class */
+);
+
+typedef void (*XtWidgetProc)(
+    Widget	/* widget */
+);
+
+typedef Boolean (*XtAcceptFocusProc)(
+    Widget	/* widget */,
+    Time*	/* time */
+);
+
+typedef void (*XtArgsProc)(
+    Widget	/* widget */,
+    ArgList	/* args */,
+    Cardinal*	/* num_args */
+);
+
+typedef void (*XtInitProc)(
+    Widget	/* request */,
+    Widget	/* new */,
+    ArgList	/* args */,
+    Cardinal*	/* num_args */
+);
+
+typedef Boolean (*XtSetValuesFunc)(
+    Widget 	/* old */,
+    Widget 	/* request */,
+    Widget 	/* new */,
+    ArgList 	/* args */,
+    Cardinal*	/* num_args */
+);
+
+typedef Boolean (*XtArgsFunc)(
+    Widget	/* widget */,
+    ArgList	/* args */,
+    Cardinal*	/* num_args */
+);
+
+typedef void (*XtAlmostProc)(
+    Widget		/* old */,
+    Widget		/* new */,
+    XtWidgetGeometry*	/* request */,
+    XtWidgetGeometry*	/* reply */
+);
+
+typedef void (*XtExposeProc)(
+    Widget	/* widget */,
+    XEvent*	/* event */,
+    Region	/* region */
+);
+
+/* compress_exposure options*/
+#define XtExposeNoCompress		((XtEnum)False)
+#define XtExposeCompressSeries		((XtEnum)True)
+#define XtExposeCompressMultiple	2
+#define XtExposeCompressMaximal		3
+
+/* modifiers */
+#define XtExposeGraphicsExpose	  	0x10
+#define XtExposeGraphicsExposeMerged	0x20
+#define XtExposeNoExpose	  	0x40
+#define XtExposeNoRegion		0x80
+
+typedef void (*XtRealizeProc)(
+    Widget 		  /* widget */,
+    XtValueMask* 	  /* mask */,
+    XSetWindowAttributes* /* attributes */
+);
+
+typedef XtGeometryResult (*XtGeometryHandler)(
+    Widget		/* widget */,
+    XtWidgetGeometry*	/* request */,
+    XtWidgetGeometry*	/* reply */
+);
+
+typedef void (*XtStringProc)(
+    Widget	/* widget */,
+    String	/* str */
+);
+
+typedef struct {
+    String	name;	/* resource name */
+    String	type;	/* representation type name */
+    XtArgVal	value;	/* representation */
+    int		size;	/* size of representation */
+} XtTypedArg, *XtTypedArgList;
+
+typedef void (*XtAllocateProc)(
+    WidgetClass		/* widget_class */,
+    Cardinal *		/* constraint_size */,
+    Cardinal *		/* more_bytes */,
+    ArgList		/* args */,
+    Cardinal *		/* num_args */,
+    XtTypedArgList	/* typed_args */,
+    Cardinal *		/* num_typed_args */,
+    Widget *		/* widget_return */,
+    XtPointer *		/* more_bytes_return */
+);
+
+typedef void (*XtDeallocateProc)(
+    Widget		/* widget */,
+    XtPointer		/* more_bytes */
+);
+
+struct _XtStateRec;	/* Forward declare before use for C++ */
+
+typedef struct _XtTMRec {
+    XtTranslations  translations;	/* private to Translation Manager    */
+    XtBoundActions  proc_table;		/* procedure bindings for actions    */
+    struct _XtStateRec *current_state;  /* Translation Manager state ptr     */
+    unsigned long   lastEventTime;
+} XtTMRec, *XtTM;
+
+#include <X11/CoreP.h>
+#include <X11/CompositeP.h>
+#include <X11/ConstrainP.h>
+#include <X11/ObjectP.h>
+#include <X11/RectObjP.h>
+
+#define XtDisplay(widget)	DisplayOfScreen((widget)->core.screen)
+#define XtScreen(widget)	((widget)->core.screen)
+#define XtWindow(widget)	((widget)->core.window)
+
+#define XtClass(widget)		((widget)->core.widget_class)
+#define XtSuperclass(widget)	(XtClass(widget)->core_class.superclass)
+#define XtIsRealized(object)	(XtWindowOfObject(object) != None)
+#define XtParent(widget)	((widget)->core.parent)
+
+#undef XtIsRectObj
+extern Boolean XtIsRectObj(Widget);
+#define XtIsRectObj(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x02)
+
+#undef XtIsWidget
+extern Boolean XtIsWidget(Widget);
+#define XtIsWidget(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x04)
+
+#undef XtIsComposite
+extern Boolean XtIsComposite(Widget);
+#define XtIsComposite(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x08)
+
+#undef XtIsConstraint
+extern Boolean XtIsConstraint(Widget);
+#define XtIsConstraint(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x10)
+
+#undef XtIsShell
+extern Boolean XtIsShell(Widget);
+#define XtIsShell(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x20)
+
+#undef XtIsWMShell
+extern Boolean XtIsWMShell(Widget);
+#define XtIsWMShell(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x40)
+
+#undef XtIsTopLevelShell
+extern Boolean XtIsTopLevelShell(Widget);
+#define XtIsTopLevelShell(obj) \
+    (((Object)(obj))->object.widget_class->core_class.class_inited & 0x80)
+
+#ifdef DEBUG
+#define XtCheckSubclass(w, widget_class_ptr, message)	\
+	if (!XtIsSubclass(((Widget)(w)), (widget_class_ptr))) {	\
+	    String params[3];				\
+	    Cardinal num_params = 3;			\
+	    params[0] = ((Widget)(w))->core.widget_class->core_class.class_name;\
+	    params[1] = (widget_class_ptr)->core_class.class_name;	     \
+	    params[2] = (message);					     \
+	    XtAppErrorMsg(XtWidgetToApplicationContext((Widget)(w)),	     \
+		    "subclassMismatch", "xtCheckSubclass", "XtToolkitError", \
+		    "Widget class %s found when subclass of %s expected: %s",\
+		    params, &num_params);		\
+	}
+#else
+#define XtCheckSubclass(w, widget_class, message)	/* nothing */
+#endif
+
+_XFUNCPROTOBEGIN
+
+extern Widget _XtWindowedAncestor( /* internal; implementation-dependent */
+    Widget 		/* object */
+);
+
+extern void _XtInherit(
+    void
+);
+
+extern void _XtHandleFocus(
+    Widget		/* widget */,
+    XtPointer		/* client_data */,
+    XEvent *		/* event */,
+    Boolean *		/* cont */);
+
+extern void XtCreateWindow(
+    Widget 		/* widget */,
+    unsigned int 	/* window_class */,
+    Visual*		/* visual */,
+    XtValueMask		/* value_mask */,
+    XSetWindowAttributes* /* attributes */
+);
+
+extern void XtResizeWidget(
+    Widget 		/* widget */,
+    _XtDimension	/* width */,
+    _XtDimension	/* height */,
+    _XtDimension	/* border_width */
+);
+
+extern void XtMoveWidget(
+    Widget 		/* widget */,
+    _XtPosition		/* x */,
+    _XtPosition		/* y */
+);
+
+extern void XtConfigureWidget(
+    Widget 		/* widget */,
+    _XtPosition		/* x */,
+    _XtPosition		/* y */,
+    _XtDimension	/* width */,
+    _XtDimension	/* height */,
+    _XtDimension	/* border_width */
+);
+
+extern void XtResizeWindow(
+    Widget 		/* widget */
+);
+
+extern void XtProcessLock(
+    void
+);
+
+extern void XtProcessUnlock(
+    void
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XtIntrinsicP_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/Object.h b/libXt/include/X11/Object.h
new file mode 100644
index 000000000..5ef65de3c
--- /dev/null
+++ b/libXt/include/X11/Object.h
@@ -0,0 +1,65 @@
+/* $Xorg: Object.h,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+/* $oHeader: Object.h,v 1.2 88/08/18 15:55:32 asente Exp $ */
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtObject_h
+#define _XtObject_h
+
+_XFUNCPROTOBEGIN
+
+typedef struct _ObjectRec *Object;
+typedef struct _ObjectClassRec *ObjectClass;
+
+#ifndef VMS
+externalref WidgetClass objectClass;
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XtObject_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/ObjectP.h b/libXt/include/X11/ObjectP.h
new file mode 100644
index 000000000..0f484d2fd
--- /dev/null
+++ b/libXt/include/X11/ObjectP.h
@@ -0,0 +1,143 @@
+/* $Xorg: ObjectP.h,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _Xt_ObjectP_h_
+#define _Xt_ObjectP_h_
+
+#include <X11/Object.h>
+
+_XFUNCPROTOBEGIN
+
+/**********************************************************
+ * Object Instance Data Structures
+ *
+ **********************************************************/
+/* these fields match CorePart and can not be changed */
+
+typedef struct _ObjectPart {
+    Widget          self;               /* pointer to widget itself          */
+    WidgetClass     widget_class;       /* pointer to Widget's ClassRec      */
+    Widget          parent;             /* parent widget                     */
+    XrmName         xrm_name;           /* widget resource name quarkified   */
+    Boolean         being_destroyed;    /* marked for destroy                */
+    XtCallbackList  destroy_callbacks;  /* who to call when widget destroyed */
+    XtPointer       constraints;        /* constraint record                 */
+} ObjectPart;
+
+typedef struct _ObjectRec {
+    ObjectPart  object;
+} ObjectRec;
+
+/********************************************************
+ * Object Class Data Structures
+ *
+ ********************************************************/
+/* these fields match CoreClassPart and can not be changed */
+/* ideally these structures would only contain the fields required;
+   but because the CoreClassPart cannot be changed at this late date
+   extraneous fields are necessary to make the field offsets match */
+
+typedef struct _ObjectClassPart {
+
+    WidgetClass     superclass;         /* pointer to superclass ClassRec   */
+    String          class_name;         /* widget resource class name       */
+    Cardinal        widget_size;        /* size in bytes of widget record   */
+    XtProc          class_initialize;   /* class initialization proc        */
+    XtWidgetClassProc class_part_initialize; /* dynamic initialization      */
+    XtEnum          class_inited;       /* has class been initialized?      */
+    XtInitProc      initialize;         /* initialize subclass fields       */
+    XtArgsProc      initialize_hook;    /* notify that initialize called    */
+    XtProc          obj1;		/* NULL                             */
+    XtPointer       obj2;               /* NULL                             */
+    Cardinal        obj3;               /* NULL                             */
+    XtResourceList  resources;          /* resources for subclass fields    */
+    Cardinal        num_resources;      /* number of entries in resources   */
+    XrmClass        xrm_class;          /* resource class quarkified        */
+    Boolean         obj4;               /* NULL                             */
+    XtEnum          obj5;               /* NULL                             */
+    Boolean         obj6;               /* NULL				    */
+    Boolean         obj7;               /* NULL                             */
+    XtWidgetProc    destroy;            /* free data for subclass pointers  */
+    XtProc          obj8;               /* NULL                             */
+    XtProc          obj9;               /* NULL			            */
+    XtSetValuesFunc set_values;         /* set subclass resource values     */
+    XtArgsFunc      set_values_hook;    /* notify that set_values called    */
+    XtProc          obj10;              /* NULL                             */
+    XtArgsProc      get_values_hook;    /* notify that get_values called    */
+    XtProc          obj11;              /* NULL                             */
+    XtVersionType   version;            /* version of intrinsics used       */
+    XtPointer       callback_private;   /* list of callback offsets         */
+    String          obj12;              /* NULL                             */
+    XtProc          obj13;              /* NULL                             */
+    XtProc          obj14;              /* NULL                             */
+    XtPointer       extension;          /* pointer to extension record      */
+}ObjectClassPart;
+
+typedef struct {
+    XtPointer next_extension;	/* 1st 4 required for all extension records */
+    XrmQuark record_type;	/* NULLQUARK; when on ObjectClassPart */
+    long version;		/* must be XtObjectExtensionVersion */
+    Cardinal record_size;	/* sizeof(ObjectClassExtensionRec) */
+    XtAllocateProc allocate;
+    XtDeallocateProc deallocate;
+} ObjectClassExtensionRec, *ObjectClassExtension;
+
+typedef struct _ObjectClassRec {
+    ObjectClassPart object_class;
+} ObjectClassRec;
+
+externalref ObjectClassRec objectClassRec;
+
+_XFUNCPROTOEND
+
+#define XtObjectExtensionVersion 1L
+#define XtInheritAllocate ((XtAllocateProc) _XtInherit)
+#define XtInheritDeallocate ((XtDeallocateProc) _XtInherit)
+
+#endif /*_Xt_ObjectP_h_*/
diff --git a/libXt/include/X11/PassivGraI.h b/libXt/include/X11/PassivGraI.h
new file mode 100644
index 000000000..10591ac4d
--- /dev/null
+++ b/libXt/include/X11/PassivGraI.h
@@ -0,0 +1,190 @@
+/*
+* $Xorg: PassivGraI.h,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $
+*/
+
+/********************************************************
+
+Copyright 1988 by Hewlett-Packard Company
+Copyright 1987, 1988, 1989 by Digital Equipment Corporation, Maynard
+
+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, and that the names of 
+Hewlett-Packard or Digital not be used in advertising or 
+publicity pertaining to distribution of the software without specific, 
+written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+********************************************************/
+
+/*
+
+Copyright 1987, 1988, 1989, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/PassivGraI.h,v 1.3 2001/12/14 19:56:27 dawes Exp $ */
+
+#ifndef _PDI_h_
+#define _PDI_h_
+
+
+#define KEYBOARD TRUE
+#define POINTER  FALSE
+
+_XFUNCPROTOBEGIN
+
+typedef enum {
+    XtNoServerGrab, 
+    XtPassiveServerGrab,
+    XtActiveServerGrab,
+    XtPseudoPassiveServerGrab,
+    XtPseudoActiveServerGrab
+}XtServerGrabType;
+
+typedef struct _XtServerGrabRec {
+    struct _XtServerGrabRec 	*next;
+    Widget			widget;
+    unsigned int		ownerEvents:1;
+    unsigned int		pointerMode:1;
+    unsigned int		keyboardMode:1;
+    unsigned int		hasExt:1;
+    unsigned int		confineToIsWidgetWin:1;
+    KeyCode			keybut;
+    unsigned short		modifiers;
+    unsigned short		eventMask;
+} XtServerGrabRec, *XtServerGrabPtr;
+
+typedef struct _XtGrabExtRec {
+    Mask			*pKeyButMask;
+    Mask			*pModifiersMask;
+    Window			confineTo;
+    Cursor			cursor;
+} XtServerGrabExtRec, *XtServerGrabExtPtr;
+
+#define GRABEXT(p) ((XtServerGrabExtPtr)((p)+1))
+
+typedef struct _XtDeviceRec{
+    XtServerGrabRec	grab; 	/* need copy in order to protect
+				   during grab */
+    XtServerGrabType	grabType;
+}XtDeviceRec, *XtDevice;
+
+#define XtMyAncestor	0
+#define XtMyDescendant	1
+#define XtMyCousin	2
+#define XtMySelf	3
+#define XtUnrelated	4
+typedef char XtGeneology; /* do not use an enum makes PerWidgetInput larger */
+
+typedef struct {
+    Widget		focusKid;
+    XtServerGrabPtr	keyList, ptrList;
+    Widget		queryEventDescendant;
+    unsigned int	map_handler_added:1;
+    unsigned int	realize_handler_added:1;
+    unsigned int	active_handler_added:1;
+    unsigned int	haveFocus:1;
+    XtGeneology		focalPoint;
+}XtPerWidgetInputRec, *XtPerWidgetInput;
+
+typedef struct XtPerDisplayInputRec{
+    XtGrabList 	grabList;
+    XtDeviceRec keyboard, pointer;
+    KeyCode	activatingKey;
+    Widget 	*trace;
+    int		traceDepth, traceMax;
+    Widget 	focusWidget;
+}XtPerDisplayInputRec, *XtPerDisplayInput;
+
+#define IsServerGrab(g) ((g == XtPassiveServerGrab) ||\
+			 (g == XtActiveServerGrab))
+
+#define IsAnyGrab(g) ((g == XtPassiveServerGrab) ||\
+		      (g == XtActiveServerGrab)  ||\
+		      (g == XtPseudoPassiveServerGrab))
+
+#define IsEitherPassiveGrab(g) ((g == XtPassiveServerGrab) ||\
+				(g == XtPseudoPassiveServerGrab))
+
+#define IsPseudoGrab(g) ((g == XtPseudoPassiveServerGrab))
+
+extern void _XtDestroyServerGrabs(
+    Widget		/* w */,
+    XtPointer		/* pwi */, /*XtPerWidgetInput*/
+    XtPointer		/* call_data */
+);
+
+extern XtPerWidgetInput _XtGetPerWidgetInput(
+    Widget	/* widget */,
+    _XtBoolean	/* create */
+);
+
+extern XtServerGrabPtr _XtCheckServerGrabsOnWidget(
+    XEvent*		/* event */,
+    Widget		/* widget */,
+    _XtBoolean		/* isKeyboard */
+);
+
+/*
+extern XtGrabList* _XtGetGrabList( XtPerDisplayInput );
+*/
+
+#define _XtGetGrabList(pdi) (&(pdi)->grabList)
+
+extern void _XtFreePerWidgetInput(
+    Widget		/* w */,
+    XtPerWidgetInput	/* pwi */
+);
+
+extern Widget _XtProcessKeyboardEvent(
+    XKeyEvent*		/* event */,
+    Widget		/* widget */,
+    XtPerDisplayInput	/* pdi */
+);
+
+extern Widget _XtProcessPointerEvent(
+    XButtonEvent*	/* event */,
+    Widget		/* widget */,
+    XtPerDisplayInput	/* pdi */
+);
+
+extern void _XtRegisterPassiveGrabs(
+    Widget		/* widget */
+);
+
+extern void _XtClearAncestorCache(
+    Widget		/* widget */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _PDI_h_ */
diff --git a/libXt/include/X11/RectObj.h b/libXt/include/X11/RectObj.h
new file mode 100644
index 000000000..81e43a5e2
--- /dev/null
+++ b/libXt/include/X11/RectObj.h
@@ -0,0 +1,65 @@
+/* $Xorg: RectObj.h,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+/* $oHeader: RectObj.h,v 1.2 88/08/18 17:39:17 asente Exp $ */
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtRect_h
+#define _XtRect_h
+
+_XFUNCPROTOBEGIN
+
+typedef struct _RectObjRec *RectObj;
+typedef struct _RectObjClassRec *RectObjClass;
+
+#ifndef VMS
+externalref WidgetClass rectObjClass;
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XtRect_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/RectObjP.h b/libXt/include/X11/RectObjP.h
new file mode 100644
index 000000000..d6ffb7823
--- /dev/null
+++ b/libXt/include/X11/RectObjP.h
@@ -0,0 +1,133 @@
+/* $Xorg: RectObjP.h,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+/* $oHeader: RectObjP.h,v 1.2 88/08/18 15:55:52 asente Exp $ */
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _Xt_RectObjP_h_
+#define _Xt_RectObjP_h_
+
+#include <X11/RectObj.h>
+#include <X11/ObjectP.h>
+
+_XFUNCPROTOBEGIN
+
+/**********************************************************
+ * Rectangle Object Instance Data Structures
+ *
+ **********************************************************/
+/* these fields match CorePart and can not be changed */
+
+typedef struct _RectObjPart {
+    Position        x, y;               /* rectangle position               */
+    Dimension       width, height;      /* rectangle dimensions             */
+    Dimension       border_width;       /* rectangle border width           */
+    Boolean         managed;            /* is widget geometry managed?       */
+    Boolean         sensitive;          /* is widget sensitive to user events*/
+    Boolean         ancestor_sensitive; /* are all ancestors sensitive?      */
+}RectObjPart;
+
+typedef struct _RectObjRec {
+    ObjectPart object;
+    RectObjPart rectangle;
+} RectObjRec;
+
+
+
+/********************************************************
+ * Rectangle Object Class Data Structures
+ *
+ ********************************************************/
+/* these fields match CoreClassPart and can not be changed */
+/* ideally these structures would only contain the fields required;
+   but because the CoreClassPart cannot be changed at this late date
+   extraneous fields are necessary to make the field offsets match */
+
+typedef struct _RectObjClassPart {
+
+    WidgetClass     superclass;         /* pointer to superclass ClassRec   */
+    String          class_name;         /* widget resource class name       */
+    Cardinal        widget_size;        /* size in bytes of widget record   */
+    XtProc          class_initialize;   /* class initialization proc        */
+    XtWidgetClassProc class_part_initialize; /* dynamic initialization      */
+    XtEnum          class_inited;       /* has class been initialized?      */
+    XtInitProc      initialize;         /* initialize subclass fields       */
+    XtArgsProc      initialize_hook;    /* notify that initialize called    */
+    XtProc          rect1;		/* NULL                             */
+    XtPointer       rect2;              /* NULL                             */
+    Cardinal        rect3;              /* NULL                             */
+    XtResourceList  resources;          /* resources for subclass fields    */
+    Cardinal        num_resources;      /* number of entries in resources   */
+    XrmClass        xrm_class;          /* resource class quarkified        */
+    Boolean         rect4;              /* NULL                             */
+    XtEnum          rect5;              /* NULL                             */
+    Boolean         rect6;              /* NULL				    */
+    Boolean         rect7;              /* NULL                             */
+    XtWidgetProc    destroy;            /* free data for subclass pointers  */
+    XtWidgetProc    resize;             /* geom manager changed widget size */
+    XtExposeProc    expose;             /* rediplay rectangle               */
+    XtSetValuesFunc set_values;         /* set subclass resource values     */
+    XtArgsFunc      set_values_hook;    /* notify that set_values called    */
+    XtAlmostProc    set_values_almost;  /* set values almost for geometry   */
+    XtArgsProc      get_values_hook;    /* notify that get_values called    */
+    XtProc          rect9;              /* NULL                             */
+    XtVersionType   version;            /* version of intrinsics used       */
+    XtPointer       callback_private;   /* list of callback offsets         */
+    String          rect10;             /* NULL                             */
+    XtGeometryHandler query_geometry;   /* return preferred geometry        */
+    XtProc          rect11;             /* NULL                             */
+    XtPointer       extension;          /* pointer to extension record      */
+} RectObjClassPart;
+
+typedef struct _RectObjClassRec {
+    RectObjClassPart rect_class;
+} RectObjClassRec;
+
+externalref RectObjClassRec rectObjClassRec;
+
+_XFUNCPROTOEND
+
+#endif /*_Xt_RectObjP_h_*/
diff --git a/libXt/include/X11/ResConfigP.h b/libXt/include/X11/ResConfigP.h
new file mode 100644
index 000000000..a06cda715
--- /dev/null
+++ b/libXt/include/X11/ResConfigP.h
@@ -0,0 +1,78 @@
+/* $Xorg: ResConfigP.h,v 1.5 2001/02/09 02:03:56 xorgcvs Exp $ */
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/*****************************************************************
+
+(C) COPYRIGHT International Business Machines Corp. 1992,1997
+    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.
+
+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 IBM CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 IBM Corporation 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 IBM
+Corporation.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/ResConfigP.h,v 3.7 2001/12/20 19:40:59 tsi Exp $ */
+
+#ifndef _RESCONFIGP_H
+#define _RESCONFIGP_H
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+/*
+ * Atom names for resource configuration management customization tool.
+ */
+#define RCM_DATA "Custom Data"
+#define RCM_INIT "Custom Init"
+
+extern void _XtResourceConfigurationEH(
+	Widget 		/* w */, 
+	XtPointer 	/* client_data */, 
+	XEvent * 	/* event */
+);
+
+_XFUNCPROTOEND
+
+#endif
diff --git a/libXt/include/X11/ResourceI.h b/libXt/include/X11/ResourceI.h
new file mode 100644
index 000000000..3db97f83e
--- /dev/null
+++ b/libXt/include/X11/ResourceI.h
@@ -0,0 +1,103 @@
+/* $Xorg: ResourceI.h,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/ResourceI.h,v 1.5 2001/12/14 19:56:28 dawes Exp $ */
+
+/****************************************************************
+ *
+ * Resources
+ *
+ ****************************************************************/
+
+#ifndef _XtresourceI_h
+#define _XtresourceI_h
+
+#define StringToQuark(string) XrmStringToQuark(string)
+#define StringToName(string) XrmStringToName(string)
+#define StringToClass(string) XrmStringToClass(string)
+
+_XFUNCPROTOBEGIN
+
+extern void _XtDependencies(
+    XtResourceList  * /* class_resp */,
+    Cardinal	    * /* class_num_resp */,
+    XrmResourceList * /* super_res */,
+    Cardinal	     /* super_num_res */,
+    Cardinal	     /* super_widget_size */);
+
+extern void _XtResourceDependencies(
+    WidgetClass  /* wc */
+);
+
+extern void _XtConstraintResDependencies(
+    ConstraintWidgetClass  /* wc */
+);
+
+extern XtCacheRef* _XtGetResources(
+    Widget	    /* w */,
+    ArgList	    /* args */,
+    Cardinal	    /* num_args */,
+    XtTypedArgList  /* typed_args */,
+    Cardinal*	    /* num_typed_args */
+);
+
+extern void _XtCopyFromParent(
+    Widget		/* widget */,
+    int			/* offset */,
+    XrmValue*		/* value */
+);
+
+extern void _XtCopyToArg(char *src, XtArgVal *dst, unsigned int size);
+extern void _XtCopyFromArg(XtArgVal src, char *dst, unsigned int size);
+extern XrmResourceList* _XtCreateIndirectionTable(XtResourceList resources,
+						  Cardinal num_resources);
+extern void _XtResourceListInitialize(void);
+
+_XFUNCPROTOEND
+
+#endif /* _XtresourceI_h */
diff --git a/libXt/include/X11/SelectionI.h b/libXt/include/X11/SelectionI.h
new file mode 100644
index 000000000..e589aece5
--- /dev/null
+++ b/libXt/include/X11/SelectionI.h
@@ -0,0 +1,170 @@
+/* $Xorg: SelectionI.h,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtselectionI_h
+#define _XtselectionI_h
+
+#include "Intrinsic.h"
+
+typedef struct _RequestRec *Request;
+typedef struct _SelectRec *Select;
+
+typedef struct _RequestRec {
+   Select ctx;		      /* logical owner */
+   Widget widget;	      /* widget actually receiving Selection events */
+   Window requestor;
+   Atom property;
+   Atom target;
+   Atom type;
+   int format;
+   XtPointer value;
+   unsigned long bytelength;
+   unsigned long offset;
+   XtIntervalId timeout;
+   XSelectionRequestEvent event; /* for XtGetSelectionRequest */
+   Boolean allSent;
+} RequestRec;
+
+typedef struct {
+  Atom prop;
+  Boolean avail;
+} SelectionPropRec, *SelectionProp;
+
+typedef struct {
+  Display *dpy;
+  Atom incr_atom, indirect_atom, timestamp_atom;
+  int propCount;
+  SelectionProp list;
+} PropListRec, *PropList;
+
+typedef struct _SelectRec {
+    Atom selection; 			/* constant */
+    Display *dpy; 			/* constant */
+    Widget widget;
+    Time time;
+    unsigned long serial;
+    XtConvertSelectionProc convert;
+    XtLoseSelectionProc loses;
+    XtSelectionDoneProc notify;
+    XtCancelConvertSelectionProc owner_cancel;
+    XtPointer owner_closure;
+    PropList prop_list;
+    Request req;			/* state for local non-incr xfer */
+    int ref_count;			/* of active transfers */
+    unsigned int incremental:1;
+    unsigned int free_when_done:1;
+    unsigned int was_disowned:1;
+} SelectRec;
+
+typedef struct _ParamRec {
+    Atom selection;
+    Atom param;
+} ParamRec, *Param;
+
+typedef struct _ParamInfoRec {
+    unsigned int count;
+    Param paramlist;
+} ParamInfoRec, *ParamInfo;
+
+typedef struct _QueuedRequestRec {
+    Atom selection;
+    Atom target;
+    Atom param;
+    XtSelectionCallbackProc callback;
+    XtPointer closure;
+    Time time;
+    Boolean incremental;
+} QueuedRequestRec, *QueuedRequest;
+
+typedef struct _QueuedRequestInfoRec {
+    int count;
+    Atom *selections;
+    QueuedRequest *requests;
+} QueuedRequestInfoRec, *QueuedRequestInfo;
+
+typedef struct {
+    XtSelectionCallbackProc *callbacks;
+    XtPointer *req_closure;
+    Atom property;
+    Atom *target;
+    Atom type;
+    int format;
+    char *value;
+    int bytelength;
+    int offset;
+    XtIntervalId timeout;
+    XtEventHandler proc;
+    Widget widget;
+    Time time;
+    Select ctx;
+    Boolean *incremental;
+    int current;
+} CallBackInfoRec, *CallBackInfo;
+
+typedef struct {
+  Atom target;
+  Atom property;
+} IndirectPair;
+
+#define IndirectPairWordSize 2
+
+typedef struct {
+  int active_transfer_count;
+} RequestWindowRec;
+
+#define MAX_SELECTION_INCR(dpy) (((65536 < XMaxRequestSize(dpy)) ? \
+	(65536 << 2)  : (XMaxRequestSize(dpy) << 2))-100)
+
+#define MATCH_SELECT(event, info) ((event->time == info->time) && \
+	    (event->requestor == XtWindow(info->widget)) && \
+	    (event->selection == info->ctx->selection) && \
+	    (event->target == *info->target))
+
+#endif /* _XtselectionI_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/ShellI.h b/libXt/include/X11/ShellI.h
new file mode 100644
index 000000000..6a093d791
--- /dev/null
+++ b/libXt/include/X11/ShellI.h
@@ -0,0 +1,12 @@
+/* $XFree86$ */
+
+#ifndef _XtShellInternal_h
+#define _XtShellInternal_h
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+extern void _XtShellGetCoordinates(Widget widget, Position *x, Position *y);
+
+#endif /* _XtShellInternal_h */
diff --git a/libXt/include/X11/ShellP.h b/libXt/include/X11/ShellP.h
new file mode 100644
index 000000000..7297d3321
--- /dev/null
+++ b/libXt/include/X11/ShellP.h
@@ -0,0 +1,436 @@
+/* $Xorg: ShellP.h,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/* 
+ * ShellP.h - Private definitions for Shell widget
+ * 
+ * Author:	Paul Asente
+ * 		Digital Equipment Corporation
+ * 		Western Software Laboratory
+ * Date:	Thu Dec 3, 1987
+ */
+
+#ifndef _XtShellPrivate_h
+#define _XtShellPrivate_h
+
+#include <X11/Shell.h>
+
+/* *****
+ * ***** VendorP.h is included later on; it needs fields defined in the first
+ * ***** part of this header file
+ * *****
+ */
+
+_XFUNCPROTOBEGIN
+
+/***********************************************************************
+ *
+ * Shell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the Shell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} ShellClassPart;
+
+typedef struct {
+    XtPointer next_extension;	/* 1st 4 mandated for all extension records */
+    XrmQuark record_type;	/* NULLQUARK; on ShellClassPart */
+    long version;		/* must be XtShellExtensionVersion */
+    Cardinal record_size;	/* sizeof(ShellClassExtensionRec) */
+    XtGeometryHandler root_geometry_manager;
+} ShellClassExtensionRec, *ShellClassExtension;
+
+#define XtShellExtensionVersion 1L
+#define XtInheritRootGeometryManager ((XtGeometryHandler)_XtInherit)
+
+typedef struct _ShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+} ShellClassRec;
+
+externalref ShellClassRec shellClassRec;
+
+/* New fields for the shell widget */
+
+typedef struct {
+	char       *geometry;
+	XtCreatePopupChildProc	create_popup_child_proc;
+	XtGrabKind	grab_kind;
+	Boolean	    spring_loaded;
+	Boolean	    popped_up;
+	Boolean	    allow_shell_resize;
+	Boolean     client_specified; /* re-using old name */
+#define _XtShellPositionValid	((Boolean)(1<<0))
+#define _XtShellNotReparented	((Boolean)(1<<1))
+#define _XtShellPPositionOK	((Boolean)(1<<2))
+#define _XtShellGeometryParsed	((Boolean)(1<<3))
+	Boolean	    save_under;
+	Boolean	    override_redirect;
+
+	XtCallbackList popup_callback;
+	XtCallbackList popdown_callback;
+	Visual*     visual;
+} ShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+} ShellRec, *ShellWidget;
+
+/***********************************************************************
+ *
+ * OverrideShell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the OverrideShell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} OverrideShellClassPart;
+
+typedef struct _OverrideShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	OverrideShellClassPart  override_shell_class;
+} OverrideShellClassRec;
+
+externalref OverrideShellClassRec overrideShellClassRec;
+
+/* No new fields for the override shell widget */
+
+typedef struct {int frabjous;} OverrideShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	OverrideShellPart override;
+} OverrideShellRec, *OverrideShellWidget;
+
+/***********************************************************************
+ *
+ * WMShell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the WMShell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} WMShellClassPart;
+
+typedef struct _WMShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	WMShellClassPart wm_shell_class;
+} WMShellClassRec;
+
+externalref WMShellClassRec wmShellClassRec;
+
+/* New fields for the WM shell widget */
+
+typedef struct {
+	char	   *title;
+	int 	    wm_timeout;
+	Boolean	    wait_for_wm;
+	Boolean	    transient;
+	Boolean     urgency;
+	Widget      client_leader;
+	String      window_role;
+	struct _OldXSizeHints {	/* pre-R4 Xlib structure */
+	    long flags;
+	    int x, y;
+	    int width, height;
+	    int min_width, min_height;
+	    int max_width, max_height;
+	    int width_inc, height_inc;
+	    struct {
+		    int x;
+		    int y;
+	    } min_aspect, max_aspect;
+	} size_hints;
+	XWMHints    wm_hints;
+	int base_width, base_height;
+	int win_gravity;
+	Atom title_encoding;
+} WMShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	WMShellPart	wm;
+} WMShellRec, *WMShellWidget;
+
+_XFUNCPROTOEND
+
+#include <X11/VendorP.h>
+
+_XFUNCPROTOBEGIN
+
+/***********************************************************************
+ *
+ * TransientShell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the TransientShell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} TransientShellClassPart;
+
+typedef struct _TransientShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	WMShellClassPart   wm_shell_class;
+	VendorShellClassPart vendor_shell_class;
+	TransientShellClassPart transient_shell_class;
+} TransientShellClassRec;
+
+externalref TransientShellClassRec transientShellClassRec;
+
+/* New fields for the transient shell widget */
+
+typedef struct {
+	Widget transient_for;
+} TransientShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	WMShellPart	wm;
+	VendorShellPart	vendor;
+	TransientShellPart transient;	
+} TransientShellRec, *TransientShellWidget;
+
+/***********************************************************************
+ *
+ * TopLevelShell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the TopLevelShell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} TopLevelShellClassPart;
+
+typedef struct _TopLevelShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	WMShellClassPart   wm_shell_class;
+	VendorShellClassPart vendor_shell_class;
+	TopLevelShellClassPart top_level_shell_class;
+} TopLevelShellClassRec;
+
+externalref TopLevelShellClassRec topLevelShellClassRec;
+
+/* New fields for the top level shell widget */
+
+typedef struct {
+	char	   *icon_name;
+	Boolean	    iconic;
+	Atom	    icon_name_encoding;
+} TopLevelShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	WMShellPart	wm;
+	VendorShellPart	vendor;
+	TopLevelShellPart topLevel;
+} TopLevelShellRec, *TopLevelShellWidget;
+
+/***********************************************************************
+ *
+ * ApplicationShell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the ApplicationShell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} ApplicationShellClassPart;
+
+typedef struct _ApplicationShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	WMShellClassPart   wm_shell_class;
+	VendorShellClassPart vendor_shell_class;
+	TopLevelShellClassPart top_level_shell_class;
+	ApplicationShellClassPart application_shell_class;
+} ApplicationShellClassRec;
+
+externalref ApplicationShellClassRec applicationShellClassRec;
+
+/* New fields for the application shell widget */
+
+typedef struct {
+#if defined(__cplusplus) || defined(c_plusplus)
+    char *c_class;
+#else
+    char *class;
+#endif
+    XrmClass xrm_class;
+    int argc;
+    char **argv;
+} ApplicationShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	WMShellPart	wm;
+	VendorShellPart	vendor;
+	TopLevelShellPart topLevel;
+	ApplicationShellPart application;
+} ApplicationShellRec, *ApplicationShellWidget;
+
+/***********************************************************************
+ *
+ * SessionShell Widget Private Data
+ *
+ ***********************************************************************/
+
+/* New fields for the SessionShell widget class record */
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record */
+} SessionShellClassPart;
+
+typedef struct _SessionShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	WMShellClassPart   wm_shell_class;
+	VendorShellClassPart vendor_shell_class;
+	TopLevelShellClassPart top_level_shell_class;
+	ApplicationShellClassPart application_shell_class;
+	SessionShellClassPart session_shell_class;
+} SessionShellClassRec;
+
+externalref SessionShellClassRec sessionShellClassRec;
+
+typedef struct _XtSaveYourselfRec *XtSaveYourself; /* implementation-private */
+
+/* New fields for the session shell widget */
+
+typedef struct {
+    SmcConn         connection;
+    String          session_id;
+    String*         restart_command;
+    String*         clone_command;
+    String*         discard_command;
+    String*         resign_command;
+    String*         shutdown_command;
+    String*         environment;
+    String          current_dir;
+    String          program_path;
+    unsigned char   restart_style;
+    unsigned char   checkpoint_state;
+    Boolean         join_session;
+    XtCallbackList  save_callbacks;
+    XtCallbackList  interact_callbacks;
+    XtCallbackList  cancel_callbacks;
+    XtCallbackList  save_complete_callbacks;
+    XtCallbackList  die_callbacks;
+    XtCallbackList  error_callbacks;
+    XtSaveYourself  save;
+    XtInputId       input_id;
+    XtPointer       ses20;
+    XtPointer       ses19;
+    XtPointer       ses18;
+    XtPointer       ses17;
+    XtPointer       ses16;
+    XtPointer       ses15;
+    XtPointer       ses14;
+    XtPointer       ses13;
+    XtPointer       ses12;
+    XtPointer       ses11;
+    XtPointer       ses10;
+    XtPointer       ses9;
+    XtPointer       ses8;
+    XtPointer       ses7;
+    XtPointer       ses6;
+    XtPointer       ses5;
+    XtPointer       ses4;
+    XtPointer       ses3;
+    XtPointer       ses2;
+    XtPointer       ses1;
+} SessionShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	WMShellPart	wm;
+	VendorShellPart	vendor;
+	TopLevelShellPart topLevel;
+	ApplicationShellPart application;
+	SessionShellPart session;
+} SessionShellRec, *SessionShellWidget;
+
+_XFUNCPROTOEND
+
+#endif /* _XtShellPrivate_h */
diff --git a/libXt/include/X11/ThreadsI.h b/libXt/include/X11/ThreadsI.h
new file mode 100644
index 000000000..f07fe290f
--- /dev/null
+++ b/libXt/include/X11/ThreadsI.h
@@ -0,0 +1,134 @@
+/* $Xorg: ThreadsI.h,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/************************************************************
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                    All Rights Reserved
+
+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 no-
+tice  appear  in all copies and that both that copyright no-
+tice and this permission notice appear in  supporting  docu-
+mentation,  and  that the name Sun not be used in advertising 
+or publicity pertaining to distribution  of  the software  
+without specific prior written permission. Sun makes no 
+representations about the suitability of this software for 
+any purpose. It is provided "as is" without any express or 
+implied warranty.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+********************************************************/
+
+/*
+
+Copyright 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/ThreadsI.h,v 3.5 2001/12/14 19:56:31 dawes Exp $ */
+
+#ifndef _XtThreadsI_h
+#define _XtThreadsI_h
+
+#include <X11/XlibConf.h>
+
+#ifdef XTHREADS
+
+typedef struct _LockRec *LockPtr;
+
+typedef void (*ThreadAppProc)(
+    XtAppContext /* app */
+);
+
+typedef void (*ThreadAppYieldLockProc)(
+    XtAppContext, /* app */
+    Boolean*, /* push_thread */
+    Boolean*, /* pushed_thread */
+    int* /* level */
+);
+
+typedef void (*ThreadAppRestoreLockProc)(
+    XtAppContext /* app */,
+    int, /* level */
+    Boolean* /* pushed_thread */
+);
+
+_XFUNCPROTOBEGIN
+
+extern void (*_XtProcessLock)(
+    void
+);
+
+extern void (*_XtProcessUnlock)(
+    void
+);
+
+extern void (*_XtInitAppLock)(
+    XtAppContext /* app */
+);
+
+_XFUNCPROTOEND
+
+#define INIT_APP_LOCK(app) if(_XtInitAppLock) (*_XtInitAppLock)(app)
+#define FREE_APP_LOCK(app) if(app && app->free_lock)(*app->free_lock)(app)
+
+#define LOCK_PROCESS if(_XtProcessLock)(*_XtProcessLock)()
+#define UNLOCK_PROCESS if(_XtProcessUnlock)(*_XtProcessUnlock)()
+#define LOCK_APP(app) if(app && app->lock)(*app->lock)(app)
+#define UNLOCK_APP(app) if(app && app->unlock)(*app->unlock)(app)
+
+#define YIELD_APP_LOCK(app,push,pushed,level)\
+	 if(app && app->yield_lock) (*app->yield_lock)(app,push,pushed,level)
+#define RESTORE_APP_LOCK(app,level,pushed)\
+	 if(app && app->restore_lock) (*app->restore_lock)(app,level,pushed)
+
+#define WIDGET_TO_APPCON(w) \
+    XtAppContext app = (w && _XtProcessLock ? \
+	XtWidgetToApplicationContext(w) : NULL)
+
+#define DPY_TO_APPCON(d) \
+    XtAppContext app = (_XtProcessLock ? XtDisplayToApplicationContext(d): NULL)
+
+#else /* defined(XTHREADS) */
+
+#define LOCK_PROCESS
+#define UNLOCK_PROCESS
+#define LOCK_APP(app)
+#define UNLOCK_APP(app)
+
+#define INIT_APP_LOCK(app)
+#define FREE_APP_LOCK(app)
+
+#define WIDGET_TO_APPCON(w)
+#define DPY_TO_APPCON(d)
+
+#endif /* !defined(XTHREADS) */
+#endif /* _XtThreadsI_h */
diff --git a/libXt/include/X11/TranslateI.h b/libXt/include/X11/TranslateI.h
new file mode 100644
index 000000000..6cc3099cf
--- /dev/null
+++ b/libXt/include/X11/TranslateI.h
@@ -0,0 +1,609 @@
+/* $Xorg: TranslateI.h,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/TranslateI.h,v 1.3 2001/12/14 19:56:32 dawes Exp $ */
+
+/* 
+ * TranslateI.h - Header file private to translation management
+ * 
+ * Author:	Gabe Beged-Dov, HP
+ *
+ * Former Author:	Charles Haynes
+ * 		Digital Equipment Corporation
+ * 		Western Research Laboratory
+ * Date:	Sat Aug 29 1987
+ */
+
+/*#define REFCNT_TRANSLATIONS*/
+#define CACHE_TRANSLATIONS
+
+#define TM_NO_MATCH (-2)
+
+#define _XtRStateTablePair "_XtStateTablePair"
+
+typedef unsigned char TMByteCard;
+typedef unsigned short TMShortCard;
+typedef unsigned long TMLongCard;
+typedef short TMShortInt;
+
+typedef struct _TMTypeMatchRec *TMTypeMatch;
+typedef struct _TMModifierMatchRec *TMModifierMatch;
+typedef struct _TMEventRec *TMEventPtr;
+
+typedef Boolean (*MatchProc)(TMTypeMatch typeMatch,
+			     TMModifierMatch modMatch,
+			     TMEventPtr eventSeq);
+
+typedef struct _ModToKeysymTable {
+    Modifiers mask;
+    int count;
+    int idx;
+} ModToKeysymTable;
+
+typedef struct _LateBindings {
+    unsigned int knot:1;
+    unsigned int pair:1;
+    unsigned short ref_count;	/* garbage collection */
+    KeySym keysym;
+} LateBindings, *LateBindingsPtr;
+
+typedef short ModifierMask;
+
+typedef struct _ActionsRec *ActionPtr;
+typedef struct _ActionsRec {
+    int idx;			/* index into quarkTable to find proc */
+    String *params;		/* pointer to array of params */
+    Cardinal num_params;	/* number of params */
+    ActionPtr next;		/* next action to perform */
+} ActionRec;
+
+typedef struct _XtStateRec *StatePtr;
+typedef struct _XtStateRec {
+    unsigned int	isCycleStart:1;
+    unsigned int	isCycleEnd:1;
+    TMShortCard		typeIndex;
+    TMShortCard		modIndex;
+    ActionPtr		actions;	/* rhs list of actions to perform */
+    StatePtr 		nextLevel;
+}StateRec;
+
+
+#define XtTableReplace	0
+#define XtTableAugment	1
+#define XtTableOverride	2
+#define XtTableUnmerge  3
+
+typedef unsigned int _XtTranslateOp;
+
+/*
+ * New Definitions
+ */
+typedef struct _TMModifierMatchRec{
+    TMLongCard	 modifiers;
+    TMLongCard	 modifierMask;
+    LateBindingsPtr lateModifiers;
+    Boolean	 standard;
+}TMModifierMatchRec;
+
+typedef struct _TMTypeMatchRec{
+    TMLongCard	 eventType;
+    TMLongCard	 eventCode;
+    TMLongCard	 eventCodeMask;
+    MatchProc	 matchEvent;
+}TMTypeMatchRec;
+
+typedef struct _TMBranchHeadRec {
+    unsigned int	isSimple:1;
+    unsigned int	hasActions:1;
+    unsigned int	hasCycles:1;
+    unsigned int	more:13;
+    TMShortCard		typeIndex;
+    TMShortCard		modIndex;
+}TMBranchHeadRec, *TMBranchHead;
+
+/* NOTE: elements of this structure must match those of
+ * TMComplexStateTreeRec and TMParseStateTreeRec.
+ */
+typedef struct _TMSimpleStateTreeRec{
+    unsigned int	isSimple:1;
+    unsigned int	isAccelerator:1;
+    unsigned int	mappingNotifyInterest:1;
+    unsigned int	refCount:13;
+    TMShortCard		numBranchHeads;
+    TMShortCard		numQuarks;   /* # of entries in quarkTbl */
+    TMShortCard		unused;	     /* to ensure same alignment */
+    TMBranchHeadRec	*branchHeadTbl;
+    XrmQuark		*quarkTbl;  /* table of quarkified rhs*/
+}TMSimpleStateTreeRec, *TMSimpleStateTree;
+
+/* NOTE: elements of this structure must match those of
+ * TMSimpleStateTreeRec and TMParseStateTreeRec.
+ */
+typedef struct _TMComplexStateTreeRec{
+    unsigned int	isSimple:1;
+    unsigned int	isAccelerator:1;
+    unsigned int	mappingNotifyInterest:1;
+    unsigned int	refCount:13;
+    TMShortCard		numBranchHeads;
+    TMShortCard		numQuarks;   /* # of entries in quarkTbl */
+    TMShortCard		numComplexBranchHeads;
+    TMBranchHeadRec	*branchHeadTbl;
+    XrmQuark		*quarkTbl;  /* table of quarkified rhs*/
+    StatePtr		*complexBranchHeadTbl;
+}TMComplexStateTreeRec, *TMComplexStateTree;
+
+/* NOTE: elements of this structure must match those of
+ * TMSimpleStateTreeRec and TMComplexStateTreeRec.
+ */
+typedef struct _TMParseStateTreeRec{
+    unsigned int	isSimple:1;
+    unsigned int	isAccelerator:1;
+    unsigned int	mappingNotifyInterest:1;
+    unsigned int	isStackQuarks:1;
+    unsigned int	isStackBranchHeads:1;
+    unsigned int	isStackComplexBranchHeads:1;
+    unsigned int	unused:10; /* to ensure correct alignment */
+    TMShortCard		numBranchHeads;
+    TMShortCard		numQuarks;   /* # of entries in quarkTbl */
+    TMShortCard		numComplexBranchHeads;
+    TMBranchHeadRec	*branchHeadTbl;
+    XrmQuark		*quarkTbl;  /* table of quarkified rhs*/
+    StatePtr		*complexBranchHeadTbl;
+    TMShortCard		branchHeadTblSize;
+    TMShortCard		quarkTblSize; /*total size of quarkTbl */
+    TMShortCard		complexBranchHeadTblSize;
+    StatePtr		head;
+}TMParseStateTreeRec, *TMParseStateTree;
+
+typedef union _TMStateTreeRec{
+    TMSimpleStateTreeRec	simple;
+    TMParseStateTreeRec		parse;
+    TMComplexStateTreeRec	complex;
+}*TMStateTree, **TMStateTreePtr, **TMStateTreeList;
+
+typedef struct _TMSimpleBindProcsRec {
+    XtActionProc	*procs;
+}TMSimpleBindProcsRec, *TMSimpleBindProcs;
+
+typedef struct _TMComplexBindProcsRec {
+    Widget	 	widget;		/*widgetID to pass to action Proc*/
+    XtTranslations	aXlations;
+    XtActionProc	*procs;
+}TMComplexBindProcsRec, *TMComplexBindProcs;
+
+typedef struct _TMSimpleBindDataRec {
+    unsigned int		isComplex:1;	/* must be first */
+    TMSimpleBindProcsRec	bindTbl[1];	/* variable length */
+}TMSimpleBindDataRec, *TMSimpleBindData;
+
+typedef struct _TMComplexBindDataRec {
+    unsigned int		isComplex:1;	/* must be first */
+    struct _ATranslationData	*accel_context;	/* for GetValues */
+    TMComplexBindProcsRec	bindTbl[1]; 	/* variable length */
+}TMComplexBindDataRec, *TMComplexBindData;
+
+typedef union _TMBindDataRec{
+    TMSimpleBindDataRec		simple;
+    TMComplexBindDataRec	complex;
+}*TMBindData;
+
+typedef struct _TranslationData{
+    unsigned char		hasBindings;	/* must be first */
+    unsigned char		operation; /*replace,augment,override*/
+    TMShortCard			numStateTrees;
+    struct _TranslationData    	*composers[2];
+    EventMask			eventMask;
+    TMStateTree			stateTreeTbl[1]; /* variable length */
+}TranslationData;
+
+/*
+ * ATranslations is returned by GetValues for translations that contain
+ * accelerators.  The TM can differentiate between this and TranslationData
+ * (that don't have a bindTbl) by looking at the first field (hasBindings)
+ * of either structure.  All ATranslationData structures associated with a
+ * widget are chained off the BindData record of the widget.
+ */
+typedef struct _ATranslationData{
+    unsigned char		hasBindings;	/* must be first */
+    unsigned char		operation;
+    struct _TranslationData	*xlations;  /* actual translations */
+    struct _ATranslationData	*next;      /* chain the contexts together */
+    TMComplexBindProcsRec	bindTbl[1]; /* accelerator bindings */
+}ATranslationData, *ATranslations;
+
+typedef struct _TMConvertRec {
+    XtTranslations	old; /* table to merge into */
+    XtTranslations	new; /* table to merge from */
+} TMConvertRec;
+
+#define _XtEventTimerEventType ((TMLongCard)~0L)
+#define KeysymModMask		(1L<<27) /* private to TM */
+#define AnyButtonMask		(1L<<28) /* private to TM */
+
+typedef struct _EventRec {
+    TMLongCard modifiers;
+    TMLongCard modifierMask;
+    LateBindingsPtr lateModifiers;
+    TMLongCard eventType;
+    TMLongCard eventCode;
+    TMLongCard eventCodeMask;
+    MatchProc matchEvent;
+    Boolean standard;
+} Event;
+
+typedef struct _EventSeqRec *EventSeqPtr;
+typedef struct _EventSeqRec {
+    Event event;	/* X event description */
+    StatePtr state;	/* private to state table builder */
+    EventSeqPtr next;	/* next event on line */
+    ActionPtr actions;	/* r.h.s.   list of actions to perform */
+} EventSeqRec;
+
+typedef EventSeqRec EventRec;
+typedef EventSeqPtr EventPtr;
+
+typedef struct _TMEventRec {
+    XEvent *xev;
+    Event event;
+}TMEventRec;
+
+typedef struct _ActionHookRec {
+    struct _ActionHookRec* next; /* must remain first */
+    XtAppContext app;
+    XtActionHookProc proc;
+    XtPointer closure;
+} ActionHookRec, *ActionHook;
+
+/* choose a number between 2 and 8 */
+#define TMKEYCACHELOG2 6
+#define TMKEYCACHESIZE (1<<TMKEYCACHELOG2)
+
+typedef struct _KeyCacheRec {
+    unsigned char modifiers_return[256]; /* constant per KeyCode, key proc */
+    KeyCode keycode[TMKEYCACHESIZE];
+    unsigned char modifiers[TMKEYCACHESIZE];
+    KeySym keysym[TMKEYCACHESIZE];
+} TMKeyCache;
+
+typedef struct _TMKeyContextRec {
+    XEvent *event;
+    unsigned long serial;
+    KeySym keysym;
+    Modifiers modifiers;
+    TMKeyCache keycache;  /* keep this last, to keep offsets to others small */
+} TMKeyContextRec, *TMKeyContext;
+
+typedef struct _TMGlobalRec{
+    TMTypeMatchRec 		**typeMatchSegmentTbl;
+    TMShortCard			numTypeMatches;
+    TMShortCard			numTypeMatchSegments;
+    TMShortCard			typeMatchSegmentTblSize;
+    TMModifierMatchRec 		**modMatchSegmentTbl;
+    TMShortCard			numModMatches;
+    TMShortCard			numModMatchSegments;
+    TMShortCard			modMatchSegmentTblSize;
+    Boolean			newMatchSemantics;
+#ifdef TRACE_TM
+    XtTranslations		*tmTbl;
+    TMShortCard			numTms;
+    TMShortCard			tmTblSize;
+    struct _TMBindCacheRec	**bindCacheTbl;
+    TMShortCard			numBindCache;
+    TMShortCard			bindCacheTblSize;
+    TMShortCard			numLateBindings;
+    TMShortCard			numBranchHeads;
+    TMShortCard			numComplexStates;
+    TMShortCard			numComplexActions;
+#endif /* TRACE_TM */
+}TMGlobalRec;
+
+_XFUNCPROTOBEGIN
+
+extern TMGlobalRec _XtGlobalTM;
+
+#define TM_MOD_SEGMENT_SIZE 	16
+#define TM_TYPE_SEGMENT_SIZE 	16
+
+#define TMGetTypeMatch(idx) \
+  ((TMTypeMatch) \
+   &((_XtGlobalTM.typeMatchSegmentTbl[((idx) >> 4)])[(idx) & 15]))
+#define TMGetModifierMatch(idx) \
+  ((TMModifierMatch) \
+   &((_XtGlobalTM.modMatchSegmentTbl[(idx) >> 4])[(idx) & 15]))
+
+/* Useful Access Macros */
+#define TMNewMatchSemantics() (_XtGlobalTM.newMatchSemantics)
+#define TMBranchMore(branch) (branch->more)
+#define TMComplexBranchHead(tree, br) \
+  (((TMComplexStateTree)tree)->complexBranchHeadTbl[TMBranchMore(br)])
+
+#define TMGetComplexBindEntry(bindData, idx) \
+  ((TMComplexBindProcs)&(((TMComplexBindData)bindData)->bindTbl[idx]))
+
+#define TMGetSimpleBindEntry(bindData, idx) \
+  ((TMSimpleBindProcs)&(((TMSimpleBindData)bindData)->bindTbl[idx]))
+
+
+#define _InitializeKeysymTables(dpy, pd) \
+    if (pd->keysyms == NULL) \
+        _XtBuildKeysymTables(dpy, pd)
+
+/*
+ * Internal Functions
+ */
+
+extern void _XtPopup(
+    Widget      /* widget */,
+    XtGrabKind  /* grab_kind */,
+    _XtBoolean	/* spring_loaded */
+);
+
+extern String _XtPrintXlations(
+    Widget		/* w */,
+    XtTranslations 	/* xlations */,
+    Widget		/* accelWidget */,
+    _XtBoolean		/* includeRHS */
+);
+
+extern void _XtRegisterGrabs(
+    Widget	/* widget */
+);
+
+extern XtPointer _XtInitializeActionData(
+    struct _XtActionsRec *	/* actions */,
+    Cardinal 			/* count */,
+    _XtBoolean			/* inPlace */
+);
+
+extern void _XtAddEventSeqToStateTree(
+    EventSeqPtr		/* eventSeq */,
+    TMParseStateTree	/* stateTree */
+);
+
+extern Boolean _XtMatchUsingStandardMods(
+    TMTypeMatch		/* typeMatch */,
+    TMModifierMatch	/* modMatch */,
+    TMEventPtr		/* eventSeq */
+);
+
+extern Boolean _XtMatchUsingDontCareMods(
+    TMTypeMatch		/* typeMatch */,
+    TMModifierMatch	/* modMatch */,
+    TMEventPtr		/* eventSeq */
+);
+
+extern Boolean _XtRegularMatch(
+    TMTypeMatch		/* typeMatch */,
+    TMModifierMatch	/* modMatch */,
+    TMEventPtr		/* eventSeq */
+);
+
+extern Boolean _XtMatchAtom(
+    TMTypeMatch		/* typeMatch */,
+    TMModifierMatch	/* modMatch */,
+    TMEventPtr		/* eventSeq */
+);
+
+extern void _XtTranslateEvent(
+    Widget		/* widget */,
+    XEvent*		/* event */
+);
+
+#include "CallbackI.h"
+#include "EventI.h"
+#include "HookObjI.h"
+#include "PassivGraI.h"
+#include "ThreadsI.h"
+#include "InitialI.h"
+#include "ResourceI.h"
+#include "StringDefs.h"
+
+extern void _XtBuildKeysymTables(Display *dpy, XtPerDisplay pd);
+
+#ifndef NO_MIT_HACKS
+extern void  _XtDisplayTranslations(
+    Widget		/* widget */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern void  _XtDisplayAccelerators(
+    Widget		/* widget */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+
+extern void _XtDisplayInstalledAccelerators(
+    Widget		/* widget */,
+    XEvent*		/* event */,
+    String*		/* params */,
+    Cardinal*		/* num_params */
+);
+#endif /* ifndef NO_MIT_HACKS */
+
+extern void _XtPopupInitialize(
+    XtAppContext	/* app_context */
+);
+
+extern void _XtBindActions(
+    Widget	/* widget */,
+    XtTM 	/* tm_rec */
+);
+
+extern Boolean _XtComputeLateBindings(
+    Display*		/* dpy */,
+    LateBindingsPtr	/* lateModifiers */,
+    Modifiers*		/* computed */,
+    Modifiers*		/* computedMask */
+);
+
+extern XtTranslations _XtCreateXlations(
+    TMStateTree *	/* stateTrees */,
+    TMShortCard		/* numStateTrees */,
+    XtTranslations 	/* first */,
+    XtTranslations	/* second */
+);
+
+extern Boolean _XtCvtMergeTranslations(
+    Display*	/* dpy */,
+    XrmValuePtr	/* args */,
+    Cardinal*	/* num_args */,
+    XrmValuePtr	/* from */,
+    XrmValuePtr	/* to */,
+    XtPointer*	/* closure_ret */
+);
+
+void _XtRemoveStateTreeByIndex(
+    XtTranslations	/* xlations */,
+    TMShortCard	/* i */);
+
+void _XtFreeTranslations(
+    XtAppContext	/* app */,
+    XrmValuePtr		/* toVal */,
+    XtPointer		/* closure */,
+    XrmValuePtr		/* args */,
+    Cardinal*		/* num_args */
+);
+
+extern TMShortCard _XtGetModifierIndex(
+    Event*	/* event */
+);
+
+extern TMShortCard _XtGetQuarkIndex(
+    TMParseStateTree	/* stateTreePtr */,
+    XrmQuark		/* quark */
+);
+
+extern XtTranslations _XtGetTranslationValue(
+    Widget		/* widget */
+);
+
+extern TMShortCard _XtGetTypeIndex(
+    Event*	/* event */
+);
+
+extern void _XtGrabInitialize(
+    XtAppContext	/* app */
+);
+
+extern void _XtInstallTranslations(
+    Widget		/* widget */
+);
+
+extern void _XtRemoveTranslations(
+    Widget		/* widget */
+);
+
+extern void _XtDestroyTMData(
+    Widget		/* widget */
+);
+
+extern void _XtMergeTranslations(
+    Widget		/* widget */,
+    XtTranslations	/* newXlations */,
+    _XtTranslateOp	/* operation */
+);
+
+extern void _XtActionInitialize(
+    XtAppContext	/* app */
+);
+
+extern TMStateTree _XtParseTreeToStateTree(
+    TMParseStateTree 	/* parseTree */
+);
+
+extern String _XtPrintActions(
+    ActionRec*	/* actions */,
+    XrmQuark*	/* quarkTbl */
+);
+
+extern String _XtPrintState(
+    TMStateTree	/* stateTree */,
+    TMBranchHead /* branchHead */);
+
+extern String _XtPrintEventSeq(
+    EventSeqPtr	/* eventSeq */,
+    Display*	/* dpy */
+);
+
+typedef Boolean (*_XtTraversalProc)(
+    StatePtr	/* state */,
+    XtPointer	/* data */
+);
+
+extern void _XtTraverseStateTree(
+    TMStateTree		/* tree */,
+    _XtTraversalProc	/* func */,
+    XtPointer		/* data */
+);
+
+extern void _XtTranslateInitialize(
+    void
+);
+
+extern void _XtAddTMConverters(
+    ConverterTable	/* table */
+);
+
+extern void _XtUnbindActions(
+    Widget		/* widget */,
+    XtTranslations	/* xlations */,
+    TMBindData		/* bindData */
+);
+
+extern void _XtUnmergeTranslations(
+    Widget		/* widget */,
+    XtTranslations 	/* xlations */
+);
+
+/* TMKey.c */
+extern void _XtAllocTMContext(XtPerDisplay pd);
+
+_XFUNCPROTOEND
diff --git a/libXt/include/X11/VarargsI.h b/libXt/include/X11/VarargsI.h
new file mode 100644
index 000000000..76ce9bc7e
--- /dev/null
+++ b/libXt/include/X11/VarargsI.h
@@ -0,0 +1,69 @@
+/* $Xorg: VarargsI.h,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/*
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/VarargsI.h,v 3.6 2001/12/14 19:56:32 dawes Exp $ */
+
+#ifndef _VarargsI_h_ 
+#define _VarargsI_h_ 
+
+#include <stdarg.h>
+ 
+/* private routines */
+
+_XFUNCPROTOBEGIN
+
+extern void _XtCountVaList(
+    va_list /*var*/, int* /*total_count*/, int* /*typed_count*/
+);
+
+extern void _XtVaToArgList(
+   Widget /*widget*/, va_list /*var*/, int /*max_count*/, ArgList* /*args_return*/, Cardinal* /*num_args_return*/
+);
+
+extern void _XtVaToTypedArgList(
+    va_list /*var*/, int /*count*/, XtTypedArgList* /*args_return*/, Cardinal* /*num_args_return*/
+);
+
+extern XtTypedArgList _XtVaCreateTypedArgList(
+    va_list /*var*/, int /*count*/
+);
+
+extern void _XtFreeArgList(
+    ArgList /*args*/, int /*total_count*/, int /*typed_count*/
+);
+
+extern void _XtGetApplicationResources(
+    Widget /*w*/, XtPointer /*base*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/
+);
+
+extern void _XtGetSubresources(
+    Widget /*w*/, XtPointer /*base*/, const char* /*name*/, const char* /*class*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/
+);
+
+_XFUNCPROTOEND
+
+#endif /* _VarargsI_h_ */
diff --git a/libXt/include/X11/Vendor.h b/libXt/include/X11/Vendor.h
new file mode 100644
index 000000000..633d17aa1
--- /dev/null
+++ b/libXt/include/X11/Vendor.h
@@ -0,0 +1,75 @@
+/*
+* $Xorg: Vendor.h,v 1.5 2001/02/09 02:03:59 xorgcvs Exp $
+* $oHeader: Vendor.h,v 1.2 88/08/18 15:56:44 asente Exp $
+*/
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XtVendor_h
+#define _XtVendor_h
+
+#include <X11/Intrinsic.h>
+
+/***********************************************************************
+ *
+ * VendorShell Widget
+ *
+ ***********************************************************************/
+
+/* Class record constants */
+
+typedef struct _VendorShellClassRec *VendorShellWidgetClass;
+
+_XFUNCPROTOBEGIN
+
+externalref WidgetClass vendorShellWidgetClass;
+
+_XFUNCPROTOEND
+
+#endif /* _XtVendor_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/include/X11/VendorP.h b/libXt/include/X11/VendorP.h
new file mode 100644
index 000000000..e60857d9e
--- /dev/null
+++ b/libXt/include/X11/VendorP.h
@@ -0,0 +1,107 @@
+/*
+* $Xorg: VendorP.h,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $
+* $oHeader: VendorP.h,v 1.2 88/08/18 15:56:48 asente Exp $
+*/
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/* 
+ * VendorP.h - Private definitions for VendorShell widget
+ * 
+ * Author:	Paul Asente
+ * 		Digital Equipment Corporation
+ * 		Western Software Laboratory
+ * Date:	Thu Dec 3, 1987
+ */
+
+/***********************************************************************
+ *
+ * VendorShell Widget Private Data
+ *
+ ***********************************************************************/
+
+#ifndef  _XtVendorPrivate_h
+#define _XtVendorPrivate_h
+
+#include <X11/Vendor.h>
+
+/* New fields for the VendorShell widget class record */
+
+_XFUNCPROTOBEGIN
+
+typedef struct {
+    XtPointer       extension;          /* pointer to extension record      */
+} VendorShellClassPart;
+
+typedef struct _VendorShellClassRec {
+  	CoreClassPart      core_class;
+	CompositeClassPart composite_class;
+	ShellClassPart  shell_class;
+	WMShellClassPart   wm_shell_class;
+	VendorShellClassPart vendor_shell_class;
+} VendorShellClassRec;
+
+externalref VendorShellClassRec vendorShellClassRec;
+
+/* New fields for the vendor shell widget. */
+
+typedef struct {
+	int		vendor_specific;
+} VendorShellPart;
+
+typedef  struct {
+	CorePart 	core;
+	CompositePart 	composite;
+	ShellPart 	shell;
+	WMShellPart	wm;
+	VendorShellPart	vendor;
+} VendorShellRec, *VendorShellWidget;
+
+_XFUNCPROTOEND
+
+#endif  /* _XtVendorPrivate_h */
diff --git a/libXt/include/X11/Xtos.h b/libXt/include/X11/Xtos.h
new file mode 100644
index 000000000..013b2416c
--- /dev/null
+++ b/libXt/include/X11/Xtos.h
@@ -0,0 +1,77 @@
+/*
+* $Xorg: Xtos.h,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $
+*/
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Xtos.h,v 3.12tsi Exp $ */
+
+#ifndef _Xtos_h
+#define _Xtos_h
+
+#define ALLOCATE_LOCAL_FALLBACK(_size) XtMalloc((unsigned long)(_size))
+#define DEALLOCATE_LOCAL_FALLBACK(_ptr) XtFree((XtPointer)(_ptr))
+#include <X11/Xalloca.h>
+
+#ifdef CRAY
+#define WORD64
+#endif
+
+#if defined (_LP64) || \
+    defined(__alpha) || defined(__alpha__) || \
+    defined(__ia64__) || defined(ia64) || \
+    defined(__sparc64__) || \
+    defined(__s390x__) || \
+    (defined(__hppa__) && defined(__LP64__)) || \
+    defined(__amd64__) || defined(amd64) || \
+    defined(__powerpc64__) || \
+    (defined(sgi) && (_MIPS_SZLONG == 64))
+#define LONG64
+#endif
+
+#endif /* _Xtos_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/install-sh b/libXt/install-sh
new file mode 100644
index 000000000..6781b987b
--- /dev/null
+++ b/libXt/install-sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # 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.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# 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_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+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 the last 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.
+  -s            $stripprog installed files.
+  -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
+"
+
+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
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+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
+  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
+  trap '(exit $?); exit' 1 2 13 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 starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  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
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# 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
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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-writeable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or 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
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test -z "$d" && 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=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_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 && $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` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # 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 -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$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 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libXt/ltmain.sh b/libXt/ltmain.sh
new file mode 100644
index 000000000..27d498a08
--- /dev/null
+++ b/libXt/ltmain.sh
@@ -0,0 +1,6956 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008  Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# 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.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.26
+TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  SP2NL='tr \040 \012'
+  NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  SP2NL='tr \100 \n'
+  NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+lt_env=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+	  save_$lt_var=\$$lt_var
+	  lt_env=\"$lt_var=\$$lt_var \$lt_env\"
+	  $lt_var=C
+	  export $lt_var
+	fi"
+done
+
+if test -n "$lt_env"; then
+  lt_env="env $lt_env"
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+	# Failing that, at least try and use $RANDOM to avoid a race
+	my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+	save_mktempdir_umask=`umask`
+	umask 0077
+	$mkdir "$my_tmpdir"
+	umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || {
+        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+	exit $EXIT_FAILURE
+      }
+    fi
+
+    $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	$SED -n -e '1,100{
+		/ I /{
+			s,.*,import,
+			p
+			q
+			}
+		}'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  extracted_serial=`expr $extracted_serial + 1`
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $exit_status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      lipo -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    ${rm}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "\
+$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
+
+Copyright (C) 2008  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."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag)
+    prevopt="--tag"
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no) 
+  ;;
+shared)
+  build_libtool_libs=no
+  build_old_libs=yes
+  ;;
+static)
+  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+  ;;
+esac
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.[fF][09]?) xform=[fF][09]. ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    *.obj) xform=obj ;;
+    *.sx) xform=sx ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qlibobj="\"$qlibobj\"" ;;
+    esac
+    test "X$libobj" != "X$qlibobj" \
+	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
+	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	exit_status=$?
+	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $exit_status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval $lt_env "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval $lt_env "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    notinst_path= # paths that contain not-installed libtool libraries
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    single_module="${wl}-single_module"
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static | -static-libtool-libs)
+	case $arg in
+	-all-static)
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	-static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+	-static-libtool-libs)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+	esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	darwin_framework|darwin_framework_skip)
+	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework|-arch|-isysroot)
+	case " $CC " in
+	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
+		prev=darwin_framework_skip ;;
+	  *) compiler_flags="$compiler_flags $arg"
+	     prev=darwin_framework ;;
+	esac
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    absdir="$dir"
+	    notinst_path="$notinst_path $dir"
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -multi_module)
+	single_module="${wl}-multi_module"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+      # -F/path gives path to uninstalled frameworks, gcc on darwin
+      # @file GCC response files
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # and Darwin in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object="$pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $exit_status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  if test "$linkmode" = lib; then
+	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+	  else
+	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+	  fi
+	  for searchdir in $searchdirs; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		  valid_a_lib=yes
+		fi
+		;;
+	      pass_all)
+		valid_a_lib=yes
+		;;
+            esac
+	    if test "$valid_a_lib" != yes; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { { test "$prefer_static_libs" = no ||
+		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	       test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $absdir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test "$use_static_libs" = built && test "$installed" = yes ; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null |
+                      $EGREP ": [^:]* bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$deplibdir/$depdepl" ; then
+		      depdepl="$deplibdir/$depdepl"
+	      	    elif test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    else
+		      # Can't find it, oh well...
+		      depdepl=
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
+      esac
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows|none)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    lt_irix_increment=no
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  if test "X$lt_irix_increment" = "Xno"; then
+	    major=`expr $current - $age`
+	  else
+	    major=`expr $current - $age + 1`
+	  fi
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "*** make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      deplibs="$new_libs"
+
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      case $archive_cmds in
+	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
+	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
+	      esac
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	linknames=
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			tmp_deplibs="$tmp_deplibs $test_deplib"
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  fi
+	fi
+	
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" &&
+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$mode" = relink; then
+	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      $show "${rm}r $gentop"
+	      $run ${rm}r "$gentop"
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
+      esac
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
+	    else
+	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+          case $host in
+          *cygwin* | *mingw* )
+            if test -f "$output_objdir/${outputname}.def" ; then
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            else
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+             fi
+            ;;
+          * )
+            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            ;;
+          esac
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	exit_status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $exit_status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+            output_name=`basename $output`
+            output_path=`dirname $output`
+            cwrappersource="$output_path/$objdir/lt-$output_name.c"
+            cwrapper="$output_path/$output_name.exe"
+            $rm $cwrappersource $cwrapper
+            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS.  */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int    check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  DEBUG("(main) argv[0]      : %s\n",argv[0]);
+  DEBUG("(main) program_name : %s\n",program_name);
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+            cat >> $cwrappersource <<EOF
+  newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+            cat >> $cwrappersource <<"EOF"
+  newargz[1] = find_executable(argv[0]);
+  if (newargz[1] == NULL)
+    lt_fatal("Couldn't find %s", argv[0]);
+  DEBUG("(main) found exe at : %s\n",newargz[1]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+
+  for (i=0; i<argc+1; i++)
+  {
+    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
+    ;
+  }
+
+EOF
+
+            case $host_os in
+              mingw*)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",(char const **)newargz);
+EOF
+              ;;
+              *)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+              ;;
+            esac
+
+            cat >> $cwrappersource <<"EOF"
+  return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable(const char * path)
+{
+  struct stat st;
+
+  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0) &&
+      (
+        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+       ((st.st_mode & S_IXUSR) == S_IXUSR))
+      )
+    return 1;
+  else
+    return 0;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise */
+char *
+find_executable (const char* wrapper)
+{
+  int has_slash = 0;
+  const char* p;
+  const char* p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char* concat_name;
+
+  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+  {
+    concat_name = xstrdup (wrapper);
+    if (check_executable(concat_name))
+      return concat_name;
+    XFREE(concat_name);
+  }
+  else
+  {
+#endif
+    if (IS_DIR_SEPARATOR (wrapper[0]))
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable(concat_name))
+        return concat_name;
+      XFREE(concat_name);
+    }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+    {
+      has_slash = 1;
+      break;
+    }
+  if (!has_slash)
+  {
+    /* no slashes; search PATH */
+    const char* path = getenv ("PATH");
+    if (path != NULL)
+    {
+      for (p = path; *p; p = p_next)
+      {
+        const char* q;
+        size_t p_len;
+        for (q = p; *q; q++)
+          if (IS_PATH_SEPARATOR(*q))
+            break;
+        p_len = q - p;
+        p_next = (*q == '\0' ? q : q + 1);
+        if (p_len == 0)
+        {
+          /* empty path: current directory */
+          if (getcwd (tmp, LT_PATHMAX) == NULL)
+            lt_fatal ("getcwd failed");
+          tmp_len = strlen(tmp);
+          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+          memcpy (concat_name, tmp, tmp_len);
+          concat_name[tmp_len] = '/';
+          strcpy (concat_name + tmp_len + 1, wrapper);
+        }
+        else
+        {
+          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+          memcpy (concat_name, p, p_len);
+          concat_name[p_len] = '/';
+          strcpy (concat_name + p_len + 1, wrapper);
+        }
+        if (check_executable(concat_name))
+          return concat_name;
+        XFREE(concat_name);
+      }
+    }
+    /* not found in PATH; assume curdir */
+  }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  tmp_len = strlen(tmp);
+  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable(concat_name))
+    return concat_name;
+  XFREE(concat_name);
+  return NULL;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+          # we should really use a build-platform specific compiler
+          # here, but OTOH, the wrappers (shell script and this C one)
+          # are only useful if you want to execute the "real" binary.
+          # Since the "real" binary is built for $host, then this
+          # wrapper might as well be built for $host, too.
+          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+          ;;
+        esac
+        $rm $output
+        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \$*\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    exit_status=$?
+	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+	      exit $exit_status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) 
+      	case " $install_prog " in
+	*[\\\ /]cp\ *) ;;
+	*) prev=$arg ;;
+	esac
+	;;
+      -g | -m | -o) prev=$arg ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
+	  else
+	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || {
+	      lt_exit=$?
+
+	      # Restore the uninstalled library and exit
+	      if test "$mode" = relink; then
+		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	      fi
+
+	      exit $lt_exit
+	    }
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir=`func_mktempdir`
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway 
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "X----------------------------------------------------------------------" | $Xsed
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "X----------------------------------------------------------------------" | $Xsed
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+		$lt_var=\$save_$lt_var; export $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+	  case "$mode" in
+	  clean)
+	    case "  $library_names " in
+	    # "  " in the beginning catches empty $dlname
+	    *" $dlname "*) ;;
+	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    esac
+	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/libXt/man/Makefile.am b/libXt/man/Makefile.am
new file mode 100644
index 000000000..140648e75
--- /dev/null
+++ b/libXt/man/Makefile.am
@@ -0,0 +1,811 @@
+libmandir = $(LIB_MAN_DIR)
+
+LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
+
+libman_PRE = \
+	XtAddActions.man \
+	XtAddCallback.man \
+	XtAddEventHandler.man \
+	XtAddExposureToRegion.man \
+	XtAddGrab.man \
+	XtAddInput.man \
+	XtAllocateGC.man \
+	XtAppAddActionHook.man \
+	XtAppAddActions.man \
+	XtAppAddBlockHook.man \
+	XtAppAddConverter.man \
+	XtAppAddInput.man \
+	XtAppAddSignal.man \
+	XtAppAddTimeOut.man \
+	XtAppAddWorkProc.man \
+	XtAppCreateShell.man \
+	XtAppError.man \
+	XtAppErrorMsg.man \
+	XtAppGetErrorDatabase.man \
+	XtAppGetSelectionTimeout.man \
+	XtAppInitialize.man \
+	XtAppLock.man \
+	XtAppNextEvent.man \
+	XtAppReleaseCacheRefs.man \
+	XtAppSetExitFlag.man \
+	XtAppSetFallbackResources.man \
+	XtAppSetTypeConverter.man \
+	XtBuildEventMask.man \
+	XtCallAcceptFocus.man \
+	XtCallActionProc.man \
+	XtCallCallbacks.man \
+	XtClass.man \
+	XtConfigureWidget.man \
+	XtConvert.man \
+	XtConvertAndStore.man \
+	XtCreateApplicationContext.man \
+	XtCreateApplicationShell.man \
+	XtCreatePopupShell.man \
+	XtCreateSelectionRequest.man \
+	XtCreateWidget.man \
+	XtCreateWindow.man \
+	XtDisplay.man \
+	XtDisplayInitialize.man \
+	XtDisplayStringConversionWarning.man \
+	XtDisplayToApplicationContext.man \
+	XtError.man \
+	XtErrorMsg.man \
+	XtFindFile.man \
+	XtGetActionKeysym.man \
+	XtGetActionList.man \
+	XtGetApplicationNameAndClass.man \
+	XtGetApplicationResources.man \
+	XtGetClassExtension.man \
+	XtGetDisplays.man \
+	XtGetErrorDatabase.man \
+	XtGetGC.man \
+	XtGetKeyboardFocusWidget.man \
+	XtGetKeysymTable.man \
+	XtGetResourceList.man \
+	XtGetSelectionParameters.man \
+	XtGetSelectionRequest.man \
+	XtGetSelectionTimeout.man \
+	XtGetSelectionValue.man \
+	XtGetSelectionValueIncremental.man \
+	XtGetSubresources.man \
+	XtGrabKey.man \
+	XtHooksOfDisplay.man \
+	XtInitialize.man \
+	XtInitializeWidgetClass.man \
+	XtInsertEventTypeHandler.man \
+	XtLastEventProcessed.man \
+	XtMakeGeometryRequest.man \
+	XtMalloc.man \
+	XtManageChildren.man \
+	XtMapWidget.man \
+	XtName.man \
+	XtNameToWidget.man \
+	XtNextEvent.man \
+	XtOffset.man \
+	XtOpenApplication.man \
+	XtOwnSelection.man \
+	XtParent.man \
+	XtParseAcceleratorTable.man \
+	XtParseTranslationTable.man \
+	XtPopdown.man \
+	XtPopup.man \
+	XtProcessLock.man \
+	XtQueryGeometry.man \
+	XtRealizeWidget.man \
+	XtRegisterDrawable.man \
+	XtRegisterGrabAction.man \
+	XtReservePropertyAtom.man \
+	XtResolvePathname.man \
+	XtSessionGetToken.man \
+	XtSetArg.man \
+	XtSetKeyTranslator.man \
+	XtSetKeyboardFocus.man \
+	XtSetLanguageProc.man \
+	XtSetMultiClickTime.man \
+	XtSetSelectionParameters.man \
+	XtSetSensitive.man \
+	XtSetValues.man \
+	XtSetWMColormapWindows.man \
+	XtStringConversionWarning.man \
+	XtToolkitThreadInitialize.man \
+	XtTranslateCoords.man \
+	XtVaCreateArgsList.man
+
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \
+	      $(all_shadows:=.@LIB_MAN_SUFFIX@)
+
+EXTRA_DIST = $(libman_PRE)
+
+CLEANFILES = $(libman_DATA)
+
+# Rules for generating files using the C pre-processor
+# (Replaces CppFileTarget from Imake)
+
+SED = sed
+
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
+# to cpp, because that trick does not work on all ANSI C preprocessors.
+# Delete line numbers from the cpp output (-P is not portable, I guess).
+# Allow XCOMM to be preceded by whitespace and provide a means of generating
+# output lines with trailing backslashes.
+# Allow XHASH to always be substituted, even in cases where XCOMM isn't.
+
+CPP_SED_MAGIC = $(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/\@\@$$/\\/'
+
+# Strings to replace in man pages
+XORGRELSTRING = @PACKAGE_STRING@
+  XORGMANNAME = X Version 11
+  XSERVERNAME = Xorg
+
+MANDEFS = \
+        -D__vendorversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
+        -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
+	-D__appmansuffix__=$(APP_MAN_SUFFIX) \
+	-D__filemansuffix__=$(FILE_MAN_SUFFIX) \
+	-D__libmansuffix__=$(LIB_MAN_SUFFIX) \
+	-D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
+	-D__drivermansuffix__=$(DRIVER_MAN_SUFFIX) \
+	-D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) \
+	-D__projectroot__=$(prefix)
+
+.man.$(LIB_MAN_SUFFIX):
+	$(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(MANDEFS) $(EXTRAMANDEFS) < $< | $(CPP_SED_MAGIC) > $@
+
+
+# Generate man page shadow files (Replaces InstallManPageAliases from Imake)
+
+all_shadows =                                \
+    $(XtAddCallback_shadows)                 \
+    $(XtAddEventHandler_shadows)             \
+    $(XtAddGrab_shadows)                     \
+    $(XtAppAddConverter_shadows)             \
+    $(XtAppAddInput_shadows)                 \
+    $(XtAppAddTimeOut_shadows)               \
+    $(XtAppAddWorkProc_shadows)              \
+    $(XtAppCreateShell_shadows)              \
+    $(XtAppError_shadows)                    \
+    $(XtAppErrorMsg_shadows)                 \
+    $(XtAppGetErrorDatabase_shadows)         \
+    $(XtAppGetSelectionTimeout_shadows)      \
+    $(XtAppNextEvent_shadows)                \
+    $(XtNextEvent_shadows)                   \
+    $(XtCallCallbacks_shadows)               \
+    $(XtClass_shadows)                       \
+    $(XtConfigureWidget_shadows)             \
+    $(XtConvert_shadows)                     \
+    $(XtConvertAndStore_shadows)             \
+    $(XtCreateApplicationContext_shadows)    \
+    $(XtCreatePopupShell_shadows)            \
+    $(XtCreateWidget_shadows)                \
+    $(XtDisplay_shadows)                     \
+    $(XtDisplayInitialize_shadows)           \
+    $(XtGetGC_shadows)                       \
+    $(XtGetResourceList_shadows)             \
+    $(XtGetSelectionValue_shadows)           \
+    $(XtGetSubresources_shadows)             \
+    $(XtGetApplicationResources_shadows)     \
+    $(XtMakeGeometryRequest_shadows)         \
+    $(XtMalloc_shadows)                      \
+    $(XtManageChildren_shadows)              \
+    $(XtMapWidget_shadows)                   \
+    $(XtNameToWidget_shadows)                \
+    $(XtOffset_shadows)                      \
+    $(XtOwnSelection_shadows)                \
+    $(XtParseAcceleratorTable_shadows)       \
+    $(XtParseTranslationTable_shadows)       \
+    $(XtPopdown_shadows)                     \
+    $(XtPopup_shadows)                       \
+    $(XtRealizeWidget_shadows)               \
+    $(XtSetArg_shadows)                      \
+    $(XtSetKeyTranslator_shadows)            \
+    $(XtSetSensitive_shadows)                \
+    $(XtSetValues_shadows)                   \
+    $(XtGetKeysymTable_shadows)              \
+    $(XtAppSetTypeConverter_shadows)         \
+    $(XtAppAddActionHook_shadows)            \
+    $(XtSetMultiClickTime_shadows)           \
+    $(XtInsertEventTypeHandler_shadows)      \
+    $(XtLastEventProcessed_shadows)          \
+    $(XtAppAddSignal_shadows)                \
+    $(XtAddInput_shadows)                    \
+    $(XtAppAddBlockHook_shadows)             \
+    $(XtAppInitialize_shadows)               \
+    $(XtSessionGetToken_shadows)             \
+    $(XtErrorMsg_shadows)                    \
+    $(XtError_shadows)                       \
+    $(XtGetErrorDatabase_shadows)            \
+    $(XtGetSelectionValueIncremental_shadows) \
+    $(XtGetSelectionTimeout_shadows)         \
+    $(XtCreateSelectionRequest_shadows)      \
+    $(XtReservePropertyAtom_shadows)         \
+    $(XtGrabKey_shadows)                     \
+    $(XtRegisterDrawable_shadows)            \
+    $(XtAppSetExitFlag_shadows)              \
+    $(XtAppLock_shadows)                     \
+    $(XtProcessLock_shadows)                 \
+    $(XtOpenApplication_shadows)
+
+
+
+XtAddCallback_shadows =                     \
+    XtAddCallbacks                          \
+    XtRemoveCallback                        \
+    XtRemoveCallbacks                       \
+    XtRemoveAllCallbacks
+
+XtAddEventHandler_shadows =                 \
+    XtAddRawEventHandler                    \
+    XtRemoveEventHandler                    \
+    XtRemoveRawEventHandler                 \
+    XtInsertEventHandler                    \
+    XtInsertRawEventHandler
+
+XtAddGrab_shadows =                         \
+    XtRemoveGrab
+
+XtAppAddConverter_shadows =                 \
+    XtAddConverter
+
+XtAppAddInput_shadows =                     \
+    XtRemoveInput
+
+XtAppAddTimeOut_shadows =                   \
+    XtRemoveTimeOut
+
+XtAppAddWorkProc_shadows =                  \
+    XtRemoveWorkProc
+
+XtAppCreateShell_shadows =                  \
+    XtVaAppCreateShell
+
+XtAppError_shadows =                        \
+    XtAppSetErrorHandler                    \
+    XtAppSetWarningHandler                  \
+    XtAppWarning
+
+XtAppErrorMsg_shadows =                     \
+    XtAppSetErrorMsgHandler                 \
+    XtAppSetWarningMsgHandler               \
+    XtAppWarningMsg
+
+XtAppGetErrorDatabase_shadows =             \
+    XtAppGetErrorDatabaseText
+
+XtAppGetSelectionTimeout_shadows =          \
+    XtAppSetSelectionTimeout
+
+XtAppNextEvent_shadows =                    \
+    XtAppPending                            \
+    XtAppPeekEvent                          \
+    XtAppProcessEvent                       \
+    XtDispatchEvent                         \
+    XtAppMainLoop
+
+XtNextEvent_shadows =                       \
+    XtPending                               \
+    XtPeekEvent                             \
+    XtProcessEvent                          \
+    XtMainLoop
+
+XtCallCallbacks_shadows =                   \
+    XtCallCallbackList                      \
+    XtHasCallbacks
+
+XtClass_shadows =                           \
+    XtSuperclass                            \
+    XtIsSubclass                            \
+    XtCheckSubclass                         \
+    XtIsObject                              \
+    XtIsRectObj                             \
+    XtIsWidget                              \
+    XtIsComposite                           \
+    XtIsConstraint                          \
+    XtIsShell                               \
+    XtIsOverrideShell                       \
+    XtIsWMShell                             \
+    XtIsVendorShell                         \
+    XtIsTransientShell                      \
+    XtIsTopLevelShell                       \
+    XtIsApplicationShell                    \
+    XtIsSessionShell
+
+XtConfigureWidget_shadows =                 \
+    XtMoveWidget                            \
+    XtResizeWidget
+
+XtConvert_shadows =                         \
+    XtDirectConvert
+
+XtConvertAndStore_shadows =                 \
+    XtCallConverter
+
+XtCreateApplicationContext_shadows =        \
+    XtDestroyApplicationContext             \
+    XtWidgetToApplicationContext            \
+    XtToolkitInitialize
+
+XtCreatePopupShell_shadows =                \
+    XtVaCreatePopupShell
+
+XtCreateWidget_shadows =                    \
+    XtVaCreateWidget                        \
+    XtCreateManagedWidget                   \
+    XtVaCreateManagedWidget                 \
+    XtDestroyWidget
+
+XtDisplay_shadows =                         \
+                                            \
+    XtDisplayOfObject                       \
+    XtScreen                                \
+    XtScreenOfObject                        \
+    XtWindow                                \
+    XtWindowOfObject
+
+XtDisplayInitialize_shadows =               \
+    XtOpenDisplay                           \
+    XtCloseDisplay                          \
+    XtDatabase                              \
+    XtScreenDatabase
+
+XtGetGC_shadows =                           \
+    XtReleaseGC
+
+XtGetResourceList_shadows =                 \
+    XtGetConstraintResourceList
+
+XtGetSelectionValue_shadows =               \
+    XtGetSelectionValues
+
+XtGetSubresources_shadows =                 \
+    XtVaGetSubresources
+
+XtGetApplicationResources_shadows =         \
+    XtVaGetApplicationResources
+
+XtMakeGeometryRequest_shadows =             \
+    XtMakeResizeRequest
+
+XtMalloc_shadows =                          \
+    XtCalloc                                \
+    XtRealloc                               \
+    XtFree                                  \
+    XtNew                                   \
+    XtNewString
+
+XtManageChildren_shadows =                  \
+    XtManageChild                           \
+    XtUnmanageChildren                      \
+    XtUnmanageChild                         \
+    XtIsManaged                             \
+    XtChangeManagedSet
+
+XtMapWidget_shadows =                       \
+    XtSetMappedWhenManaged                  \
+    XtUnmapWidget
+
+XtNameToWidget_shadows =                    \
+    XtWindowToWidget
+
+XtOffset_shadows =                          \
+    XtOffsetOf                              \
+    XtNumber
+
+XtOwnSelection_shadows =                    \
+    XtOwnSelectionIncremental               \
+    XtDisownSelection
+
+XtParseAcceleratorTable_shadows =           \
+    XtInstallAccelerators                   \
+    XtInstallAllAccelerators
+
+XtParseTranslationTable_shadows =           \
+    XtAugmentTranslations                   \
+    XtOverrideTranslations                  \
+    XtUninstallTranslations
+
+XtPopdown_shadows =                         \
+    XtCallbackPopdown                       \
+    MenuPopdown
+
+XtPopup_shadows =                           \
+    XtPopupSpringLoaded                     \
+    XtCallbackNone                          \
+    XtCallbackNonexclusive                  \
+    XtCallbackExclusive                     \
+    MenuPopup
+
+XtRealizeWidget_shadows =                   \
+    XtIsRealized                            \
+    XtUnrealizeWidget
+
+XtSetArg_shadows =                          \
+    XtMergeArgLists
+
+XtSetKeyTranslator_shadows =                \
+    XtTranslateKeycode                      \
+    XtRegisterCaseConverter                 \
+    XtConvertCase
+
+XtSetSensitive_shadows =                    \
+    XtIsSensitive
+
+XtSetValues_shadows =                       \
+    XtVaSetValues                           \
+    XtSetSubvalues                          \
+    XtGetValues                             \
+    XtVaGetValues                           \
+    XtGetSubvalues                          \
+    XtVaGetSubvalues                        \
+    XtVaSetSubvalues
+
+XtGetKeysymTable_shadows =                  \
+    XtKeysymToKeycodeList
+
+XtAppSetTypeConverter_shadows =             \
+    XtSetTypeConverter
+
+XtAppAddActionHook_shadows =                \
+    XtRemoveActionHook
+
+XtSetMultiClickTime_shadows =               \
+    XtGetMultiClickTime
+
+XtInsertEventTypeHandler_shadows =          \
+    XtRemoveEventTypeHandler                \
+    XtRegisterExtensionSelector             \
+    XtSetEventDispatcher                    \
+    XtDispatchEventToWidget
+
+XtLastEventProcessed_shadows =              \
+    XtLastTimestampProcessed
+
+XtAppAddSignal_shadows =                    \
+    XtNoticeSignal                          \
+    XtRemoveSignal
+
+XtAddInput_shadows =                        \
+    XtAddTimeOut                            \
+    XtAddWorkProc
+
+XtAppAddBlockHook_shadows =                 \
+    XtRemoveBlockHook
+
+XtAppInitialize_shadows =                   \
+    XtVaAppInitialize
+
+XtSessionGetToken_shadows =                 \
+    XtSessionReturnToken
+
+XtErrorMsg_shadows =                        \
+    XtSetErrorMsgHandler                    \
+    XtSetWarningMsgHandler                  \
+    XtWarningMsg
+
+XtError_shadows =                           \
+    XtSetErrorHandler                       \
+    XtSetWarningHandler                     \
+    XtWarning
+
+XtGetErrorDatabase_shadows =                \
+    XtGetErrorDatabaseText
+
+XtGetSelectionValueIncremental_shadows =    \
+    XtGetSelectionValuesIncremental
+
+XtGetSelectionTimeout_shadows =             \
+    XtSetSelectionTimeout
+
+XtCreateSelectionRequest_shadows =          \
+    XtSendSelectionRequest                  \
+    XtCancelSelectionRequest
+
+XtReservePropertyAtom_shadows =             \
+    XtReleasePropertyAtom
+
+XtGrabKey_shadows =                         \
+    XtUngrabKey                             \
+    XtGrabKeyboard                          \
+    XtUngrabKeyboard                        \
+    XtGrabButton                            \
+    XtUngrabButton                          \
+    XtGrabPointer                           \
+    XtUngrabPointer
+
+XtRegisterDrawable_shadows =                \
+    XtUnregisterDrawable
+
+XtAppSetExitFlag_shadows =                  \
+    XtAppGetExitFlag
+
+XtAppLock_shadows =                         \
+    XtAppUnlock
+
+XtProcessLock_shadows =                     \
+    XtProcessUnlock
+
+XtOpenApplication_shadows =                 \
+    XtVaOpenApplication
+
+XtAddCallback_shadowmen = $(XtAddCallback_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAddCallback_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddCallback.$(LIB_MAN_SUFFIX) > $@
+
+XtAddEventHandler_shadowmen = $(XtAddEventHandler_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAddEventHandler_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddEventHandler.$(LIB_MAN_SUFFIX) > $@
+
+XtAddGrab_shadowmen = $(XtAddGrab_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAddGrab_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddGrab.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddConverter_shadowmen = $(XtAppAddConverter_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddConverter_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddConverter.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddInput_shadowmen = $(XtAppAddInput_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddInput_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddInput.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddTimeOut_shadowmen = $(XtAppAddTimeOut_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddTimeOut_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddTimeOut.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddWorkProc_shadowmen = $(XtAppAddWorkProc_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddWorkProc_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddWorkProc.$(LIB_MAN_SUFFIX) > $@
+
+XtAppCreateShell_shadowmen = $(XtAppCreateShell_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppCreateShell_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppCreateShell.$(LIB_MAN_SUFFIX) > $@
+
+XtAppError_shadowmen = $(XtAppError_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppError_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppError.$(LIB_MAN_SUFFIX) > $@
+
+XtAppErrorMsg_shadowmen = $(XtAppErrorMsg_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppErrorMsg_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppErrorMsg.$(LIB_MAN_SUFFIX) > $@
+
+XtAppGetErrorDatabase_shadowmen = $(XtAppGetErrorDatabase_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppGetErrorDatabase_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppGetErrorDatabase.$(LIB_MAN_SUFFIX) > $@
+
+XtAppGetSelectionTimeout_shadowmen = $(XtAppGetSelectionTimeout_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppGetSelectionTimeout_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppGetSelectionTimeout.$(LIB_MAN_SUFFIX) > $@
+
+XtAppNextEvent_shadowmen = $(XtAppNextEvent_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppNextEvent_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppNextEvent.$(LIB_MAN_SUFFIX) > $@
+
+XtNextEvent_shadowmen = $(XtNextEvent_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtNextEvent_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtNextEvent.$(LIB_MAN_SUFFIX) > $@
+
+XtCallCallbacks_shadowmen = $(XtCallCallbacks_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtCallCallbacks_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCallCallbacks.$(LIB_MAN_SUFFIX) > $@
+
+XtClass_shadowmen = $(XtClass_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtClass_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtClass.$(LIB_MAN_SUFFIX) > $@
+
+XtConfigureWidget_shadowmen = $(XtConfigureWidget_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtConfigureWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtConfigureWidget.$(LIB_MAN_SUFFIX) > $@
+
+XtConvert_shadowmen = $(XtConvert_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtConvert_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtConvert.$(LIB_MAN_SUFFIX) > $@
+
+XtConvertAndStore_shadowmen = $(XtConvertAndStore_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtConvertAndStore_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtConvertAndStore.$(LIB_MAN_SUFFIX) > $@
+
+XtCreateApplicationContext_shadowmen = $(XtCreateApplicationContext_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtCreateApplicationContext_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreateApplicationContext.$(LIB_MAN_SUFFIX) > $@
+
+XtCreatePopupShell_shadowmen = $(XtCreatePopupShell_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtCreatePopupShell_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreatePopupShell.$(LIB_MAN_SUFFIX) > $@
+
+XtCreateWidget_shadowmen = $(XtCreateWidget_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtCreateWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreateWidget.$(LIB_MAN_SUFFIX) > $@
+
+XtDisplay_shadowmen = $(XtDisplay_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtDisplay_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtDisplay.$(LIB_MAN_SUFFIX) > $@
+
+XtDisplayInitialize_shadowmen = $(XtDisplayInitialize_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtDisplayInitialize_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtDisplayInitialize.$(LIB_MAN_SUFFIX) > $@
+
+XtGetGC_shadowmen = $(XtGetGC_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetGC_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetGC.$(LIB_MAN_SUFFIX) > $@
+
+XtGetResourceList_shadowmen = $(XtGetResourceList_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetResourceList_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetResourceList.$(LIB_MAN_SUFFIX) > $@
+
+XtGetSelectionValue_shadowmen = $(XtGetSelectionValue_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetSelectionValue_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSelectionValue.$(LIB_MAN_SUFFIX) > $@
+
+XtGetSubresources_shadowmen = $(XtGetSubresources_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetSubresources_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSubresources.$(LIB_MAN_SUFFIX) > $@
+
+XtGetApplicationResources_shadowmen = $(XtGetApplicationResources_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetApplicationResources_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetApplicationResources.$(LIB_MAN_SUFFIX) > $@
+
+XtMakeGeometryRequest_shadowmen = $(XtMakeGeometryRequest_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtMakeGeometryRequest_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtMakeGeometryRequest.$(LIB_MAN_SUFFIX) > $@
+
+XtMalloc_shadowmen = $(XtMalloc_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtMalloc_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtMalloc.$(LIB_MAN_SUFFIX) > $@
+
+XtManageChildren_shadowmen = $(XtManageChildren_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtManageChildren_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtManageChildren.$(LIB_MAN_SUFFIX) > $@
+
+XtMapWidget_shadowmen = $(XtMapWidget_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtMapWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtMapWidget.$(LIB_MAN_SUFFIX) > $@
+
+XtNameToWidget_shadowmen = $(XtNameToWidget_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtNameToWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtNameToWidget.$(LIB_MAN_SUFFIX) > $@
+
+XtOffset_shadowmen = $(XtOffset_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtOffset_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtOffset.$(LIB_MAN_SUFFIX) > $@
+
+XtOwnSelection_shadowmen = $(XtOwnSelection_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtOwnSelection_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtOwnSelection.$(LIB_MAN_SUFFIX) > $@
+
+XtParseAcceleratorTable_shadowmen = $(XtParseAcceleratorTable_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtParseAcceleratorTable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtParseAcceleratorTable.$(LIB_MAN_SUFFIX) > $@
+
+XtParseTranslationTable_shadowmen = $(XtParseTranslationTable_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtParseTranslationTable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtParseTranslationTable.$(LIB_MAN_SUFFIX) > $@
+
+XtPopdown_shadowmen = $(XtPopdown_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtPopdown_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtPopdown.$(LIB_MAN_SUFFIX) > $@
+
+XtPopup_shadowmen = $(XtPopup_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtPopup_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtPopup.$(LIB_MAN_SUFFIX) > $@
+
+XtRealizeWidget_shadowmen = $(XtRealizeWidget_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtRealizeWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtRealizeWidget.$(LIB_MAN_SUFFIX) > $@
+
+XtSetArg_shadowmen = $(XtSetArg_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtSetArg_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetArg.$(LIB_MAN_SUFFIX) > $@
+
+XtSetKeyTranslator_shadowmen = $(XtSetKeyTranslator_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtSetKeyTranslator_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetKeyTranslator.$(LIB_MAN_SUFFIX) > $@
+
+XtSetSensitive_shadowmen = $(XtSetSensitive_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtSetSensitive_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetSensitive.$(LIB_MAN_SUFFIX) > $@
+
+XtSetValues_shadowmen = $(XtSetValues_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtSetValues_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetValues.$(LIB_MAN_SUFFIX) > $@
+
+XtGetKeysymTable_shadowmen = $(XtGetKeysymTable_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetKeysymTable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetKeysymTable.$(LIB_MAN_SUFFIX) > $@
+
+XtAppSetTypeConverter_shadowmen = $(XtAppSetTypeConverter_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppSetTypeConverter_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppSetTypeConverter.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddActionHook_shadowmen = $(XtAppAddActionHook_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddActionHook_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddActionHook.$(LIB_MAN_SUFFIX) > $@
+
+XtSetMultiClickTime_shadowmen = $(XtSetMultiClickTime_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtSetMultiClickTime_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetMultiClickTime.$(LIB_MAN_SUFFIX) > $@
+
+XtInsertEventTypeHandler_shadowmen = $(XtInsertEventTypeHandler_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtInsertEventTypeHandler_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtInsertEventTypeHandler.$(LIB_MAN_SUFFIX) > $@
+
+XtLastEventProcessed_shadowmen = $(XtLastEventProcessed_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtLastEventProcessed_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtLastEventProcessed.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddSignal_shadowmen = $(XtAppAddSignal_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddSignal_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddSignal.$(LIB_MAN_SUFFIX) > $@
+
+XtAddInput_shadowmen = $(XtAddInput_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAddInput_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddInput.$(LIB_MAN_SUFFIX) > $@
+
+XtAppAddBlockHook_shadowmen = $(XtAppAddBlockHook_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppAddBlockHook_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddBlockHook.$(LIB_MAN_SUFFIX) > $@
+
+XtAppInitialize_shadowmen = $(XtAppInitialize_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppInitialize_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppInitialize.$(LIB_MAN_SUFFIX) > $@
+
+XtSessionGetToken_shadowmen = $(XtSessionGetToken_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtSessionGetToken_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSessionGetToken.$(LIB_MAN_SUFFIX) > $@
+
+XtErrorMsg_shadowmen = $(XtErrorMsg_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtErrorMsg_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtErrorMsg.$(LIB_MAN_SUFFIX) > $@
+
+XtError_shadowmen = $(XtError_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtError_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtError.$(LIB_MAN_SUFFIX) > $@
+
+XtGetErrorDatabase_shadowmen = $(XtGetErrorDatabase_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetErrorDatabase_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetErrorDatabase.$(LIB_MAN_SUFFIX) > $@
+
+XtGetSelectionValueIncremental_shadowmen = $(XtGetSelectionValueIncremental_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetSelectionValueIncremental_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSelectionValueIncremental.$(LIB_MAN_SUFFIX) > $@
+
+XtGetSelectionTimeout_shadowmen = $(XtGetSelectionTimeout_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGetSelectionTimeout_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSelectionTimeout.$(LIB_MAN_SUFFIX) > $@
+
+XtCreateSelectionRequest_shadowmen = $(XtCreateSelectionRequest_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtCreateSelectionRequest_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreateSelectionRequest.$(LIB_MAN_SUFFIX) > $@
+
+XtReservePropertyAtom_shadowmen = $(XtReservePropertyAtom_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtReservePropertyAtom_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtReservePropertyAtom.$(LIB_MAN_SUFFIX) > $@
+
+XtGrabKey_shadowmen = $(XtGrabKey_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtGrabKey_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGrabKey.$(LIB_MAN_SUFFIX) > $@
+
+XtRegisterDrawable_shadowmen = $(XtRegisterDrawable_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtRegisterDrawable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtRegisterDrawable.$(LIB_MAN_SUFFIX) > $@
+
+XtAppSetExitFlag_shadowmen = $(XtAppSetExitFlag_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppSetExitFlag_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppSetExitFlag.$(LIB_MAN_SUFFIX) > $@
+
+XtAppLock_shadowmen = $(XtAppLock_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtAppLock_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppLock.$(LIB_MAN_SUFFIX) > $@
+
+XtProcessLock_shadowmen = $(XtProcessLock_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtProcessLock_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtProcessLock.$(LIB_MAN_SUFFIX) > $@
+
+XtOpenApplication_shadowmen = $(XtOpenApplication_shadows:=.@LIB_MAN_SUFFIX@)
+$(XtOpenApplication_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtOpenApplication.$(LIB_MAN_SUFFIX) > $@
+
diff --git a/libXt/man/Makefile.in b/libXt/man/Makefile.in
new file mode 100644
index 000000000..e6f86b544
--- /dev/null
+++ b/libXt/man/Makefile.in
@@ -0,0 +1,1165 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
+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
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+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__installdirs = "$(DESTDIR)$(libmandir)"
+DATA = $(libman_DATA)
+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@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CHANGELOG_CMD = @CHANGELOG_CMD@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CWARNFLAGS = @CWARNFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
+DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
+DSYMUTIL = @DSYMUTIL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FILE_MAN_DIR = @FILE_MAN_DIR@
+FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_MAN_DIR = @LIB_MAN_DIR@
+LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
+MISC_MAN_DIR = @MISC_MAN_DIR@
+MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
+MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+RAWCPP = @RAWCPP@
+RAWCPPFLAGS = @RAWCPPFLAGS@
+
+# Rules for generating files using the C pre-processor
+# (Replaces CppFileTarget from Imake)
+SED = sed
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRINGSABIOPTIONS = @STRINGSABIOPTIONS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XFILESEARCHPATHDEFAULT = @XFILESEARCHPATHDEFAULT@
+XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
+XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
+XT_CFLAGS = @XT_CFLAGS@
+XT_LIBS = @XT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+appdefaultdir = @appdefaultdir@
+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@
+distcleancheck_listfiles = @distcleancheck_listfiles@
+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@
+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@
+libmandir = $(LIB_MAN_DIR)
+LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
+libman_PRE = \
+	XtAddActions.man \
+	XtAddCallback.man \
+	XtAddEventHandler.man \
+	XtAddExposureToRegion.man \
+	XtAddGrab.man \
+	XtAddInput.man \
+	XtAllocateGC.man \
+	XtAppAddActionHook.man \
+	XtAppAddActions.man \
+	XtAppAddBlockHook.man \
+	XtAppAddConverter.man \
+	XtAppAddInput.man \
+	XtAppAddSignal.man \
+	XtAppAddTimeOut.man \
+	XtAppAddWorkProc.man \
+	XtAppCreateShell.man \
+	XtAppError.man \
+	XtAppErrorMsg.man \
+	XtAppGetErrorDatabase.man \
+	XtAppGetSelectionTimeout.man \
+	XtAppInitialize.man \
+	XtAppLock.man \
+	XtAppNextEvent.man \
+	XtAppReleaseCacheRefs.man \
+	XtAppSetExitFlag.man \
+	XtAppSetFallbackResources.man \
+	XtAppSetTypeConverter.man \
+	XtBuildEventMask.man \
+	XtCallAcceptFocus.man \
+	XtCallActionProc.man \
+	XtCallCallbacks.man \
+	XtClass.man \
+	XtConfigureWidget.man \
+	XtConvert.man \
+	XtConvertAndStore.man \
+	XtCreateApplicationContext.man \
+	XtCreateApplicationShell.man \
+	XtCreatePopupShell.man \
+	XtCreateSelectionRequest.man \
+	XtCreateWidget.man \
+	XtCreateWindow.man \
+	XtDisplay.man \
+	XtDisplayInitialize.man \
+	XtDisplayStringConversionWarning.man \
+	XtDisplayToApplicationContext.man \
+	XtError.man \
+	XtErrorMsg.man \
+	XtFindFile.man \
+	XtGetActionKeysym.man \
+	XtGetActionList.man \
+	XtGetApplicationNameAndClass.man \
+	XtGetApplicationResources.man \
+	XtGetClassExtension.man \
+	XtGetDisplays.man \
+	XtGetErrorDatabase.man \
+	XtGetGC.man \
+	XtGetKeyboardFocusWidget.man \
+	XtGetKeysymTable.man \
+	XtGetResourceList.man \
+	XtGetSelectionParameters.man \
+	XtGetSelectionRequest.man \
+	XtGetSelectionTimeout.man \
+	XtGetSelectionValue.man \
+	XtGetSelectionValueIncremental.man \
+	XtGetSubresources.man \
+	XtGrabKey.man \
+	XtHooksOfDisplay.man \
+	XtInitialize.man \
+	XtInitializeWidgetClass.man \
+	XtInsertEventTypeHandler.man \
+	XtLastEventProcessed.man \
+	XtMakeGeometryRequest.man \
+	XtMalloc.man \
+	XtManageChildren.man \
+	XtMapWidget.man \
+	XtName.man \
+	XtNameToWidget.man \
+	XtNextEvent.man \
+	XtOffset.man \
+	XtOpenApplication.man \
+	XtOwnSelection.man \
+	XtParent.man \
+	XtParseAcceleratorTable.man \
+	XtParseTranslationTable.man \
+	XtPopdown.man \
+	XtPopup.man \
+	XtProcessLock.man \
+	XtQueryGeometry.man \
+	XtRealizeWidget.man \
+	XtRegisterDrawable.man \
+	XtRegisterGrabAction.man \
+	XtReservePropertyAtom.man \
+	XtResolvePathname.man \
+	XtSessionGetToken.man \
+	XtSetArg.man \
+	XtSetKeyTranslator.man \
+	XtSetKeyboardFocus.man \
+	XtSetLanguageProc.man \
+	XtSetMultiClickTime.man \
+	XtSetSelectionParameters.man \
+	XtSetSensitive.man \
+	XtSetValues.man \
+	XtSetWMColormapWindows.man \
+	XtStringConversionWarning.man \
+	XtToolkitThreadInitialize.man \
+	XtTranslateCoords.man \
+	XtVaCreateArgsList.man
+
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \
+	      $(all_shadows:=.@LIB_MAN_SUFFIX@)
+
+EXTRA_DIST = $(libman_PRE)
+CLEANFILES = $(libman_DATA)
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
+# to cpp, because that trick does not work on all ANSI C preprocessors.
+# Delete line numbers from the cpp output (-P is not portable, I guess).
+# Allow XCOMM to be preceded by whitespace and provide a means of generating
+# output lines with trailing backslashes.
+# Allow XHASH to always be substituted, even in cases where XCOMM isn't.
+CPP_SED_MAGIC = $(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/\@\@$$/\\/'
+
+
+# Strings to replace in man pages
+XORGRELSTRING = @PACKAGE_STRING@
+XORGMANNAME = X Version 11
+XSERVERNAME = Xorg
+MANDEFS = \
+        -D__vendorversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
+        -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
+	-D__appmansuffix__=$(APP_MAN_SUFFIX) \
+	-D__filemansuffix__=$(FILE_MAN_SUFFIX) \
+	-D__libmansuffix__=$(LIB_MAN_SUFFIX) \
+	-D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
+	-D__drivermansuffix__=$(DRIVER_MAN_SUFFIX) \
+	-D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) \
+	-D__projectroot__=$(prefix)
+
+
+# Generate man page shadow files (Replaces InstallManPageAliases from Imake)
+all_shadows = \
+    $(XtAddCallback_shadows)                 \
+    $(XtAddEventHandler_shadows)             \
+    $(XtAddGrab_shadows)                     \
+    $(XtAppAddConverter_shadows)             \
+    $(XtAppAddInput_shadows)                 \
+    $(XtAppAddTimeOut_shadows)               \
+    $(XtAppAddWorkProc_shadows)              \
+    $(XtAppCreateShell_shadows)              \
+    $(XtAppError_shadows)                    \
+    $(XtAppErrorMsg_shadows)                 \
+    $(XtAppGetErrorDatabase_shadows)         \
+    $(XtAppGetSelectionTimeout_shadows)      \
+    $(XtAppNextEvent_shadows)                \
+    $(XtNextEvent_shadows)                   \
+    $(XtCallCallbacks_shadows)               \
+    $(XtClass_shadows)                       \
+    $(XtConfigureWidget_shadows)             \
+    $(XtConvert_shadows)                     \
+    $(XtConvertAndStore_shadows)             \
+    $(XtCreateApplicationContext_shadows)    \
+    $(XtCreatePopupShell_shadows)            \
+    $(XtCreateWidget_shadows)                \
+    $(XtDisplay_shadows)                     \
+    $(XtDisplayInitialize_shadows)           \
+    $(XtGetGC_shadows)                       \
+    $(XtGetResourceList_shadows)             \
+    $(XtGetSelectionValue_shadows)           \
+    $(XtGetSubresources_shadows)             \
+    $(XtGetApplicationResources_shadows)     \
+    $(XtMakeGeometryRequest_shadows)         \
+    $(XtMalloc_shadows)                      \
+    $(XtManageChildren_shadows)              \
+    $(XtMapWidget_shadows)                   \
+    $(XtNameToWidget_shadows)                \
+    $(XtOffset_shadows)                      \
+    $(XtOwnSelection_shadows)                \
+    $(XtParseAcceleratorTable_shadows)       \
+    $(XtParseTranslationTable_shadows)       \
+    $(XtPopdown_shadows)                     \
+    $(XtPopup_shadows)                       \
+    $(XtRealizeWidget_shadows)               \
+    $(XtSetArg_shadows)                      \
+    $(XtSetKeyTranslator_shadows)            \
+    $(XtSetSensitive_shadows)                \
+    $(XtSetValues_shadows)                   \
+    $(XtGetKeysymTable_shadows)              \
+    $(XtAppSetTypeConverter_shadows)         \
+    $(XtAppAddActionHook_shadows)            \
+    $(XtSetMultiClickTime_shadows)           \
+    $(XtInsertEventTypeHandler_shadows)      \
+    $(XtLastEventProcessed_shadows)          \
+    $(XtAppAddSignal_shadows)                \
+    $(XtAddInput_shadows)                    \
+    $(XtAppAddBlockHook_shadows)             \
+    $(XtAppInitialize_shadows)               \
+    $(XtSessionGetToken_shadows)             \
+    $(XtErrorMsg_shadows)                    \
+    $(XtError_shadows)                       \
+    $(XtGetErrorDatabase_shadows)            \
+    $(XtGetSelectionValueIncremental_shadows) \
+    $(XtGetSelectionTimeout_shadows)         \
+    $(XtCreateSelectionRequest_shadows)      \
+    $(XtReservePropertyAtom_shadows)         \
+    $(XtGrabKey_shadows)                     \
+    $(XtRegisterDrawable_shadows)            \
+    $(XtAppSetExitFlag_shadows)              \
+    $(XtAppLock_shadows)                     \
+    $(XtProcessLock_shadows)                 \
+    $(XtOpenApplication_shadows)
+
+XtAddCallback_shadows = \
+    XtAddCallbacks                          \
+    XtRemoveCallback                        \
+    XtRemoveCallbacks                       \
+    XtRemoveAllCallbacks
+
+XtAddEventHandler_shadows = \
+    XtAddRawEventHandler                    \
+    XtRemoveEventHandler                    \
+    XtRemoveRawEventHandler                 \
+    XtInsertEventHandler                    \
+    XtInsertRawEventHandler
+
+XtAddGrab_shadows = \
+    XtRemoveGrab
+
+XtAppAddConverter_shadows = \
+    XtAddConverter
+
+XtAppAddInput_shadows = \
+    XtRemoveInput
+
+XtAppAddTimeOut_shadows = \
+    XtRemoveTimeOut
+
+XtAppAddWorkProc_shadows = \
+    XtRemoveWorkProc
+
+XtAppCreateShell_shadows = \
+    XtVaAppCreateShell
+
+XtAppError_shadows = \
+    XtAppSetErrorHandler                    \
+    XtAppSetWarningHandler                  \
+    XtAppWarning
+
+XtAppErrorMsg_shadows = \
+    XtAppSetErrorMsgHandler                 \
+    XtAppSetWarningMsgHandler               \
+    XtAppWarningMsg
+
+XtAppGetErrorDatabase_shadows = \
+    XtAppGetErrorDatabaseText
+
+XtAppGetSelectionTimeout_shadows = \
+    XtAppSetSelectionTimeout
+
+XtAppNextEvent_shadows = \
+    XtAppPending                            \
+    XtAppPeekEvent                          \
+    XtAppProcessEvent                       \
+    XtDispatchEvent                         \
+    XtAppMainLoop
+
+XtNextEvent_shadows = \
+    XtPending                               \
+    XtPeekEvent                             \
+    XtProcessEvent                          \
+    XtMainLoop
+
+XtCallCallbacks_shadows = \
+    XtCallCallbackList                      \
+    XtHasCallbacks
+
+XtClass_shadows = \
+    XtSuperclass                            \
+    XtIsSubclass                            \
+    XtCheckSubclass                         \
+    XtIsObject                              \
+    XtIsRectObj                             \
+    XtIsWidget                              \
+    XtIsComposite                           \
+    XtIsConstraint                          \
+    XtIsShell                               \
+    XtIsOverrideShell                       \
+    XtIsWMShell                             \
+    XtIsVendorShell                         \
+    XtIsTransientShell                      \
+    XtIsTopLevelShell                       \
+    XtIsApplicationShell                    \
+    XtIsSessionShell
+
+XtConfigureWidget_shadows = \
+    XtMoveWidget                            \
+    XtResizeWidget
+
+XtConvert_shadows = \
+    XtDirectConvert
+
+XtConvertAndStore_shadows = \
+    XtCallConverter
+
+XtCreateApplicationContext_shadows = \
+    XtDestroyApplicationContext             \
+    XtWidgetToApplicationContext            \
+    XtToolkitInitialize
+
+XtCreatePopupShell_shadows = \
+    XtVaCreatePopupShell
+
+XtCreateWidget_shadows = \
+    XtVaCreateWidget                        \
+    XtCreateManagedWidget                   \
+    XtVaCreateManagedWidget                 \
+    XtDestroyWidget
+
+XtDisplay_shadows = \
+                                            \
+    XtDisplayOfObject                       \
+    XtScreen                                \
+    XtScreenOfObject                        \
+    XtWindow                                \
+    XtWindowOfObject
+
+XtDisplayInitialize_shadows = \
+    XtOpenDisplay                           \
+    XtCloseDisplay                          \
+    XtDatabase                              \
+    XtScreenDatabase
+
+XtGetGC_shadows = \
+    XtReleaseGC
+
+XtGetResourceList_shadows = \
+    XtGetConstraintResourceList
+
+XtGetSelectionValue_shadows = \
+    XtGetSelectionValues
+
+XtGetSubresources_shadows = \
+    XtVaGetSubresources
+
+XtGetApplicationResources_shadows = \
+    XtVaGetApplicationResources
+
+XtMakeGeometryRequest_shadows = \
+    XtMakeResizeRequest
+
+XtMalloc_shadows = \
+    XtCalloc                                \
+    XtRealloc                               \
+    XtFree                                  \
+    XtNew                                   \
+    XtNewString
+
+XtManageChildren_shadows = \
+    XtManageChild                           \
+    XtUnmanageChildren                      \
+    XtUnmanageChild                         \
+    XtIsManaged                             \
+    XtChangeManagedSet
+
+XtMapWidget_shadows = \
+    XtSetMappedWhenManaged                  \
+    XtUnmapWidget
+
+XtNameToWidget_shadows = \
+    XtWindowToWidget
+
+XtOffset_shadows = \
+    XtOffsetOf                              \
+    XtNumber
+
+XtOwnSelection_shadows = \
+    XtOwnSelectionIncremental               \
+    XtDisownSelection
+
+XtParseAcceleratorTable_shadows = \
+    XtInstallAccelerators                   \
+    XtInstallAllAccelerators
+
+XtParseTranslationTable_shadows = \
+    XtAugmentTranslations                   \
+    XtOverrideTranslations                  \
+    XtUninstallTranslations
+
+XtPopdown_shadows = \
+    XtCallbackPopdown                       \
+    MenuPopdown
+
+XtPopup_shadows = \
+    XtPopupSpringLoaded                     \
+    XtCallbackNone                          \
+    XtCallbackNonexclusive                  \
+    XtCallbackExclusive                     \
+    MenuPopup
+
+XtRealizeWidget_shadows = \
+    XtIsRealized                            \
+    XtUnrealizeWidget
+
+XtSetArg_shadows = \
+    XtMergeArgLists
+
+XtSetKeyTranslator_shadows = \
+    XtTranslateKeycode                      \
+    XtRegisterCaseConverter                 \
+    XtConvertCase
+
+XtSetSensitive_shadows = \
+    XtIsSensitive
+
+XtSetValues_shadows = \
+    XtVaSetValues                           \
+    XtSetSubvalues                          \
+    XtGetValues                             \
+    XtVaGetValues                           \
+    XtGetSubvalues                          \
+    XtVaGetSubvalues                        \
+    XtVaSetSubvalues
+
+XtGetKeysymTable_shadows = \
+    XtKeysymToKeycodeList
+
+XtAppSetTypeConverter_shadows = \
+    XtSetTypeConverter
+
+XtAppAddActionHook_shadows = \
+    XtRemoveActionHook
+
+XtSetMultiClickTime_shadows = \
+    XtGetMultiClickTime
+
+XtInsertEventTypeHandler_shadows = \
+    XtRemoveEventTypeHandler                \
+    XtRegisterExtensionSelector             \
+    XtSetEventDispatcher                    \
+    XtDispatchEventToWidget
+
+XtLastEventProcessed_shadows = \
+    XtLastTimestampProcessed
+
+XtAppAddSignal_shadows = \
+    XtNoticeSignal                          \
+    XtRemoveSignal
+
+XtAddInput_shadows = \
+    XtAddTimeOut                            \
+    XtAddWorkProc
+
+XtAppAddBlockHook_shadows = \
+    XtRemoveBlockHook
+
+XtAppInitialize_shadows = \
+    XtVaAppInitialize
+
+XtSessionGetToken_shadows = \
+    XtSessionReturnToken
+
+XtErrorMsg_shadows = \
+    XtSetErrorMsgHandler                    \
+    XtSetWarningMsgHandler                  \
+    XtWarningMsg
+
+XtError_shadows = \
+    XtSetErrorHandler                       \
+    XtSetWarningHandler                     \
+    XtWarning
+
+XtGetErrorDatabase_shadows = \
+    XtGetErrorDatabaseText
+
+XtGetSelectionValueIncremental_shadows = \
+    XtGetSelectionValuesIncremental
+
+XtGetSelectionTimeout_shadows = \
+    XtSetSelectionTimeout
+
+XtCreateSelectionRequest_shadows = \
+    XtSendSelectionRequest                  \
+    XtCancelSelectionRequest
+
+XtReservePropertyAtom_shadows = \
+    XtReleasePropertyAtom
+
+XtGrabKey_shadows = \
+    XtUngrabKey                             \
+    XtGrabKeyboard                          \
+    XtUngrabKeyboard                        \
+    XtGrabButton                            \
+    XtUngrabButton                          \
+    XtGrabPointer                           \
+    XtUngrabPointer
+
+XtRegisterDrawable_shadows = \
+    XtUnregisterDrawable
+
+XtAppSetExitFlag_shadows = \
+    XtAppGetExitFlag
+
+XtAppLock_shadows = \
+    XtAppUnlock
+
+XtProcessLock_shadows = \
+    XtProcessUnlock
+
+XtOpenApplication_shadows = \
+    XtVaOpenApplication
+
+XtAddCallback_shadowmen = $(XtAddCallback_shadows:=.@LIB_MAN_SUFFIX@)
+XtAddEventHandler_shadowmen = $(XtAddEventHandler_shadows:=.@LIB_MAN_SUFFIX@)
+XtAddGrab_shadowmen = $(XtAddGrab_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddConverter_shadowmen = $(XtAppAddConverter_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddInput_shadowmen = $(XtAppAddInput_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddTimeOut_shadowmen = $(XtAppAddTimeOut_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddWorkProc_shadowmen = $(XtAppAddWorkProc_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppCreateShell_shadowmen = $(XtAppCreateShell_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppError_shadowmen = $(XtAppError_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppErrorMsg_shadowmen = $(XtAppErrorMsg_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppGetErrorDatabase_shadowmen = $(XtAppGetErrorDatabase_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppGetSelectionTimeout_shadowmen = $(XtAppGetSelectionTimeout_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppNextEvent_shadowmen = $(XtAppNextEvent_shadows:=.@LIB_MAN_SUFFIX@)
+XtNextEvent_shadowmen = $(XtNextEvent_shadows:=.@LIB_MAN_SUFFIX@)
+XtCallCallbacks_shadowmen = $(XtCallCallbacks_shadows:=.@LIB_MAN_SUFFIX@)
+XtClass_shadowmen = $(XtClass_shadows:=.@LIB_MAN_SUFFIX@)
+XtConfigureWidget_shadowmen = $(XtConfigureWidget_shadows:=.@LIB_MAN_SUFFIX@)
+XtConvert_shadowmen = $(XtConvert_shadows:=.@LIB_MAN_SUFFIX@)
+XtConvertAndStore_shadowmen = $(XtConvertAndStore_shadows:=.@LIB_MAN_SUFFIX@)
+XtCreateApplicationContext_shadowmen = $(XtCreateApplicationContext_shadows:=.@LIB_MAN_SUFFIX@)
+XtCreatePopupShell_shadowmen = $(XtCreatePopupShell_shadows:=.@LIB_MAN_SUFFIX@)
+XtCreateWidget_shadowmen = $(XtCreateWidget_shadows:=.@LIB_MAN_SUFFIX@)
+XtDisplay_shadowmen = $(XtDisplay_shadows:=.@LIB_MAN_SUFFIX@)
+XtDisplayInitialize_shadowmen = $(XtDisplayInitialize_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetGC_shadowmen = $(XtGetGC_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetResourceList_shadowmen = $(XtGetResourceList_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetSelectionValue_shadowmen = $(XtGetSelectionValue_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetSubresources_shadowmen = $(XtGetSubresources_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetApplicationResources_shadowmen = $(XtGetApplicationResources_shadows:=.@LIB_MAN_SUFFIX@)
+XtMakeGeometryRequest_shadowmen = $(XtMakeGeometryRequest_shadows:=.@LIB_MAN_SUFFIX@)
+XtMalloc_shadowmen = $(XtMalloc_shadows:=.@LIB_MAN_SUFFIX@)
+XtManageChildren_shadowmen = $(XtManageChildren_shadows:=.@LIB_MAN_SUFFIX@)
+XtMapWidget_shadowmen = $(XtMapWidget_shadows:=.@LIB_MAN_SUFFIX@)
+XtNameToWidget_shadowmen = $(XtNameToWidget_shadows:=.@LIB_MAN_SUFFIX@)
+XtOffset_shadowmen = $(XtOffset_shadows:=.@LIB_MAN_SUFFIX@)
+XtOwnSelection_shadowmen = $(XtOwnSelection_shadows:=.@LIB_MAN_SUFFIX@)
+XtParseAcceleratorTable_shadowmen = $(XtParseAcceleratorTable_shadows:=.@LIB_MAN_SUFFIX@)
+XtParseTranslationTable_shadowmen = $(XtParseTranslationTable_shadows:=.@LIB_MAN_SUFFIX@)
+XtPopdown_shadowmen = $(XtPopdown_shadows:=.@LIB_MAN_SUFFIX@)
+XtPopup_shadowmen = $(XtPopup_shadows:=.@LIB_MAN_SUFFIX@)
+XtRealizeWidget_shadowmen = $(XtRealizeWidget_shadows:=.@LIB_MAN_SUFFIX@)
+XtSetArg_shadowmen = $(XtSetArg_shadows:=.@LIB_MAN_SUFFIX@)
+XtSetKeyTranslator_shadowmen = $(XtSetKeyTranslator_shadows:=.@LIB_MAN_SUFFIX@)
+XtSetSensitive_shadowmen = $(XtSetSensitive_shadows:=.@LIB_MAN_SUFFIX@)
+XtSetValues_shadowmen = $(XtSetValues_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetKeysymTable_shadowmen = $(XtGetKeysymTable_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppSetTypeConverter_shadowmen = $(XtAppSetTypeConverter_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddActionHook_shadowmen = $(XtAppAddActionHook_shadows:=.@LIB_MAN_SUFFIX@)
+XtSetMultiClickTime_shadowmen = $(XtSetMultiClickTime_shadows:=.@LIB_MAN_SUFFIX@)
+XtInsertEventTypeHandler_shadowmen = $(XtInsertEventTypeHandler_shadows:=.@LIB_MAN_SUFFIX@)
+XtLastEventProcessed_shadowmen = $(XtLastEventProcessed_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddSignal_shadowmen = $(XtAppAddSignal_shadows:=.@LIB_MAN_SUFFIX@)
+XtAddInput_shadowmen = $(XtAddInput_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppAddBlockHook_shadowmen = $(XtAppAddBlockHook_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppInitialize_shadowmen = $(XtAppInitialize_shadows:=.@LIB_MAN_SUFFIX@)
+XtSessionGetToken_shadowmen = $(XtSessionGetToken_shadows:=.@LIB_MAN_SUFFIX@)
+XtErrorMsg_shadowmen = $(XtErrorMsg_shadows:=.@LIB_MAN_SUFFIX@)
+XtError_shadowmen = $(XtError_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetErrorDatabase_shadowmen = $(XtGetErrorDatabase_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetSelectionValueIncremental_shadowmen = $(XtGetSelectionValueIncremental_shadows:=.@LIB_MAN_SUFFIX@)
+XtGetSelectionTimeout_shadowmen = $(XtGetSelectionTimeout_shadows:=.@LIB_MAN_SUFFIX@)
+XtCreateSelectionRequest_shadowmen = $(XtCreateSelectionRequest_shadows:=.@LIB_MAN_SUFFIX@)
+XtReservePropertyAtom_shadowmen = $(XtReservePropertyAtom_shadows:=.@LIB_MAN_SUFFIX@)
+XtGrabKey_shadowmen = $(XtGrabKey_shadows:=.@LIB_MAN_SUFFIX@)
+XtRegisterDrawable_shadowmen = $(XtRegisterDrawable_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppSetExitFlag_shadowmen = $(XtAppSetExitFlag_shadows:=.@LIB_MAN_SUFFIX@)
+XtAppLock_shadowmen = $(XtAppLock_shadows:=.@LIB_MAN_SUFFIX@)
+XtProcessLock_shadowmen = $(XtProcessLock_shadows:=.@LIB_MAN_SUFFIX@)
+XtOpenApplication_shadowmen = $(XtOpenApplication_shadows:=.@LIB_MAN_SUFFIX@)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .$(LIB_MAN_SUFFIX) .man
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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) --gnu man/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu man/Makefile
+.PRECIOUS: 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__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-libmanDATA: $(libman_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(libmandir)" || $(MKDIR_P) "$(DESTDIR)$(libmandir)"
+	@list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \
+	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)$(libmandir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(libmandir)" || exit $$?; \
+	done
+
+uninstall-libmanDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libman_DATA)'; test -n "$(libmandir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(libmandir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(libmandir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(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)$(libmandir)"; 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:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+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 clean-libtool 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-libmanDATA
+
+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 mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libmanDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool 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-libmanDATA install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-libmanDATA
+
+
+.man.$(LIB_MAN_SUFFIX):
+	$(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(MANDEFS) $(EXTRAMANDEFS) < $< | $(CPP_SED_MAGIC) > $@
+$(XtAddCallback_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddCallback.$(LIB_MAN_SUFFIX) > $@
+$(XtAddEventHandler_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddEventHandler.$(LIB_MAN_SUFFIX) > $@
+$(XtAddGrab_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddGrab.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddConverter_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddConverter.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddInput_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddInput.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddTimeOut_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddTimeOut.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddWorkProc_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddWorkProc.$(LIB_MAN_SUFFIX) > $@
+$(XtAppCreateShell_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppCreateShell.$(LIB_MAN_SUFFIX) > $@
+$(XtAppError_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppError.$(LIB_MAN_SUFFIX) > $@
+$(XtAppErrorMsg_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppErrorMsg.$(LIB_MAN_SUFFIX) > $@
+$(XtAppGetErrorDatabase_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppGetErrorDatabase.$(LIB_MAN_SUFFIX) > $@
+$(XtAppGetSelectionTimeout_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppGetSelectionTimeout.$(LIB_MAN_SUFFIX) > $@
+$(XtAppNextEvent_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppNextEvent.$(LIB_MAN_SUFFIX) > $@
+$(XtNextEvent_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtNextEvent.$(LIB_MAN_SUFFIX) > $@
+$(XtCallCallbacks_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCallCallbacks.$(LIB_MAN_SUFFIX) > $@
+$(XtClass_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtClass.$(LIB_MAN_SUFFIX) > $@
+$(XtConfigureWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtConfigureWidget.$(LIB_MAN_SUFFIX) > $@
+$(XtConvert_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtConvert.$(LIB_MAN_SUFFIX) > $@
+$(XtConvertAndStore_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtConvertAndStore.$(LIB_MAN_SUFFIX) > $@
+$(XtCreateApplicationContext_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreateApplicationContext.$(LIB_MAN_SUFFIX) > $@
+$(XtCreatePopupShell_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreatePopupShell.$(LIB_MAN_SUFFIX) > $@
+$(XtCreateWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreateWidget.$(LIB_MAN_SUFFIX) > $@
+$(XtDisplay_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtDisplay.$(LIB_MAN_SUFFIX) > $@
+$(XtDisplayInitialize_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtDisplayInitialize.$(LIB_MAN_SUFFIX) > $@
+$(XtGetGC_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetGC.$(LIB_MAN_SUFFIX) > $@
+$(XtGetResourceList_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetResourceList.$(LIB_MAN_SUFFIX) > $@
+$(XtGetSelectionValue_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSelectionValue.$(LIB_MAN_SUFFIX) > $@
+$(XtGetSubresources_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSubresources.$(LIB_MAN_SUFFIX) > $@
+$(XtGetApplicationResources_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetApplicationResources.$(LIB_MAN_SUFFIX) > $@
+$(XtMakeGeometryRequest_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtMakeGeometryRequest.$(LIB_MAN_SUFFIX) > $@
+$(XtMalloc_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtMalloc.$(LIB_MAN_SUFFIX) > $@
+$(XtManageChildren_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtManageChildren.$(LIB_MAN_SUFFIX) > $@
+$(XtMapWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtMapWidget.$(LIB_MAN_SUFFIX) > $@
+$(XtNameToWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtNameToWidget.$(LIB_MAN_SUFFIX) > $@
+$(XtOffset_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtOffset.$(LIB_MAN_SUFFIX) > $@
+$(XtOwnSelection_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtOwnSelection.$(LIB_MAN_SUFFIX) > $@
+$(XtParseAcceleratorTable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtParseAcceleratorTable.$(LIB_MAN_SUFFIX) > $@
+$(XtParseTranslationTable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtParseTranslationTable.$(LIB_MAN_SUFFIX) > $@
+$(XtPopdown_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtPopdown.$(LIB_MAN_SUFFIX) > $@
+$(XtPopup_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtPopup.$(LIB_MAN_SUFFIX) > $@
+$(XtRealizeWidget_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtRealizeWidget.$(LIB_MAN_SUFFIX) > $@
+$(XtSetArg_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetArg.$(LIB_MAN_SUFFIX) > $@
+$(XtSetKeyTranslator_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetKeyTranslator.$(LIB_MAN_SUFFIX) > $@
+$(XtSetSensitive_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetSensitive.$(LIB_MAN_SUFFIX) > $@
+$(XtSetValues_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetValues.$(LIB_MAN_SUFFIX) > $@
+$(XtGetKeysymTable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetKeysymTable.$(LIB_MAN_SUFFIX) > $@
+$(XtAppSetTypeConverter_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppSetTypeConverter.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddActionHook_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddActionHook.$(LIB_MAN_SUFFIX) > $@
+$(XtSetMultiClickTime_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSetMultiClickTime.$(LIB_MAN_SUFFIX) > $@
+$(XtInsertEventTypeHandler_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtInsertEventTypeHandler.$(LIB_MAN_SUFFIX) > $@
+$(XtLastEventProcessed_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtLastEventProcessed.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddSignal_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddSignal.$(LIB_MAN_SUFFIX) > $@
+$(XtAddInput_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAddInput.$(LIB_MAN_SUFFIX) > $@
+$(XtAppAddBlockHook_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppAddBlockHook.$(LIB_MAN_SUFFIX) > $@
+$(XtAppInitialize_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppInitialize.$(LIB_MAN_SUFFIX) > $@
+$(XtSessionGetToken_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtSessionGetToken.$(LIB_MAN_SUFFIX) > $@
+$(XtErrorMsg_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtErrorMsg.$(LIB_MAN_SUFFIX) > $@
+$(XtError_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtError.$(LIB_MAN_SUFFIX) > $@
+$(XtGetErrorDatabase_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetErrorDatabase.$(LIB_MAN_SUFFIX) > $@
+$(XtGetSelectionValueIncremental_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSelectionValueIncremental.$(LIB_MAN_SUFFIX) > $@
+$(XtGetSelectionTimeout_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGetSelectionTimeout.$(LIB_MAN_SUFFIX) > $@
+$(XtCreateSelectionRequest_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtCreateSelectionRequest.$(LIB_MAN_SUFFIX) > $@
+$(XtReservePropertyAtom_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtReservePropertyAtom.$(LIB_MAN_SUFFIX) > $@
+$(XtGrabKey_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtGrabKey.$(LIB_MAN_SUFFIX) > $@
+$(XtRegisterDrawable_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtRegisterDrawable.$(LIB_MAN_SUFFIX) > $@
+$(XtAppSetExitFlag_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppSetExitFlag.$(LIB_MAN_SUFFIX) > $@
+$(XtAppLock_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtAppLock.$(LIB_MAN_SUFFIX) > $@
+$(XtProcessLock_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtProcessLock.$(LIB_MAN_SUFFIX) > $@
+$(XtOpenApplication_shadowmen):
+	 $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XtOpenApplication.$(LIB_MAN_SUFFIX) > $@
+
+# 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:
diff --git a/libXt/man/XtAddActions.man b/libXt/man/XtAddActions.man
new file mode 100644
index 000000000..19208eb1d
--- /dev/null
+++ b/libXt/man/XtAddActions.man
@@ -0,0 +1,150 @@
+.\" $Xorg: XtAddAct.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAddAct.man,v 1.2 2001/01/27 18:20:23 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Actions wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAddActions __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtAddActions \- register an action table
+.SH SYNTAX
+.HP
+void XtAddActions(XtActionList \fIactions\fP, Cardinal \fInum_actions\fP); 
+.SH ARGUMENTS
+.IP \fIactions\fP 1i
+Specifies the action table to register.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in this action table.
+.SH DESCRIPTION
+.ZN XtAddActions
+has been replaced by
+.ZN XtAppAddActions .
+.SH "SEE ALSO"
+XtAppAddActions(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAddCallback.man b/libXt/man/XtAddCallback.man
new file mode 100644
index 000000000..167f58673
--- /dev/null
+++ b/libXt/man/XtAddCallback.man
@@ -0,0 +1,194 @@
+.\" $Xorg: XtAddCbk.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAddCbk.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtAdd-Callback XtAdd-Callbacks XtRemove-Callback XtRemove-Callbacks XtRemove-All-Callbacks wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAddCallback __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAddCallback, XtAddCallbacks, XtRemoveCallback, XtRemoveCallbacks, XtRemoveAllCallbacks \- add and remove callback procedures
+.SH SYNTAX
+.HP
+void XtAddCallback(Widget \fIw\fP, String \fIcallback_name\fP, XtCallbackProc
+\fIcallback\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtAddCallbacks(Widget \fIw\fP, String \fIcallback_name\fP, XtCallbackList
+\fIcallbacks\fP); 
+.HP
+void XtRemoveCallback(Widget \fIw\fP, String \fIcallback_name\fP,
+XtCallbackProc \fIcallback\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveCallbacks(Widget \fIw\fP, String \fIcallback_name\fP,
+XtCallbackList \fIcallbacks\fP); 
+.HP
+void XtRemoveAllCallbacks(Widget \fIw\fP, String \fIcallback_name\fP, 
+.SH ARGUMENTS
+.IP \fIcallback\fP 1i
+Specifies the callback procedure\*(Cb.
+.IP \fIcallbacks\fP 1i
+Specifies the null-terminated list of callback procedures and corresponding
+client data.
+.ds Cn \ to which the procedure is to be appended or deleted
+.IP \fIcallback_name\fP 1i
+Specifies the callback list\*(Cn.
+.ds Cd it is invoked by XtCallbacks or NULL, \
+or the client data to match on the registered callback procedures
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when \*(Cd.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtAddCallback
+function adds the specified callback procedure to the specified widget's
+callback list.
+.LP
+The
+.ZN XtAddCallbacks
+add the specified list of callbacks to the specified widget's callback list.
+.LP
+The
+.ZN XtRemoveCallback
+function removes a callback only if both the procedure and the client
+data match.
+.LP
+The
+.ZN XtRemoveCallbacks
+function removes the specified callback procedures from the specified
+widget's callback list.
+.LP
+The
+.ZN XtRemoveAllCallbacks
+function removes all the callback procedures from the specified
+widget's callback list.
+.SH "SEE ALSO"
+XtCallCallbacks(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAddEventHandler.man b/libXt/man/XtAddEventHandler.man
new file mode 100644
index 000000000..83179d331
--- /dev/null
+++ b/libXt/man/XtAddEventHandler.man
@@ -0,0 +1,242 @@
+.\" $Xorg: XtAddEHand.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAddEHand.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtAdd-Event-Handler XtAdd-Raw-Event-Handler XtRemove-Event-Handler XtRemove-Raw-Event-Handler XtInsert-Event-Handler XtInsert-Raw-Event-Handler wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAddEventHandler __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAddEventHandler, XtAddRawEventHandler, XtRemoveEventHandler, XtRemoveRawEventHandler, XtInsertEventHandler, XtInsertRawEventHandler \- add and remove event handlers
+.SH SYNTAX
+.HP
+void XtAddEventHandler(Widget \fIw\fP, EventMask \fIevent_mask\fP, Boolean
+\fInonmaskable\fP, XtEventHandler \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtAddRawEventHandler(Widget \fIw\fP, EventMask \fIevent_mask\fP, Boolean
+\fInonmaskable\fP, XtEventHandler \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveEventHandler(Widget \fIw\fP, EventMask \fIevent_mask\fP, Boolean
+\fInonmaskable\fP, XtEventHandler \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveRawEventHandler(Widget \fIw\fP, EventMask \fIevent_mask\fP,
+Boolean \fInonmaskable\fP, XtEventHandler \fIproc\fP, XtPointer
+\fIclient_data\fP); 
+.HP
+void XtInsertEventHandler(Widget \fIw\fP, EventMask \fIevent_mask\fP, Boolean
+\fInonmaskable\fP, XtEventHandler \fIproc\fP, XtPointer \fIclient_data\fP,
+XtListPosition \fIposition\fP); 
+.HP
+void XtInsertRawEventHandler(Widget \fIw\fP, EventMask \fIevent_mask\fP,
+Boolean \fInonmaskable\fP, XtEventHandler \fIproc\fP, XtPointer
+\fIclient_data\fP, XtListPosition \fIposition\fP); 
+.HP
+typedef enum { XtListHead, XtListTail } XtListPosition;
+.SH ARGUMENTS
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the client's event handler.
+.ds Em to call or unregister this procedure
+.IP \fIevent_mask\fP 1i
+Specifies the event mask for which \*(Em.
+.ds Nm called or removed
+.IP \fInonmaskable\fP 1i
+Specifies a Boolean value that indicates whether this procedure should be 
+\*(Nm on the nonmaskable events
+.Pn ( GraphicsExpose ,
+.ZN NoExpose ,
+.ZN SelectionClear ,
+.ZN SelectionRequest ,
+.ZN SelectionNotify ,
+.ZN ClientMessage ,
+and
+.ZN MappingNotify ).
+.ds Pr \ to be added or removed
+.IP \fIproc\fP 1i
+Specifies the procedure that is\*(Pr.
+.ds Wi for which this event handler is being registered
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.IP \fIposition\fP 1i
+Specifies when the event handler is to be called relative to other
+previously registered handlers.
+.SH DESCRIPTION
+The
+.ZN XtAddEventHandler
+function registers a procedure with the dispatch mechanism that is
+to be called when an event that matches the mask occurs on the specified
+widget.
+If the procedure is already registered with the same client_data,
+the specified mask is ORed into the existing mask.
+If the widget is realized,
+.ZN XtAddEventHandler
+calls
+.ZN XSelectInput ,
+if necessary.
+.LP
+The
+.ZN XtAddRawEventHandler
+function is similar to
+.ZN XtAddEventHandler 
+except that it does not affect the widget's mask and never causes an
+.ZN XSelectInput
+for its events.
+Note that the widget might already have those mask bits set
+because of other nonraw event handlers registered on it.
+.LP
+The
+.ZN XtRemoveRawEventHandler
+function stops the specified procedure from receiving the specified events.
+Because the procedure is a raw event handler,
+this does not affect the widget's mask and never causes a call on
+.ZN XSelectInput .
+.LP
+.ZN XtInsertEventHandler
+is identical to
+.ZN XtAddEventHandler
+with the additional \fIposition\fP argument. if \fIposition\fP is
+.ZN XtListHead ,
+the event handler is registered to that it will be called before
+any event handlers that were previously registered for the same widget.
+If \fIposition\fP is
+.ZN XtListTail ,
+the event handler is registered to be called after any previously
+registered event handlers. If the procedure is already registered with
+the same \fIclient_data\fP value, the specified mask augments the
+existing mask and the procedure is repositioned in the list.
+.LP
+.ZN XtInsertRawEventHandler
+is similar to
+.ZN XtInsertEventHandler
+except that it does not modify the widget's event mask and never causes an
+.ZN XSelectInput
+for the specified events. If the procedure is already registered with the
+same \fIclient_data\fP value, the specified mask augments the existing
+mask and the procedure is repositioned in the list.
+.SH "SEE ALSO"
+XtAppNextEvent(3Xt),
+XtBuildEventMask(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAddExposureToRegion.man b/libXt/man/XtAddExposureToRegion.man
new file mode 100644
index 000000000..3d2964b87
--- /dev/null
+++ b/libXt/man/XtAddExposureToRegion.man
@@ -0,0 +1,166 @@
+.\" $Xorg: XtAddETReg.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAddETReg.man,v 1.2 2001/01/27 18:20:23 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtAdd-Exposure-To-Region wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAddExposureToRegion __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAddExposureToRegion \- merge exposure events into a region
+.SH SYNTAX
+.HP
+void XtAddExposureToRegion(XEvent *\fIevent\fP, Region \fIregion\fP); 
+.SH ARGUMENTS
+.IP \fIevent\fP 1i
+Specifies a pointer to the
+.ZN Expose
+or
+.ZN GraphicsExpose
+event.
+.IP \fIregion\fP 1i
+Specifies the region object (as defined in
+.Pn < X11/Xutil.h >).
+.SH DESCRIPTION
+The
+.ZN XtAddExposureToRegion
+function computes the union of the rectangle defined by the exposure
+event and the specified region.
+Then, it stores the results back in region.
+If the event argument is not an
+.ZN Expose
+or
+.ZN GraphicsExpose
+event,
+.ZN XtAddExposureToRegion
+returns without an error and without modifying region.
+.LP
+This function is used by the exposure compression mechanism 
+(see Section 7.9.3).
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAddGrab.man b/libXt/man/XtAddGrab.man
new file mode 100644
index 000000000..597a683fe
--- /dev/null
+++ b/libXt/man/XtAddGrab.man
@@ -0,0 +1,201 @@
+.\" $Xorg: XtAddGrab.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAddGrab.man,v 1.2 2001/01/27 18:20:23 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtAdd-Grab wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAddGrab __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAddGrab, XtRemoveGrab \- redirect user input to a modal widget
+.SH SYNTAX
+.HP
+void XtAddGrab(Widget \fIw\fP, Boolean \fIexclusive\fP, Boolean
+\fIspring_loaded\fP); 
+.HP
+void XtRemoveGrab(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fIexclusive\fP 1i
+Specifies whether user events should be dispatched exclusively to this widget 
+or also to previous widgets in the cascade.
+.IP \fIspring_loaded\fP 1i
+Specifies whether this widget was popped up because the user pressed
+a pointer button.
+.ds Wi to add to or remove from the modal cascade
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtAddGrab
+function appends the widget (and associated parameters) to the modal cascade
+and checks that exclusive is 
+.ZN True 
+if spring_loaded is 
+.ZN True .
+If these are not 
+.ZN True , 
+.ZN XtAddGrab
+generates an error.
+.LP
+The modal cascade is used by
+.ZN XtDispatchEvent
+when it tries to dispatch a user event.
+When at least one modal widget is in the widget cascade, 
+.ZN XtDispatchEvent
+first determines if the event should be delivered.
+It starts at the most recent cascade entry and follows the cascade up to and
+including the most recent cascade entry added with the exclusive parameter
+.ZN True .
+.LP
+This subset of the modal cascade along with all descendants of these widgets
+comprise the active subset.
+User events that occur outside the widgets in this subset are ignored
+or remapped.
+Modal menus with submenus generally add a submenu widget to the cascade
+with exclusive 
+.ZN False .
+Modal dialog boxes that need to restrict user input to the most deeply nested
+dialog box add a subdialog widget to the cascade with exclusive 
+.ZN True .
+User events that occur within the active subset are delivered to the
+appropriate widget, which is usually a child or further descendant of the modal
+widget.
+.LP
+Regardless of where on the screen they occur,
+remap events are always delivered to the most recent widget in the active
+subset of the cascade that has spring_loaded 
+.ZN True ,
+if any such widget exists.
+.LP
+The
+.ZN XtRemoveGrab
+function removes widgets from the modal cascade starting 
+at the most recent widget up to and including the specified widget.
+It issues an error if the specified widget is not on the modal cascade.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAddInput.man b/libXt/man/XtAddInput.man
new file mode 100644
index 000000000..37170c5b1
--- /dev/null
+++ b/libXt/man/XtAddInput.man
@@ -0,0 +1,173 @@
+.\" $Xorg: XtAddIn.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAddIn.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtAdd-Input XtAdd-TimeOut XtAddWorkProc wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAddInput __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtAddInput, XtAddTimeOut, XtAddWorkProc \- register input, timeout, and workprocs
+.SH SYNTAX
+.HP
+XtInputId XtAddInput(int \fIsource\fP, XtPointer \fIcondition\fP,
+XtInputCallbackProc \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+XtIntervalId XtAddTimeOut(unsigned long \fIinterval\fP, XtInputCallbackProc
+\fIproc\fP, XtPointer \fIclient_data\fP);
+.HP
+XtWorkProcId XtAddWorkProc(XtWorkProc \fIproc\fP, XtPointer
+\fIclient_data\fP); 
+.LP
+.SH ARGUMENTS
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when input is available
+.IP \fIcondition\fP 1i
+Specifies the mask that indicates a read, write, or exception condition
+or some operating system dependent condition.
+.IP \fIproc\fP 1i
+Specifies the procedure that is to be called when input is available.
+.IP \fIsource\fP 1i
+Specifies the source file descriptor on a UNIX-based system
+or other operating system dependent device specification.
+.SH DESCRIPTION
+.ZN XtAddInput
+has been replaced by
+.ZN XtAppAddInput.
+.LP
+.ZN XtAddTimeOut
+has been replaced by
+.ZN XtAppAddTimeOut.
+.LP
+.ZN XtAddWorkProc
+has been replaced by
+.ZN XtAppAddWorkProc .
+.SH "SEE ALSO"
+XtAppAddInput(3Xt), XtAppAddTimeOut(3Xt), XtAppAddWorkProc(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAllocateGC.man b/libXt/man/XtAllocateGC.man
new file mode 100644
index 000000000..a5010d8c6
--- /dev/null
+++ b/libXt/man/XtAllocateGC.man
@@ -0,0 +1,192 @@
+.\" $Xorg: XtAllocGC.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAllocGC.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtAllocate-GC wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAllocateGC __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAllocateGC \- obtain a sharable GC with modifiable fields
+.SH SYNTAX
+.HP
+GC XtAllocateGC(Widget \fIw\fP, Cardinal \fIdepth\fP, XtGCMask
+\fIvalue_mask\fP, XGCValues *\fIvalues\fP, XtGCMask \fIdynamic_mask\fP,
+XtGCMask \fIunused_mask\fP); 
+.SH ARGUMENTS
+.IP \fIvalues\fP 1i
+Specifies the actual values for this GC.
+.ds Vm fields of the values are specified
+.IP \fIvalue_mask\fP 1i
+Specifies which \*(Vm.
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIdepth\fP 1i
+Specifies the depth for which the returned GC is valid, or 0.
+.IP  \fIdynamic_mask\fP 1i
+Specifies the fields of the GC that will be modified by the caller.
+.IP  \fIunused_mask\fP 1i
+Specifies the fields of the GC that will not be needed by the caller.
+.SH DESCRIPTION
+The
+.ZN XtAllocateGC
+function returns a sharable GC that may be modified by the client.
+The \fIscreen\fP field of the specified widget or of the nearest
+widget ancestor of the specified object and the specified \fIdepth\fP
+argument supply the root and drawable depths for which the GC is to
+be valid. If \fIdepth\fP is zero the depth is taken from the \fIdepth\fP
+field of the specified widget or of the nearest widget ancestor of the
+specified object.
+.LP
+The \fIvalue_mask\fP argument specifies the fields of the GC that will
+be initialized with the respective members of the \fIvalues\fP structure.
+The \fIdynamic_mask\fP argument specifies fields that the caller intends
+to modify during program execution. The caller must ensure that the
+corresponding GC field is set prior to each use of the GC. The
+\fIunused_mask\fP argument specifies fields of the GC that are of no
+interest to the caller. The caller may make no assumptions about the
+contents of any fields specified in \fIunused_mask\fP. The caller may
+assume that at all times all fields not specified in either
+\fIdynamic_mask\fP or \fIunused_mask\fP have their default value if
+not specified in \fIvalue_mask\fP or the value specified by \fIvalues\fP.
+If a field is specified in both \fIvalue_mask\fP and \fPdynamic_mask\fP,
+the effect is as if it were specified only in \fIdynamic_mask\fP and
+then immediately set to the value in \fIvalues\fP. If a field is set
+in \fIunused_mask\fP and also in either \fIvalue_mask\fP or
+\fIdynamic_mask\fP, the specification in \fIunused_mask\fP is ignored.
+.LP
+.ZN XtAllocateGC
+tries to minimize the number of unique GCs created by comparing the
+arguments with those of previous calls and returning an existing GC
+when there are no conflicts.
+.ZN XtAllocateGC
+may modify and return an existing GC if it was allocated with a nonzero
+\fIunused_mask\fP.
+.SH "SEE ALSO"
+.ZN XtGetGC
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddActionHook.man b/libXt/man/XtAppAddActionHook.man
new file mode 100644
index 000000000..1e52b0f8d
--- /dev/null
+++ b/libXt/man/XtAppAddActionHook.man
@@ -0,0 +1,167 @@
+.\" $Xorg: XtActHook.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtActHook.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Action-Hook XtRemove-Action-Hook wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddActionHook __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddActionHook, XtRemoveActionHook \- register an action hook procedure
+.SH SYNTAX
+.HP
+XtActionHookId XtAppAddActionHook(XtAppContext \fIapp_context\fP,
+XtActionHookProc \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveActionHook(XtActionHookId \fIid\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIproc\fP 1i
+Specifies the action hook procedure.
+.IP \fInum_args\fP 1i
+Specifies the application-specific data to be passed to the action hook.
+.SH DESCRIPTION
+.ZN XtAppAddActionHook
+adds the specified procedure to the front of a list maintained in the
+application context. In the future, when an action routine is about to
+be invoked for any widget in this application context, either through
+the translation manager or via
+.ZN XtCallActionProc ,
+the action hohok procedures will be called in reverse order of registration
+jut prior to invoking the action routine.
+.LP
+Action hook procedures are removed automatically and the
+.ZN XtActionHookId
+s destroyed when the application context in which they were added is
+destroyed.
+.LP
+.ZN XtRemoveActionHook
+removes the specified action hook procedure from the list in which it
+was registered.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddActions.man b/libXt/man/XtAppAddActions.man
new file mode 100644
index 000000000..632a14e39
--- /dev/null
+++ b/libXt/man/XtAppAddActions.man
@@ -0,0 +1,154 @@
+.\" $Xorg: XtAppAAct.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppAAct.man,v 1.2 2001/01/27 18:20:23 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Actions wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddActions __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddActions \- register an action table
+.SH SYNTAX
+.HP
+void XtAppAddActions(XtAppContext \fIapp_context\fP, XtActionList
+\fIactions\fP, Cardinal \fInum_actions\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIactions\fP 1i
+Specifies the action table to register.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in this action table.
+.SH DESCRIPTION
+The
+.ZN XtAppAddActions
+function adds the specified action table and registers it with the
+translation manager.
+.SH "SEE ALSO"
+XtParseTranslationTable(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddBlockHook.man b/libXt/man/XtAppAddBlockHook.man
new file mode 100644
index 000000000..752f7ad90
--- /dev/null
+++ b/libXt/man/XtAppAddBlockHook.man
@@ -0,0 +1,163 @@
+.\" $Xorg: XtBlockH.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtBlockH.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Block-Hook XtRemove-Block-Hook wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddBlockHook __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddBlockHook, XtRemoveBlockHook \- register a block hook procedure
+.SH SYNTAX
+.HP
+XtBlockHookId XtAppAddBlockHook(XtAppContext \fIapp_context\fP,
+XtBlockHookProc \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveBlockHook(XtBlockHookId \fIid\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIproc\fP 1i
+Specifies the block hook procedure.
+.IP \fInum_args\fP 1i
+Specifies the application-specific data to be passed to the block hook.
+.SH DESCRIPTION
+.ZN XtAppAddBlockHook
+registers the specified procedure and returns an identifier for it.
+The hook is called at any time in the future when the Intrinsics are
+about to block pending some input.
+.LP
+Block hook procedures are removed automatically and the
+.ZN XtBlockHookId
+is destroyed when the application context in which they were added is
+destroyed.
+.LP
+.ZN XtRemoveBlockHook
+removes the specified block hook procedure from the list in which it
+was registered.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddConverter.man b/libXt/man/XtAppAddConverter.man
new file mode 100644
index 000000000..aec7bc2e7
--- /dev/null
+++ b/libXt/man/XtAppAddConverter.man
@@ -0,0 +1,177 @@
+.\" $Xorg: XtAppAC.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppAC.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Converter XtAdd-Converter wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddConverter __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtAppAddConverter, XtAddConverter \- register resource converter
+.SH SYNTAX
+.HP
+void XtAppAddConverter(XtAppContext \fIapp_context\fP, String \fIfrom_type\fP,
+String \fIto_type\fP, XtConverter \fIconverter\fP, XtConvertArgList
+\fIconvert_args\fP, Cardinal \fInum_args\fP); 
+.HP
+void XtAddConverter(String \fIfrom_type\fP, String \fIto_type\fP, XtConverter
+\fIconverter\fP, XtConvertArgList \fIconvert_args\fP, Cardinal
+\fInum_args\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIconverter\fP 1i
+Specifies the type converter procedure.
+.IP \fIconvert_args\fP 1i
+Specifies how to compute the additional arguments to the converter or NULL.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fInum_args\fP 1i
+Specifies the number of additional arguments to the converter or zero.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.SH DESCRIPTION
+.ZN XtAppAddConverter
+is equivalent in function to
+.ZN XtAppSetTypeConverter
+with \fIcache_type\fP equal to
+.ZN XtCacheAll
+for old-format type converters. It has been superseded by
+.ZN XtAppSetTypeConverter .
+.LP
+.ZN XtAddConverter
+is equivalent in function to
+.ZN XtSetTypeConverter
+with \fIcache_type\fP equal to
+.ZN XtCacheAll
+for old-format type converters. It has been superseded by
+.ZN XtSetTypeConverter .
+.SH "SEE ALSO"
+XtConvert(3Xt),
+XtStringConversionWarning(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddInput.man b/libXt/man/XtAppAddInput.man
new file mode 100644
index 000000000..1eb34d820
--- /dev/null
+++ b/libXt/man/XtAppAddInput.man
@@ -0,0 +1,204 @@
+.\" $Xorg: XtAppAI.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\" $XFree86: xc/doc/man/Xt/XtAppAI.man,v 1.5 2001/02/09 03:47:49 tsi Exp $
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Input wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddInput __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddInput, XtRemoveInput \- register and remove an input source
+.SH SYNTAX
+.HP
+XtInputId XtAppAddInput(XtAppContext \fIapp_context\fP, int \fIsource\fP,
+XtPointer \fIcondition\fP, XtInputCallbackProc \fIproc\fP, XtPointer
+\fIclient_data\fP); 
+.HP
+void XtRemoveInput(XtInputId \fIid\fP); 
+.SH ARGUMENTS
+.ds Co that identifies the application
+.IP \fIapp_context\fP 1i
+Specifies the application context \*(Co.
+.ds Cd input is available
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when \*(Cd.
+.IP \fIcondition\fP 1i
+Specifies the mask that indicates a read, write, or exception condition
+or some operating system dependent condition.
+.IP \fIid\fP 1i
+Specifies the ID returned from the corresponding
+.ZN XtAppAddInput
+call.
+.ds Pr \ to be called when input is available
+.IP \fIproc\fP 1i
+Specifies the procedure that is\*(Pr.
+.IP \fIsource\fP 1i
+Specifies the source file descriptor on a UNIX-based system
+or other operating system dependent device specification.
+.SH DESCRIPTION
+The
+.ZN XtAppAddInput
+function registers with the \*(xI read routine a new source of events,
+which is usually file input but can also be file output.
+Note that file should be loosely interpreted to mean any sink 
+or source of data.
+.ZN XtAppAddInput
+also specifies the conditions under which the source can generate events.
+When input is pending on this source,
+the callback procedure is called.
+.LP
+The legal values for the condition argument are operating-system dependent.
+On a UNIX-based system,
+the condition is some union of
+.ZN XtInputReadMask ,
+.ZN XtInputWriteMask ,
+and
+.ZN XtInputExceptMask .
+The
+.ZN XtRemoveInput
+function causes the \*(xI read routine to stop watching for input
+from the input source.
+.SH "SEE ALSO"
+XtAppAddTimeOut(3Xt),XtAppAddSignal(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
+.LP
+.SH "BUGS"
+In ANSI C it is necessary to cast the condition to an XtPointer, e.g.:
+.RS 4
+.br
+XtAppAddInput(app_context, 
+.RS 4
+.br
+source,
+.br
+.B (XtPointer)
+(XtInputReadMask | XtInputWriteMask),
+.br
+proc,
+.br
+client_data);
+.RE
diff --git a/libXt/man/XtAppAddSignal.man b/libXt/man/XtAppAddSignal.man
new file mode 100644
index 000000000..59d7520f8
--- /dev/null
+++ b/libXt/man/XtAppAddSignal.man
@@ -0,0 +1,198 @@
+.\" $Xorg: XtAppASig.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppASig.man,v 1.2 2001/01/27 18:20:23 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Signal wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddSignal __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddSignal, XtRemoveSignal, XtNoticeSignal \- register and remove a signal source
+.SH SYNTAX
+.HP
+XtSignalId XtAppAddSignal(XtAppContext \fIapp_context\fP, XtSignalCallbackProc
+\fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveSignal(XtSignalId \fIid\fP); 
+.HP
+void XtNoticeSignal(XtSignalId \fIid\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when a signal has been raised.
+.IP \fIid\fP 1i
+Specifies the ID returned from the corresponding
+.ZN XtAppAddSignal
+call.
+.IP \fIproc\fP 1i
+Specifies the procedure that is to be called when the signal has been 
+raised.
+.SH DESCRIPTION
+The
+.ZN XtAppAddSignal
+function initiates a mechanism for handling signals within the context
+of the Intrinsics. Prior to establishing an operating system dependent 
+signal handler the application may call
+.ZN XtAppAddSignal
+and store the returned \fIid\fP in a place accessible to the signal 
+handler.
+.LP
+Upon receipt of a signal from the operating system, the application may 
+call 
+.ZN XtNoticeSignal
+passing the \fIid\fP returned by the call to
+.ZN XtAppAddSignal .
+.LP
+.ZN XtNoticeSignal
+is the only Intrinsics function that can safely be called from a signal
+handler. If
+.ZN XtNoticeSignal
+is called multiple times before the Intrinsics are able to invoke the
+registered callback, the callback is only called once. Logically the
+Intrinsics maintain ``pending'' for each registered callback. This
+flag is initially
+.ZN False
+and is set to
+.ZN True 
+by
+.ZN XtNoticeSignal ;
+the Intrinsics invoke the callback whenever the flag is
+.ZN True ,
+and the flag is set to
+.ZN False
+just before the callback is invoked.
+.LP
+The
+.ZN XtRemoveSignal
+function is called to remove the specified Intrinsics signal handler. The 
+client should disable the source of the signal before calling
+.ZN XtRemoveSignal .
+.SH "SEE ALSO"
+XtAppAddTimeOut(3Xt),XtAppAddInput(3Xt),XtAppAddWorkProc(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddTimeOut.man b/libXt/man/XtAppAddTimeOut.man
new file mode 100644
index 000000000..69beb53df
--- /dev/null
+++ b/libXt/man/XtAppAddTimeOut.man
@@ -0,0 +1,170 @@
+.\" $Xorg: XtAppATO.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppATO.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Add-Time-Out XtRemove-Time-Out wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddTimeOut __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddTimeOut, XtRemoveTimeOut \- register and remove timeouts
+.SH SYNTAX
+.HP
+XtIntervalId XtAppAddTimeOut(XtAppContext \fIapp_context\fP, unsigned long
+\fIinterval\fP, XtTimerCallbackProc \fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveTimeOut(XtIntervalId \fItimer\fP); 
+.SH ARGUMENTS
+.ds Co for which the timer is to be set
+.IP \fIapp_context\fP 1i
+Specifies the application context \*(Co.
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when \*(Cd.
+.IP \fIinterval\fP 1i
+Specifies the time interval in milliseconds.
+.ds Pr \ to be called when time expires
+.IP \fIproc\fP 1i
+Specifies the procedure that is\*(Pr.
+.IP \fItimer\fP 1i
+Specifies the ID for the timeout request to be destroyed.
+.SH DESCRIPTION
+The
+.ZN XtAppAddTimeOut
+function creates a timeout and returns an identifier for it.
+The timeout value is set to interval.
+The callback procedure is called when the time interval elapses,
+and then the timeout is removed.
+.LP
+The
+.ZN XtRemoveTimeOut
+function removes the timeout.
+Note that timeouts are automatically removed once they trigger.
+.SH "SEE ALSO"
+XtAppAddInput(3Xt),XtAppAddSignal(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppAddWorkProc.man b/libXt/man/XtAppAddWorkProc.man
new file mode 100644
index 000000000..0967fe50e
--- /dev/null
+++ b/libXt/man/XtAppAddWorkProc.man
@@ -0,0 +1,165 @@
+.\" $Xorg: XtAppAWP.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppAWP.man,v 1.2 2001/01/27 18:20:23 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-AddWork-Proc, XtRemove-Work-Proc wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppAddWorkProc __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppAddWorkProc, XtRemoveWorkProc \- Add and remove background processing procedures
+.SH SYNTAX
+.HP
+XtWorkProcId XtAppAddWorkProc(XtAppContext \fIapp_context\fP, XtWorkProc
+\fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+void XtRemoveWorkProc(XtWorkProcId \fIid\fP); 
+.SH ARGUMENTS
+.ds Co that identifies the application
+.IP \fIapp_context\fP 1i
+Specifies the application context \*(Co.
+.ds Cd it is called
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when \*(Cd.
+.IP \fIproc\fP 1i
+Specifies the procedure that is\*(Pr.
+.IP \fIid\fP 1i
+Specifies which work procedure to remove.
+.SH DESCRIPTION
+The
+.ZN XtAppAddWorkProc
+function adds the specified work procedure for the application identified
+by app_context.
+.LP
+The
+.ZN XtRemoveWorkProc
+function explicitly removes the specified background work procedure.
+.SH "SEE ALSO"
+XtAppNextEvent(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppCreateShell.man b/libXt/man/XtAppCreateShell.man
new file mode 100644
index 000000000..9c1d1da2e
--- /dev/null
+++ b/libXt/man/XtAppCreateShell.man
@@ -0,0 +1,182 @@
+.\" $Xorg: XtAppCSh.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppCSh.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Create-Shell XtVa-App-Create-Shell wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppCreateShell __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppCreateShell, XtVaAppCreateShell \- create top-level widget instance
+.SH SYNTAX
+.HP
+Widget XtAppCreateShell(String \fIapplication_name\fP, String
+\fIapplication_class\fP, WidgetClass \fIwidget_class\fP, Display
+*\fIdisplay\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP); 
+.HP
+Widget XtVaAppCreateShell(String \fIapplication_name\fP, String
+\fIapplication_class\fP, WidgetClass \fIwidget_class\fP, Display
+*\fIdisplay\fP, ...\^); 
+.SH ARGUMENTS
+.IP \fIapplication_name\fP 1i
+Specifies the name of the application instance.
+.IP \fIapplication_class\fP 1i
+Specifies the class name of this application\*(Ac.
+.ds Wc \ that the application top-level widget should be
+.IP \fIwidget_class\fP 1i
+Specifies the widget class\*(Wc.
+.ds Di \ from which to get the resources
+.IP \fIdisplay\fP 1i
+Specifies the display\*(Di.
+.IP \fIargs\fP 1i
+Specifies the argument list\*(Di.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.IP \fI...\fP 1i
+Specifies the variable argument list\*(Di.
+.SH DESCRIPTION
+The
+.ZN XtAppCreateShell
+function saves the specified application name and application class 
+for qualifying all widget resource specifiers.
+The application name and application class are used as the left-most components
+in all widget resource names for this application.
+.ZN XtAppCreateShell
+should be used to create a new logical application within a program
+or to create a shell on another display.
+In the first case, 
+it allows the specification of a new root in the resource hierarchy.
+In the second case,
+it uses the resource database associated with the other display.
+.LP
+Note that the widget returned by
+.ZN XtAppCreateShell
+has the \s-1WM_COMMAND\s+1
+property set for session managers (see Chapter 4).
+.SH "SEE ALSO"
+XtCreateWidget(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppError.man b/libXt/man/XtAppError.man
new file mode 100644
index 000000000..76d82de34
--- /dev/null
+++ b/libXt/man/XtAppError.man
@@ -0,0 +1,182 @@
+.\" $Xorg: XtAppE.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppE.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Error XtApp-Set-Error-Handler XtApp-Set-Warning-Handler XtApp-Warning wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppError __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppError, XtAppSetErrorHandler, XtAppSetWarningHandler, XtAppWarning \- low-level error handlers
+.SH SYNTAX
+.HP
+void XtAppError(XtAppContext \fIapp_context\fP, String \fImessage\fP); 
+.HP
+void XtAppSetErrorHandler(XtAppContext \fIapp_context\fP, XtErrorHandler
+\fIhandler\fP); 
+.HP
+void XtAppSetWarningHandler(XtAppContext \fIapp_context\fP, XtErrorHandler
+\fIhandler\fP); 
+.HP
+void XtAppWarning(XtAppContext \fIapp_context\fP, String \fImessage\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fImessage\fP 1i
+Specifies the nonfatal error message that is to be reported.
+.ds Ha fatal error procedure, which should not return, \
+or the nonfatal error procedure, which usually returns
+.IP \fIhandler\fP 1i
+Specifies the new \*(Ha.
+.ds Me reported
+.IP \fImessage\fP 1i
+Specifies the message that is to be \*(Me.
+.SH DESCRIPTION
+The
+.ZN XtAppError
+function calls the installed error procedure and passes the specified message.
+.LP
+The
+.ZN XtAppSetErrorHandler
+function registers the specified procedure,
+which is called when a fatal error condition occurs.
+.LP
+The
+.ZN XtAppSetWarningHandler
+registers the specified procedure,
+which is called when a nonfatal error condition occurs.
+.LP
+The
+.ZN XtAppWarning
+function calls the installed nonfatal error procedure and passes the
+specified message.
+.SH "SEE ALSO"
+XtAppGetErrorDatabase(3Xt),
+XtAppErrorMsg(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppErrorMsg.man b/libXt/man/XtAppErrorMsg.man
new file mode 100644
index 000000000..1d06929e5
--- /dev/null
+++ b/libXt/man/XtAppErrorMsg.man
@@ -0,0 +1,195 @@
+.\" $Xorg: XtAppEM.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppEM.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Error-Msg XtApp-Set-Error-Msg-Handler XtApp-Set-Warning-Msg-Handler XtApp-Warning-Msg wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppErrorMsg __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppErrorMsg, XtAppSetErrorMsgHandler, XtAppSetWarningMsgHandler, XtAppWarningMsg \- high-level error handlers
+.SH SYNTAX
+.HP
+void XtAppErrorMsg(XtAppContext \fIapp_context\fP, String \fIname\fP, String
+\fItype\fP, String \fIclass\fP, String \fIdefault\fP, String *\fIparams\fP,
+Cardinal *\fInum_params\fP); 
+.HP
+void XtAppSetErrorMsgHandler(XtAppContext \fIapp_context\fP, XtErrorMsgHandler
+\fImsg_handler\fP); 
+.HP
+void XtAppSetWarningMsgHandler(XtAppContext \fIapp_context\fP,
+XtErrorMsgHandler \fImsg_handler\fP); 
+.HP
+void XtAppWarningMsg(XtAppContext \fIapp_context\fP, String \fIname\fP, String
+\fItype\fP, String \fIclass\fP, String \fIdefault\fP, String *\fIparams\fP,
+Cardinal *\fInum_params\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.ds Cl
+.IP \fIclass\fP 1i
+Specifies the resource class\*(Cl.
+.IP \fIdefault\fP 1i
+Specifies the default message to use\*(Dm.
+.IP \fIname\fP 1i
+Specifies the general kind of error.
+.IP \fItype\fP 1i
+Specifies the detailed name of the error.
+.ds Mh fatal error procedure, which should not return \
+or the nonfatal error procedure, which usually returns
+.IP \fImsg_handler\fP 1i
+Specifies the new \*(Mh.
+.IP \fInum_params\fP 1i
+Specifies the number of values in the parameter list.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of values to be stored in the message.
+.SH DESCRIPTION
+The
+.ZN XtAppErrorMsg
+function calls the high-level error handler and passes the specified
+information.
+.LP
+The
+.ZN XtAppSetErrorMsgHandler
+function registers the specified  procedure,
+which is called when a fatal error occurs.
+.LP
+The
+.ZN XtAppSetWarningMsgHandler
+function registers the specified procedure,
+which is called when a nonfatal error condition occurs.
+.LP
+The
+.ZN XtAppWarningMsg
+function calls the high-level error handler and passes the specified
+information.
+.SH "SEE ALSO"
+XtAppGetErrorDatabase(3Xt),
+XtAppError(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppGetErrorDatabase.man b/libXt/man/XtAppGetErrorDatabase.man
new file mode 100644
index 000000000..6f8f0c049
--- /dev/null
+++ b/libXt/man/XtAppGetErrorDatabase.man
@@ -0,0 +1,180 @@
+.\" $Xorg: XtAppGEDB.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppGEDB.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Get-Error-Database XtApp-Get-Error-Database-Text wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppGetErrorDatabase __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppGetErrorDatabase, XtAppGetErrorDatabaseText \- obtain error database
+.SH SYNTAX
+.HP
+XrmDatabase *XtAppGetErrorDatabase(\^XtAppContext \fIapp_context\fP); 
+.HP
+void XtAppGetErrorDatabaseText(XtAppContext \fIapp_context\fP, char
+*\fIname\fP, char *\fItype\fP, char *\fIclass\fP, char *\fIdefault\fP, char
+*\fIbuffer_return\fP, int \fInbytes\fP, XrmDatabase \fIdatabase\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIbuffer_return\fP 1i
+Specifies the buffer into which the error message is to be returned.
+.ds Cl \ of the error message
+.IP \fIclass\fP 1i
+Specifies the resource class\*(Cl.
+.IP \fIdatabase\fP 1i
+Specifies the name of the alternative database that is to be used
+or NULL if the application's database is to be used.
+.IP \fIdefault\fP 1i
+Specifies the default message to use\*(Dm.
+.IP \fIname\fP 1i
+.br
+.ns
+.IP \fItype\fP 1i
+Specifies the name and type that are concatenated to form the resource name 
+of the error message.
+.IP \fInbytes\fP 1i
+Specifies the size of the buffer in bytes.
+.SH DESCRIPTION
+The
+.ZN XtAppGetErrorDatabase
+function returns the address of the error database.
+The \*(xI do a lazy binding of the error database and do not merge in the
+database file until the first call to
+.ZN XtAppGetErrorDatbaseText .
+.LP
+The
+.ZN XtAppGetErrorDatabaseText
+returns the appropriate message from the error database
+or returns the specified default message if one is not found in the
+error database.
+.SH "SEE ALSO"
+XtAppError(3Xt),
+XtAppErrorMsg(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppGetSelectionTimeout.man b/libXt/man/XtAppGetSelectionTimeout.man
new file mode 100644
index 000000000..e04d25e8d
--- /dev/null
+++ b/libXt/man/XtAppGetSelectionTimeout.man
@@ -0,0 +1,166 @@
+.\" $Xorg: XtAppGSTO.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppGSTO.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Get-Selection-Timeout XtApp-Set-Selection-Timeout wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppGetSelectionTimeout __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppGetSelectionTimeout, XtAppSetSelectionTimeout \- set and obtain selection timeout values
+.SH SYNTAX
+.HP
+unsigned long XtAppGetSelectionTimeout(XtAppContext \fIapp_context\fP); 
+.HP
+void XtAppSetSelectionTimeout(XtAppContext \fIapp_context\fP, unsigned long
+\fItimeout\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fItimeout\fP 1i
+Specifies the selection timeout in milliseconds.
+.SH DESCRIPTION
+The
+.ZN XtAppGetSelectionTimeout
+function returns the current selection timeout value, in milliseconds.
+The selection timeout is the time within which the two communicating 
+applications must respond to one another.
+The initial timeout value is set by the 
+.ZN selectionTimeout
+application resource, or, if
+.ZN selectionTimeout
+is not specified,
+it defaults to five seconds.
+.LP
+The
+.ZN XtAppSetSelectionTimeout
+function sets the \*(xI's selection timeout mechanism.
+Note that most applications should not set the selection timeout.
+.SH "SEE ALSO"
+XtOwnSelection(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppInitialize.man b/libXt/man/XtAppInitialize.man
new file mode 100644
index 000000000..c048be681
--- /dev/null
+++ b/libXt/man/XtAppInitialize.man
@@ -0,0 +1,209 @@
+.\" $Xorg: XtAppInit.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppInit.man,v 1.5 2003/04/28 22:18:18 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Initialize XtVa-App-Initialize
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppInitialize __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppInitialize, XtVaAppInitialize \- initialize, open, or close a display
+.SH SYNTAX
+.HP
+Widget XtAppInitialize(XtAppContext* \fIapp_context_return\fP, String
+\fIapplication_class\fP, XrmOptionDescRec* \fIoptions\fP, Cardinal
+\fInum_options\fP, int* \fIargc_in_out\fP, String* \fIargv_in_out\fP, String*
+\fIfallback_resources\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP); 
+.HP
+Widget XtVaAppInitialize(XtAppContext* \fIapp_context_return\fP, String
+\fIapplication_class\fP, XrmOptionDescRec* \fIoptions\fP, Cardinal
+\fInum_options\fP, int* \fIargc_in_out\fP, String* \fIargv_in_out\fP, String*
+\fIfallback_resources\fP, ...\^); 
+.SH ARGUMENTS
+.IP \fIapp_context_return\fP 1i
+Specifies the application context.
+.ds Ac , which usually is the generic name for all instances of this application
+.IP \fIapplication_class\fP 1i
+Specifies the class name of this application\*(Ac.
+.IP \fIoptions\fP 1i
+Specifies how to parse the command line for any application-specific resources.
+The options argument is passed as a parameter to
+.ZN XrmParseCommand .
+For further information,
+see \fI\*(xL\fP.
+.IP \fInum_options\fP 1i
+Specifies the number of entries in the options list.
+.IP \fIargc_in_out\fP 1i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv_in_out\fP 1i
+Specifies the command line parameters.
+.IP \fIfallback_resources\fP 1i
+Specifies resource values to be used if the application class resource
+file cannot be opened or read, or NULL.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specification
+for the created shell widget.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.IP \fI...\fP 1i
+Specifies the variable argument list to override any other resource 
+specification for the created shell widget.
+.SH DESCRIPTION
+The
+.ZN XtAppInitialize
+function calls
+.ZN XtToolkitInitialize
+followed by
+.ZN XtCreateApplicationContext ,
+then calls
+.ZN XtOpenDisplay
+with \fIdisplay_string\fP NULL and \fIapplication_name\fP NULL, and
+finally calls
+.ZN XtAppCreateShell
+with \fIapplication_name\fP NULL, \fIwidget_class\fP
+.ZN applicationShellWidgetClass ,
+and the specified \fIargs\fP and \fInum_args\fP and returns the
+created shell. The modified \fIargc\fP and \fIargv\fP returned by
+.ZN XtDisplayInitialize
+are returned in \fIargc_in_out\fP and \fIargv_in_out\fP. If
+\fIapp_context_return\fP is not NULL, the created application context
+is also returned. If the display specified by the command line cannot
+be opened, an error message is issued and
+.ZN XtAppInitialize
+terminates the application. If \fIfallback_resources\fP is non-NULL,
+.ZN XtAppSetFallbackResources
+is called with the value prior to calling
+.ZN XtOpenDisplay .
+.LP
+XtAppInitialize and XtVaAppInitialize have been superceded by
+.ZN XtOpenApplication
+and
+.ZN XtVaOpenApplication
+respectively.
+.SH "SEE ALSO"
+XtOpenApplication(3Xt), XtVaOpenApplication(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppLock.man b/libXt/man/XtAppLock.man
new file mode 100644
index 000000000..1838c2315
--- /dev/null
+++ b/libXt/man/XtAppLock.man
@@ -0,0 +1,150 @@
+.\" $Xorg: XtAppLock.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppLock.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Lock XtApp-Unlock wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppLock __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppLock, XtAppUnlock \- lock and unlock application context
+.SH SYNTAX
+.HP
+void XtAppLock(XtAppContext \fIapp_context\fP); 
+.HP
+void XtAppUnlock(XtAppContext \fIapp_context\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.SH DESCRIPTION
+.ZN XtAppLock 
+locks the application context including all its related displays and widgets.
+.LP
+.ZN XtAppUnlock 
+unlocks the application context.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppNextEvent.man b/libXt/man/XtAppNextEvent.man
new file mode 100644
index 000000000..1c2e804a2
--- /dev/null
+++ b/libXt/man/XtAppNextEvent.man
@@ -0,0 +1,283 @@
+.\" $Xorg: XtAppNEv.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\" $XFree86: xc/doc/man/Xt/XtAppNEv.man,v 1.5 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Next-Event XtApp-Pending XtApp-Peek-Event XtApp-Process-Event Xt-Dispatch-Event XtApp-Main-Loop wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppNextEvent __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppNextEvent, XtAppPending, XtAppPeekEvent, XtAppProcessEvent, XtDispatchEvent, XtAppMainLoop \- query and process events and input
+.SH SYNTAX
+.HP
+void XtAppNextEvent(XtAppContext \fIapp_context\fP, XEvent
+*\fIevent_return\fP); 
+.HP
+Boolean XtAppPeekEvent(XtAppContext \fIapp_context\fP, XEvent
+*\fIevent_return\fP); 
+.HP
+XtInputMask XtAppPending(XtAppContext \fIapp_context\fP); 
+.HP
+void XtAppProcessEvent(XtAppContext \fIapp_context\fP, XtInputMask
+\fImask\fP); 
+.HP
+Boolean XtDispatchEvent(XEvent *\fIevent\fP); 
+.HP
+void XtAppMainLoop(XtAppContext \fIapp_context\fP); 
+.SH ARGUMENTS
+.ds Co that identifies the application 
+.IP \fIapp_context\fP 1i
+Specifies the application context \*(Co.
+.IP \fIevent\fP 1i
+Specifies a pointer to the event structure that is to be dispatched
+to the appropriate event handler.
+.IP \fIevent_return\fP 1i
+Returns the event information to the specified event structure.
+.IP \fImask\fP 1i
+Specifies what types of events to process.
+The mask is the bitwise inclusive OR of any combination of
+.ZN XtIMXEvent ,
+.ZN XtIMTimer ,
+.ZN XtIMAlternateInput ,
+and
+.ZN XtIMSignal .
+As a convenience, the \*(tk defines the symbolic name
+.ZN XtIMAll
+to be the bitwise inclusive OR of all event types.
+.SH DESCRIPTION
+If the X event queue is empty,
+.ZN XtAppNextEvent
+flushes the X output buffers of each Display in the application context
+and waits for an event while looking at the other input sources, timeout
+timeout values, and signal handlers and calling any callback procedures 
+triggered by them.  This wait time can be used for background processing 
+(see Section 7.8).
+.LP
+If there is an event in the queue,
+.ZN XtAppPeekEvent
+fills in the event and returns a nonzero value. If no X input is on the 
+queue,
+.ZN XtAppPeekEvent
+flushes the output buffer and blocks until input is available
+(possibly calling some timeout callbacks in the process).
+If the input is an event,
+.ZN XtAppPeekEvent
+fills in the event and returns a nonzero value.
+Otherwise, the input is for an alternate input source, and
+.ZN XtAppPeekEvent
+returns zero.
+.LP
+The
+.ZN XtAppPending
+function returns a nonzero value if there are events pending from the 
+X server, timer pending, or other input sources pending. The value 
+returned is a bit mask that is the OR of
+.ZN XtIMXEvent ,
+.ZN XtIMTimer ,
+.ZN XtIMAlternateInput ,
+and
+.ZN XtIMSignal
+(see
+.ZN XtAppProcessEvent ).
+If there are no events pending, 
+.ZN XtAppPending
+flushes the output buffer and returns zero.
+.LP
+The
+.ZN XtAppProcessEvent
+function processes one timer, alternate input, signal source, or X 
+event.  If there is nothing of the appropriate type to process,
+.ZN XtAppProcessEvent
+blocks until there is.
+If there is more than one type of thing available to process,
+it is undefined which will get processed.
+Usually, this procedure is not called by client applications (see
+.ZN XtAppMainLoop ).
+.ZN XtAppProcessEvent
+processes timer events by calling any appropriate timer callbacks, 
+alternate input by calling any appropriate alternate input callbacks, 
+signal source by calling any appropriate signal callbacks, and X events 
+by calling
+.ZN XtDispatchEvent .
+.LP
+When an X event is received, it is passed to
+.ZN XtDispatchEvent ,
+which calls the appropriate event handlers
+and passes them the widget, the event, and client-specific data
+registered with each procedure.
+If there are no handlers for that event registered,
+the event is ignored and the dispatcher simply returns.
+The order in which the handlers are called is undefined.
+.LP
+The
+.ZN XtDispatchEvent
+function sends those events to the event handler functions that
+have been previously registered with the dispatch routine.
+.ZN XtDispatchEvent
+returns 
+.ZN True 
+if it dispatched the event to some handler and
+.ZN False
+if it found no handler to dispatch the event to.
+The most common use of
+.ZN XtDispatchEvent
+is to dispatch events acquired with the
+.ZN XtAppNextEvent
+procedure.
+However, it also can be used to dispatch user-constructed events.
+.ZN XtDispatchEvent
+also is responsible for implementing the grab semantics for
+.ZN XtAddGrab .
+.LP
+The
+.ZN XtAppMainLoop
+function first reads the next incoming X event by calling
+.ZN XtAppNextEvent 
+and then it dispatches the event to the appropriate registered procedure 
+by calling
+.ZN XtDispatchEvent .
+This constitutes the main loop of \*(tk applications,
+and, as such, it does not return unless
+.ZN XtAppSetExitFlag
+is called.
+Applications are expected to exit in response to some user action.
+There is nothing special about
+.ZN XtAppMainLoop ;
+it is simply an loop that calls
+.ZN XtAppNextEvent
+and then
+.ZN XtDispatchEvent ,
+until
+.ZN XtAppGetExitFlag ()
+returns true.
+.LP
+Applications can provide their own version of this loop,
+which tests some global termination flag or tests that the number
+of top-level widgets is larger than zero before circling back to the call to
+.ZN XtAppNextEvent .
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppReleaseCacheRefs.man b/libXt/man/XtAppReleaseCacheRefs.man
new file mode 100644
index 000000000..d55c39f37
--- /dev/null
+++ b/libXt/man/XtAppReleaseCacheRefs.man
@@ -0,0 +1,153 @@
+.\" $Xorg: XtAppRCR.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppRCR.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Release-Cache-Refs wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppReleaseCacheRefs __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppReleaseCacheRefs \- decrement reference counts for resources
+.SH SYNTAX
+.HP
+void XtAppReleaseCacheRefs(XtAppContext \fIapp_context\fP, XtCacheRef*
+\fIrefs\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIrefs\fP 1i
+Specifies the list of cache references to be released.
+.SH DESCRIPTION
+.ZN XtAppReleaseCacheRefs
+decrements the reference count for the conversion entries identified
+by the \fIrefs\fP argument. This argument is a pointer to a NULL-terminated
+list of
+.ZN XtCacheRef 
+values. If any reference count reaches zero, the destructor, if any, will
+be called and the resource removed from the conversion cache.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppSetExitFlag.man b/libXt/man/XtAppSetExitFlag.man
new file mode 100644
index 000000000..e416f5339
--- /dev/null
+++ b/libXt/man/XtAppSetExitFlag.man
@@ -0,0 +1,150 @@
+.\" $Xorg: XtAppSEF.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppSEF.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Set-Exit-Flag XtApp-Get-Exit-Flag wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppSetExitFlag __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppSetExitFlag, XtAppGetExitFlag \- thread support functions
+.SH SYNTAX
+.HP
+void XtAppSetExitFlag(XtAppContext \fIapp_context\fP); 
+.HP
+Boolean XtAppGetExitFlag(XtAppContext \fIapp_context\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.SH DESCRIPTION
+To indicate that an application context should exit, use
+.ZN XtAppSetExitFlag .
+.LP
+To test the exit status of an application context, use
+.ZN XtAppGetExitFlag .
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppSetFallbackResources.man b/libXt/man/XtAppSetFallbackResources.man
new file mode 100644
index 000000000..d957db59c
--- /dev/null
+++ b/libXt/man/XtAppSetFallbackResources.man
@@ -0,0 +1,167 @@
+.\" $Xorg: XtAppSetFR.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\" 
+.\" $XFree86: xc/doc/man/Xt/XtAppSetFR.man,v 1.6 2003/04/28 22:18:18 herrb Exp $
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Set-Fallback-Resources wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppSetFallbackResources __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppSetFallbackResources \- set fallback resources
+.SH SYNTAX
+.HP
+void XtAppSetFallbackResources(XtAppContext \fIapp_context\fP, String*
+\fIspecification_list\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIspecification_list\fP 1i
+Specifies a NULL-terminated list of resource specifications to pre-load
+the database, or NULL.
+.SH DESCRIPTION
+Each entry in \fIspecification_list\fP points to a string in the format
+.ZN XrmPutLineResource .
+following a call to
+.ZN XtAppSetFallbackResources ,
+when a resource database is being created for a particular screen and
+the Intrinsics are not able to find or read an application-specific
+class resource file and if \fIspecification_list\fP is not NULL the
+resource specification in \fIspecification_list\fP will be merged
+into the screen resource database in place of the application-specific
+class resource file.
+.ZN XtAppSetFallbackResources
+is not required to copy \fIspecification_list\fP; the caller must
+ensure that the contents of the list and the strings addressed by the
+list remain valid until all displays are initialized or until
+.ZN XtAppSetFallbackResources
+is called again. The value NULL for \fIspecification_list\fP removes
+any previous fallback resource specification for the application context.
+The intended use for fallback resources is to provide a minimal number
+of resources that will make the application usable (or at least terminate
+with helpful diagnostic messages) when some problem exists in finding 
+and loading the application defaults file.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtAppSetTypeConverter.man b/libXt/man/XtAppSetTypeConverter.man
new file mode 100644
index 000000000..a5bc2264e
--- /dev/null
+++ b/libXt/man/XtAppSetTypeConverter.man
@@ -0,0 +1,177 @@
+.\" $Xorg: XtAppSTC.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtAppSTC.man,v 1.3 2001/02/09 03:47:49 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Set-Type-Converter XtSet-Type-Converter wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtAppSetTypeConverter __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtAppSetTypeConverter, XtSetTypeConverter \- register resource converter
+.SH SYNTAX
+.HP
+void XtAppSetTypeConverter(XtAppContext \fIapp_context\fP, String
+\fIfrom_type\fP, String \fIto_type\fP, XtConverter \fIconverter\fP,
+XtConvertArgList \fIconvert_args\fP, Cardinal \fInum_args\fP, XtCacheType
+\fIcache_type\fP, XtDestructor \fIdestructor\fP); 
+.HP
+void XtSetTypeConverter(String \fIfrom_type\fP, String \fIto_type\fP,
+XtConverter \fIconverter\fP, XtConvertArgList \fIconvert_args\fP, Cardinal
+\fInum_args\fP, XtCacheType \fIcache_type\fP, XtDestructor \fIdestructor\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIconverter\fP 1i
+Specifies the type converter procedure.
+.IP \fIconvert_args\fP 1i
+Specifies how to compute the additional arguments to the converter or NULL.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fInum_args\fP 1i
+Specifies the number of additional arguments to the converter or zero.
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIcache_type\fP 1i
+Specifies whether or not resources produced by this converter are
+sharable or display-specific and when they should be freed.
+.IP \fIdestructor\fP 1i
+Specifies a destroy procedure for resources produced by this conversion,
+or NULL if no additional action is required to deallocate resources
+produced by the converter.
+.SH DESCRIPTION
+.ZN XtSetTypeConverter
+registers the specified type converter and destructor in all application
+contexts created by the calling process, including any future application
+contexts that may be created.
+.ZN XtAppSetTypeConverter 
+registers the specified type converter in the single application context
+specified. If the same \fIfrom_type\fP and \fIto_type\fP are specified
+in multiple calls to either function, the most recent overrides the
+previous ones.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtBuildEventMask.man b/libXt/man/XtBuildEventMask.man
new file mode 100644
index 000000000..d6415ac55
--- /dev/null
+++ b/libXt/man/XtBuildEventMask.man
@@ -0,0 +1,158 @@
+.\" $Xorg: XtBEMask.man,v 1.3 2000/08/17 19:41:58 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtBEMask.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtBuild-Event-Mask wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtBuildEventMask __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtBuildEventMask \- retrieve a widget's event mask
+.SH SYNTAX
+.HP
+EventMask XtBuildEventMask(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtBuildEventMask
+function returns the event mask representing the logical OR
+of all event masks for event handlers registered on the widget with
+.ZN XtAddEventHandler
+and all event translations, including accelerators,
+installed on the widget.
+This is the same event mask stored into the 
+.ZN XSetWindowAttributes
+structure by
+.ZN XtRealizeWidget
+and sent to the server when event handlers and translations are installed or
+removed on the realized widget.
+.SH "SEE ALSO"
+XtAddEventHandler(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCallAcceptFocus.man b/libXt/man/XtCallAcceptFocus.man
new file mode 100644
index 000000000..72f9603aa
--- /dev/null
+++ b/libXt/man/XtCallAcceptFocus.man
@@ -0,0 +1,156 @@
+.\" $Xorg: XtCallAFoc.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCallAFoc.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCall-Accept-Focus wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCallAcceptFocus __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCallAcceptFocus \- calla widget's accept_focus procedure
+.SH SYNTAX
+.HP
+Boolean XtCallAcceptFocus(Widget \fIw\fP, Time *\fItime\fP); 
+.SH ARGUMENTS
+.IP \fItime\fP 1i
+Specifies the X time of the event that is causing the accept focus.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtCallAcceptFocus
+function calls the specified widget's accept_focus procedure,
+passing it the specified widget and time, and returns what the accept_focus
+procedure returns.
+If accept_focus is NULL,
+.ZN XtCallAcceptFocus
+returns
+.ZN False .
+.SH "SEE ALSO"
+XtSetKeyboardFocus(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCallActionProc.man b/libXt/man/XtCallActionProc.man
new file mode 100644
index 000000000..2a30cff87
--- /dev/null
+++ b/libXt/man/XtCallActionProc.man
@@ -0,0 +1,163 @@
+.\" $Xorg: XtCallActP.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCallActP.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCall-Action-Proc wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCallActionProc __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCallActionProc \- invoke an action procedure directly
+.SH SYNTAX
+.HP
+void XtCallActionProc(Widget \fIwidget\fP, String \fIaction\fP, XEvent*
+\fIevent\fP, String* \fIparams\fP, Cardinal \fInum_params\fP); 
+.SH ARGUMENTS
+.IP \fIwidget\fP 1i
+Specifies the widget in which the action is to be invoked. Must be
+of class core of any subclass thereof.
+.IP \fIaction\fP 1i
+Specifies the name of the action routine.
+.IP \fIevent\fP 1i
+Specifies the contents of the \fIevent\fP passed to the action routine.
+.IP \fIparams\fP 1i
+Specifies the contents of the \fIparams\fP passed to the action routine.
+.IP \fInum_params\fP 1i
+Specifies the num of entries in \fIparams\fP.
+.SH DESCRIPTION
+.ZN XtCallActionProc
+searches for the named action routine in the same manner and order as
+translation tables are bound. If found, the action routine is invoked
+with the specified widget, event pointer, and parameters. It is the
+responsibility of the caller to ensure that the contents of \fIevent\fP,
+\fIparams\fP, and \fInum_params\fP arguments are appropriate for the
+specified routine, and if necessary, that the specified widget is
+realized or sensitive. If the named action routine cannot be found,
+.ZN XtCallActionProc
+generates a warning message and returns.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCallCallbacks.man b/libXt/man/XtCallCallbacks.man
new file mode 100644
index 000000000..ee3fd0977
--- /dev/null
+++ b/libXt/man/XtCallCallbacks.man
@@ -0,0 +1,188 @@
+.\" $Xorg: XtCallCbks.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCallCbks.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCall-Callbacks XtHas-Callbacks XtCall-Callbacks-List wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCallCallbacks __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCallCallbacks, XtCallCallbackList, XtHasCallbacks \- process callbacks
+.SH SYNTAX
+.HP
+void XtCallCallbacks(Widget \fIw\fP, String \fIcallback_name\fP, XtPointer
+\fIcall_data\fP); 
+.HP
+void XtCallCallbackList(Widget \fIw\fP, XtCallbackList \fIcallbacks\fP,
+XtPointer \fIcall_data\fP); 
+.LP
+typedef enum {XtCallbackNoList, XtCallbackHasNone, XtCallbackHasSome}
+XtCallbackStatus;
+.HP
+XtCallbackStatus XtHasCallbacks(Widget \fIw\fP, String \fIcallback_name\fP); 
+.SH ARGUMENTS
+.ds Cn \ to be executed or checked
+.IP \fIcallback_name\fP 1i
+Specifies the callback list\*(Cn.
+.IP \fIcall_data\fP 1i
+Specifies a callback-list specific data value to pass to each of the callback
+procedure in the list.
+.IP \fIcallbacks\fP 1i
+Specifies the callback list to be executed.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtCallCallbacks
+function calls each procedure that is registered in the specified widget's
+callback list.
+.LP
+If \fIcallbacks\fP is not NULL,
+.ZN XtCallCallbackList
+calls each of the callback procedures in the list, passing client data
+and \fIcall_data\fP. The \fIcallbacks\fP parameter must specify the
+contents of a widget or object resource declared with representation
+type
+.ZN XtRCallback .
+.LP
+The
+.ZN XtHasCallbacks
+function first checks to see if the widget has a callback list identified 
+by callback_name.
+If the callback list does not exist,
+.ZN XtHasCallbacks
+returns
+.ZN XtCallbackNoList .
+If the callback list exists but is empty,
+it returns
+.ZN XtCallbackHasNone .
+If the callback list exists and has at least one callback registered,
+it returns
+.ZN XtCallbackHasSome .
+.SH "SEE ALSO"
+XtAddCallback(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtClass.man b/libXt/man/XtClass.man
new file mode 100644
index 000000000..d7e1e5890
--- /dev/null
+++ b/libXt/man/XtClass.man
@@ -0,0 +1,245 @@
+.\" $Xorg: XtClass.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtClass.man,v 1.2 2001/01/27 18:20:24 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCheck-Subclass XtIs-Object XtIs-RectObj XtIs-Widget XtIs-Composite XtIs-Constraint XtIs-Shell XtIs-Override-Shell XtIs-WM-Shell XtIs-Vendor-Shell XtIs-Transient-Shell XtIs-Top-Level-Shell XtIs-Application-Shell wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtClass __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtClass, XtSuperclass, XtIsSubclass, XtCheckSubclass, XtIsObject, XtIsRectObj, XtIsWidget, XtIsComposite, XtIsConstraint, XtIsShell, XtIsOverrideShell, XtIsWMShell, XtIsVendorShell, XtIsTransientShell, XtIsTopLevelShell, XtIsApplicationShell, XtIsSessionShell \- obtain and verify a widget's class
+.SH SYNTAX
+.HP
+WidgetClass XtClass(Widget \fIw\fP); 
+.HP
+WidgetClass XtSuperclass(Widget \fIw\fP); 
+.HP
+Boolean XtIsSubclass(Widget \fIw\fP, WidgetClass \fIwidget_class\fP); 
+.HP
+void XtCheckSubclass(Widget \fIwidget\fP, WidgetClass \fIwidget_class\fP,
+String \fImessage\fP); 
+.HP
+Boolean XtIsObject(Widget \fIw\fP); 
+.HP
+Boolean XtIsRectObj(Widget \fIw\fP); 
+.HP
+Boolean XtIsWidget(Widget \fIw\fP); 
+.HP
+Boolean XtIsComposite(Widget \fIw\fP); 
+.HP
+Boolean XtIsConstraint(Widget \fIw\fP, 
+.HP
+Boolean XtIsShell(Widget \fIw\fP); 
+.HP
+Boolean XtIsOverrideShell(Widget \fIw\fP); 
+.HP
+Boolean XtIsWMShell(Widget \fIw\fP); 
+.HP
+Boolean XtIsVendorShell(Widget \fIw\fP);
+.HP
+Boolean XtIsTransientShell(Widget \fIw\fP);
+.HP
+Boolean XtIsTopLevelShell(Widget \fIw\fP);
+.HP
+Boolean XtIsApplicationShell(Widget \fIw\fP);
+.HP
+Boolean XtIsSessionShell(Widget \fIw\fP);
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class\*(Wc.
+.ds Me used
+.IP \fImessage\fP 1i
+Specifies the message that is to be \*(Me.
+.SH DESCRIPTION
+The
+.ZN XtClass
+function returns a pointer to the widget's class structure.
+.LP
+The
+.ZN XtSuperclass
+function returns a pointer to the widget's superclass class structure.
+.LP
+The
+.ZN XtIsSubclass
+function returns 
+.ZN True 
+if the class of the specified widget is equal to or is a subclass of 
+the specified class. The widget's class can be any number of subclasses
+down the chain and need not be an immediate subclass of the specified
+class. Composite widgets that need to restrict the class of the items
+they contain can use
+.ZN XtIsSubclass
+to find out if a widget belongs to the desired class of objects.
+.LP
+The
+.ZN XtCheckSubclass
+macro determines if the class of the specified widget is equal to
+or is a subclass of the specified widget class.
+The widget can be any number of subclasses down the chain
+and need not be an immediate subclass of the specified widget class.
+If the specified widget is not a subclass,
+.ZN XtCheckSubclass
+constructs an error message from the supplied message,
+the widget's actual class, and the expected class and calls
+.ZN XtErrorMsg .
+.ZN XtCheckSubclass
+should be used at the entry point of exported routines to ensure 
+that the client has passed in a valid widget class for the exported operation.
+.LP
+.ZN XtCheckSubclass
+is only executed when the widget has been compiled with the compiler symbol
+DEBUG defined; otherwise, it is defined as the empty string 
+and generates no code.
+.LP
+To test if a given widget belongs to a subclass of an Intrinsics-defined
+class, the Intrinsics defines macros or functions equivalent to
+.ZN XtIsSubclass
+for each of the built-in classes. These procedures are
+.ZN XtIsObject ,
+.ZN XtIsRectObj ,
+.ZN XtIsWidget ,
+.ZN XtIsComposite ,
+.ZN XtIsConstraint ,
+.ZN XtIsShell ,
+.ZN XtIsOverrideShell ,
+.ZN XtIsWMShell ,
+.ZN XtIsVendorShell ,
+.ZN XtIsTransientShell ,
+.ZN XtIsTopLevelShell ,
+.ZN XtIsApplicationShell ,
+and
+.ZN XtIsSessionShell .
+.LP
+The
+.SH "SEE ALSO"
+XtAppErrorMsg(3Xt),
+XtDisplay(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtConfigureWidget.man b/libXt/man/XtConfigureWidget.man
new file mode 100644
index 000000000..73242c6f5
--- /dev/null
+++ b/libXt/man/XtConfigureWidget.man
@@ -0,0 +1,224 @@
+.\" $Xorg: XtConfWid.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtConfWid.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtConfigure-Widget XtMove-Widget XtResize-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtConfigureWidget __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtConfigureWidget, XtMoveWidget, XtResizeWidget \- move and resize widgets
+.SH SYNTAX
+.HP
+void XtConfigureWidget(Widget \fIw\fP, Position \fIx\fP, Position \fIy\fP,
+Dimension \fIwidth\fP, Dimension \fIheight\fP, Dimension \fIborder_width\fP);
+.HP
+void XtMoveWidget(Widget \fIw\fP, Position \fIx\fP, Position \fIy\fP);
+.HP
+void XtResizeWidget(Widget \fIw\fP, Dimension \fIwidth\fP, Dimension
+\fIheight\fP, Dimension \fIborder_width\fP);
+.HP
+void XtResizeWindow(Widget \fIw\fP);
+.SH ARGUMENTS
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+.br
+.ns
+.IP \fIborder_width\fP 1i
+Specify the new widget size.
+.IP \fIw\fP 1i
+Specifies the widget.
+.ds Nu new widget
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the \*(Nu x and y coordinates.
+.SH DESCRIPTION
+The
+.ZN XtConfigureWidget
+function returns immediately if the specified geometry fields
+are the same as the old values.
+Otherwise,
+.ZN XtConfigureWidget
+writes the new x, y, width, height, and border_width values 
+into the widget and, if the widget is realized, makes an Xlib
+.ZN XConfigureWindow
+call on the widget's window.
+.LP
+If either the new width or height is different from its old value,
+.ZN XtConfigureWidget
+calls the widget's resize procedure to notify it of the size change;
+otherwise, it simply returns.
+.LP
+The
+.ZN XtMoveWidget
+function returns immediately if the specified geometry fields
+are the same as the old values.
+Otherwise,
+.ZN XtMoveWidget
+writes the new x and y values into the widget 
+and, if the widget is realized, issues an Xlib
+.ZN XMoveWindow
+call on the widget's window.
+.LP
+The
+.ZN XtResizeWidget
+function returns immediately if the specified geometry fields
+are the same as the old values. 
+Otherwise,
+.ZN XtResizeWidget
+writes the new width, height, and border_width values into
+the widget and, if the widget is realized, issues an
+.ZN XConfigureWindow
+call on the widget's window.
+.LP
+If the new width or height are different from the old values,
+.ZN XtResizeWidget
+calls the widget's resize procedure to notify it of the size change.
+.LP
+The
+.ZN XtResizeWindow
+function calls the 
+.ZN XConfigureWindow
+Xlib function to make the window of the specified widget match its width,
+height, and border width. 
+This request is done unconditionally because there is no way to tell if these
+values match the current values.
+Note that the widget's resize procedure is not called.
+.LP
+There are very few times to use
+.ZN XtResizeWindow ;
+instead, you should use
+.ZN XtResizeWidget .
+.SH "SEE ALSO"
+XtMakeGeometryRequest(3Xt),
+XtQueryGeometry(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtConvert.man b/libXt/man/XtConvert.man
new file mode 100644
index 000000000..7828bbd11
--- /dev/null
+++ b/libXt/man/XtConvert.man
@@ -0,0 +1,194 @@
+.\" $Xorg: XtConvert.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtConvert.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtDirect-Convert wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtConvert __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtConvert, XtDirectConvert \- invoke resource converters
+.SH SYNTAX
+.HP
+void XtConvert(Widget \fIw\fP, String \fIfrom_type\fP, XrmValuePtr \fIfrom\fP,
+String \fIto_type\fP, XrmValuePtr \fIto_return\fP); 
+.HP
+void XtDirectConvert(XtConverter \fIconverter\fP, XrmValuePtr \fIargs\fP,
+Cardinal \fInum_args\fP, XrmValuePtr \fIfrom\fP, XrmValuePtr \fIto_return\fP);
+.SH ARGUMENTS
+.ds Al that contains the additional arguments needed to perform \
+the conversion (often NULL)
+.IP \fIargs\fP 1i
+Specifies the argument list \*(Al.
+.IP \fIconverter\fP 1i
+Specifies the conversion procedure that is to be called.
+.IP \fIfrom\fP 1i
+Specifies the value to be converted.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fInum_args\fP 1i
+Specifies the number of additional arguments (often zero).
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIto_return\fP 1i
+Returns the converted value.
+.ds Wi to use for additional arguments (if any are needed)
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtConvert
+function looks up the type converter registered to convert from_type 
+to to_type, computes any additional arguments needed, and then calls
+.ZN XtDirectConvert .
+.ZN XtConvert 
+has been replaced by
+.ZN XtConvertAndStore .
+.LP
+The
+.ZN XtDirectConvert
+function looks in the converter cache to see if this conversion procedure
+has been called with the specified arguments.
+If so, it returns a descriptor for information stored in the cache;
+otherwise, it calls the converter and enters the result in the cache.
+.LP
+Before calling the specified converter,
+.ZN XtDirectConvert
+sets the return value size to zero and the return value address to NULL.
+To determine if the conversion was successful,
+the client should check to_return.address for non-NULL.
+.ZN XtDirectConvert
+has been replaced by
+.ZN XtCallConverter .
+.SH "SEE ALSO"
+XtAppAddConverter(3Xt),
+XtStringConversionWarning(3Xt),
+XtConvertAndStore(3Xt),
+XtCallConverter(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtConvertAndStore.man b/libXt/man/XtConvertAndStore.man
new file mode 100644
index 000000000..e0d4a666e
--- /dev/null
+++ b/libXt/man/XtConvertAndStore.man
@@ -0,0 +1,226 @@
+.\" $Xorg: XtConvSt.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtConvSt.man,v 1.4 2003/04/28 22:18:18 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtConvert-And-Store XtCall-Converter wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtConvertAndStore __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtConvertAndStore, XtCallConverter \- invoke resource converters
+.SH SYNTAX
+.HP
+Boolean XtConvertAndStore(Widget \fIwidget\fP, String \fIfrom_type\fP,
+XrmValuePtr \fIfrom\fP, String \fIto_type\fP, XrmValuePtr \fIto_in_out\fP);
+.HP
+Boolean XtCallConverter(Display* \fIdpy\fP, XtConverter \fIconverter\fP,
+XrmValuePtr \fIargs\fP, Cardinal \fInum_args\fP, XrmValuePtr \fIfrom\fP,
+XrmValuePtr \fIto_in_out\fP, XtCacheRef* \fIcache_ref_return\fP); 
+.SH ARGUMENTS
+.IP \fIargs\fP 1i
+Specifies the argument list that contains the additional arguments needed 
+to perform the conversion, or NULL.
+.IP \fIconverter\fP 1i
+Specifies the conversion procedure that is to be called.
+.IP \fIfrom\fP 1i
+Specifies the value to be converted.
+.IP \fIfrom_type\fP 1i
+Specifies the source type.
+.IP \fInum_args\fP 1i
+Specifies the number of additional arguments (often zero).
+.IP \fIto_type\fP 1i
+Specifies the destination type.
+.IP \fIto_in_out\fP 1i
+Returns the converted value.
+.IP \fIwidget\fP 1i
+Specifies the widget to use for additional arguments, if any are needed,
+and the destroy callback list.
+.IP \fIdpy\fP 1i
+Specifies the display with which the conversion is to be associated.
+.SH DESCRIPTION
+The
+.ZN XtConvertAndStore
+function looks up the type converter registered to convert from_type 
+to to_type, computes any additional arguments needed, and then calls
+.ZN XtCallConverter .
+(or
+.ZN XtDirectConvert
+if an old-style converter was registered with
+.ZN XtAddConverter
+or
+.ZN XtAppAddConverter .
+) with the from and to_in_out arguments.
+.LP
+The
+.ZN XtCallConverter
+function looks up the specified type converter in the application
+context associated with the display and, if the converter was not
+registered or was registered with cache type
+.ZN XtCacheAll
+or
+.ZN XtCacheByDisplay
+looks in the conversion cache to see if this conversion procedure
+has been called with the specified conversion arguments. If so, it
+checks the success status of the prior call, and if the conversion
+failed,
+.ZN XtCallConverter
+returns
+.ZN False
+immediately; otherwise it checks the size specified in the \fIto\fP
+argument and, if it is greater than or equal to the size stored in the
+cache, copies the information stored in the cache into the location
+specified by \fIto->addr\fP, stores the cache size into \fIto->size\fP,
+and returns
+.ZN True .
+If the size specified in the \fIto\fP argument is smaller than the size
+stored in the cache,
+.ZN XtCallConverter
+copies the cache size into the \fIto->size\fP and returns
+.ZN False .
+If the converter was registered with cache type 
+.ZN XtCacheNone
+or no value was found in the conversion cache,
+.ZN XtCallConverter
+calls the converter and, if it was not registered with cache type
+.ZN XtCacheNone ,
+enters the result into the cache.
+.ZN XtCallConverter
+then returns what the converter returned.
+.LP
+The \fIcache_ref_return\fP field specifies storage allocated by the
+caller in which an opaque value will be stored. If the type converter
+has been registered with the
+.ZN XtCacheRefCount
+modifier and if the value returned in in \fIcache_ref_return\fP is
+non-NULL, then the call should store the \fIcache_ref_return\fP value
+in order to decrement the reference count when the converted value
+is no longer required. The \fIcache_ref_return\fP argument should be
+NULL if the caller is unwilling or unable to store the value.
+.SH "SEE ALSO"
+XtAppReleaseCacheRefs(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCreateApplicationContext.man b/libXt/man/XtCreateApplicationContext.man
new file mode 100644
index 000000000..bfd85bfb1
--- /dev/null
+++ b/libXt/man/XtCreateApplicationContext.man
@@ -0,0 +1,179 @@
+.\" $Xorg: XtCreACon.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCreACon.man,v 1.3 2003/04/28 22:18:18 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCreate-Application-Context XtDestroy-Application-Context XtWidget-To-Application-Context XtToolkit-Initialize wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCreateApplicationContext __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCreateApplicationContext, XtDestroyApplicationContext, XtWidgetToApplicationContext, XtToolkitInitialize \- create, destroy, and obtain an application context
+.SH SYNTAX
+.HP
+XtAppContext XtCreateApplicationContext(void); 
+.HP
+void XtDestroyApplicationContext(XtAppContext \fIapp_context\fP);
+.HP
+XtAppContext XtWidgetToApplicationContext(Widget \fIw\fP); 
+.HP
+void XtToolkitInitialize(void); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.ds wi that you want the application context for
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtCreateApplicationContext
+function returns an application context,
+which is an opaque type.
+Every application must have at least one application context.
+.LP
+The
+.ZN XtDestroyApplicationContext
+function destroys the specified application context as soon as it is safe 
+to do so.
+If called from with an event dispatch (for example, a callback procedure),
+.ZN XtDestroyApplicationContext
+does not destroy the application context until the dispatch is complete.
+.LP
+The
+.ZN XtWidgetToApplicationContext
+function returns the application context for the specified widget.
+.LP
+The
+.ZN XtToolkitInitialize
+function initializes the Intrinsics internals.
+If
+.ZN XtToolkitInitialize
+was previously called it returns immediately.
+.LP
+.SH "SEE ALSO"
+XtDisplayInitialize(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCreateApplicationShell.man b/libXt/man/XtCreateApplicationShell.man
new file mode 100644
index 000000000..b2b9bb110
--- /dev/null
+++ b/libXt/man/XtCreateApplicationShell.man
@@ -0,0 +1,160 @@
+.\" $Xorg: XtCreASh.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCreASh.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtApp-Create-Application-Shell wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCreateApplicationShell __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtCreateApplicationShell \- create top-level widget instance
+.SH SYNTAX
+.HP
+Widget XtCreateApplicationShell(String \fIname\fP, WidgetClass
+\fIwidget_class\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP); 
+.SH ARGUMENTS
+.IP \fIname\fP 1i
+Specifies the name of the shell.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specifications.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.SH DESCRIPTION
+The procedure
+.ZN XtCreateApplicationShell
+calls
+.ZN XtAppCreateShell
+with the \fIapplication\fP NULL, the application class passed to
+.ZN XtInitialize ,
+and the default application context created by
+.ZN XtInitialize .
+This routine has been replaced by
+.ZN XtAppCreateShell .
+.SH "SEE ALSO"
+XtAppCreateShell(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCreatePopupShell.man b/libXt/man/XtCreatePopupShell.man
new file mode 100644
index 000000000..aaf6f4eaf
--- /dev/null
+++ b/libXt/man/XtCreatePopupShell.man
@@ -0,0 +1,181 @@
+.\" $Xorg: XtCrePSh.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCrePSh.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCreate-Popup-Shell XtVaCreate-Popup-Shell wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCreatePopupShell __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCreatePopupShell, XtVaCreatePopupShell \- create a popup shell
+.SH SYNTAX
+.HP
+Widget XtCreatePopupShell(String \fIname\fP, WidgetClass \fIwidget_class\fP,
+Widget \fIparent\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP);
+.HP
+Widget XtVaCreatePopupShell(String \fIname\fP, WidgetClass \fIwidget_class\fP,
+Widget \fIparent\fP, ...\^); 
+.SH ARGUMENTS
+.ds Al to override the resource defaults
+.IP \fIargs\fP 1i
+Specifies the argument list \*(Al.
+.ds Sh \ shell
+.IP \fIname\fP 1i
+Specifies the text name for the created\*(Sh widget.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.IP \fIparent\fP 1i
+Specifies the parent widget.
+.ds Wc \ pointer for the created shell widget
+.IP \fIwidget_class\fP 1i
+Specifies the widget class\*(Wc.
+.IP \fI...\fP 1i
+Specifies the variable argument list \*(Al.
+.SH DESCRIPTION
+The
+.ZN XtCreatePopupShell
+function ensures that the specified class is a subclass of
+.ZN Shell
+and, rather than using insert_child to attach the widget to the parent's
+.IN "insert_child procedure"
+children list, attaches the shell to the parent's pop-ups list directly.
+.LP
+A spring-loaded pop-up invoked from a translation table already must exist
+at the time that the translation is invoked, 
+so the translation manager can find the shell by name.
+Pop-ups invoked in other ways can be created ``on-the-fly'' when
+the pop-up actually is needed.
+This delayed creation of the shell is particularly useful when you pop up
+an unspecified number of pop-ups.
+You can look to see if an appropriate unused shell (that is, not
+currently popped up) exists and create a new shell if needed.
+.SH "SEE ALSO"
+XtCreateWidget(3Xt),
+XtPopdown(3Xt),
+XtPopup(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCreateSelectionRequest.man b/libXt/man/XtCreateSelectionRequest.man
new file mode 100644
index 000000000..8df427083
--- /dev/null
+++ b/libXt/man/XtCreateSelectionRequest.man
@@ -0,0 +1,201 @@
+.\" $Xorg: XtCreateSR.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCreateSR.man,v 1.2 2001/01/27 18:20:25 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCreate-Selection-Request XtSend-Selection-Request XtCancel-Selection-Request wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCreateSelectionRequest __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCreateSelectionRequest, XtSendSelectionRequest, XtCancelSelectionRequest \- bundle multiple selection conversion requests into a single request using MULTIPLE target
+.SH SYNTAX
+.HP
+void XtCreateSelectionRequest(Widget \fIrequestor\fP, Atom \fIselection\fP): 
+.HP
+void XtSendSelectionRequest(Widget \fIrequestor\fP, Atom \fIselection\fP, Time
+\fItime\fP); 
+.HP
+void XtCancelSelectionRequest(Widget \fIrequestor\fP, Atom \fIselection\fP); 
+.SH ARGUMENTS
+.IP \fIrequestor\fP 1i
+Specifies the widget making the request. Must be of class Core or a
+subclass thereof.
+.IP \fIselection\fP 1i
+Specifies the particular selection desired.
+.IP \fItime\fP 1i
+Specifies the timestamp to be used in making the request.
+.SH DESCRIPTION
+When
+.ZN XtCreateSelectionRequest 
+is called, subsequent calls to
+.ZN XtGetSelectionValue
+and
+.ZN XtGetSelectionValueIncremental
+with the requestor and selection as specified to
+.ZN XtCreateSelectionRequest 
+will be bundled into a single selection conversion request with
+multiple targets. The request is actually initiated by calling
+.ZN XtSendSelectionRequest .
+.LP
+When
+.ZN XtSendSelectionRequest
+is called with a value of \fIrequestor\fP and \fIselection\fP matching
+a previous call to
+.ZN XtCreateSelectionRequest ,
+a selection conversion request is actually sent to the selection owner.
+If a single target request is queued, that request is made. If multiple
+targets are queued they are bundled into a single request with the
+target MULTIPLE using the specified timestamp. As the conversions are
+made, the callbacks associated with each
+.ZN XtGetSelectionValue
+and
+.ZN XtGetSelectionValueIncremental
+are invoked in turn.
+.LP
+Multi-threaded applications should lock the application context before
+calling
+.ZN XtCreateSelectionRequest
+and release the lock after calling
+.ZN XtSendSelectionRequest
+to ensure that the thread assembling the request is safe from interference
+by another thread assembling a different request naming the same widget
+and selection.
+.LP
+When
+.ZN XtCancelSelectionRequest
+is called, any requests queued since the last call to
+.ZN XtCreateSelectionRequest
+are cleaned up. Subsequent calls to
+.ZN XtGetSelectionValue ,
+.ZN XtGetSelectionValues ,
+.ZN XtGetSelectionValueIncremental ,
+and
+.ZN XtGetSelectionValuesIncremental
+will not be deferred.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCreateWidget.man b/libXt/man/XtCreateWidget.man
new file mode 100644
index 000000000..36b1f63f9
--- /dev/null
+++ b/libXt/man/XtCreateWidget.man
@@ -0,0 +1,312 @@
+.\" $Xorg: XtCreWid.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCreWid.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCreate-Widget XtCreate-Managed-Widget XtDestroy-Widget XtVa-Create-Widget XtVa-Create-Managed-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCreateWidget __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCreateWidget, XtVaCreateWidget, XtCreateManagedWidget, XtVaCreateManagedWidget, XtDestroyWidget \- create and destroy widgets
+.SH SYNTAX
+.HP
+Widget XtCreateWidget(String \fIname\fP, WidgetClass \fIwidget_class\fP,
+Widget \fIparent\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP); 
+.HP
+Widget XtVaCreateWidget(String \fIname\fP, WidgetClass \fIwidget_class\fP,
+Widget \fIparent\fP, ...\^);
+.HP
+Widget XtCreateManagedWidget(String \fIname\fP, WidgetClass
+\fIwidget_class\fP, Widget \fIparent\fP, ArgList \fIargs\fP, Cardinal
+\fInum_args\fP); 
+.HP
+Widget XtVaCreateManagedWidget(String \fIname\fP, WidgetClass
+\fIwidget_class\fP, Widget \fIparent\fP, ...\^);
+.HP
+void XtDestroyWidget(Widget \fIw\fP); 
+.SH ARGUMENTS
+.ds Al to override the resource defaults
+.IP \fIargs\fP 1i
+Specifies the argument list \*(Al.
+.IP \fIname\fP 1i
+Specifies the resource name for the created widget,
+which is used for retrieving resources
+and, for that reason, should not be the same as any other widget
+that is a child of same parent.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.IP \fIparent\fP 1i
+Specifies the parent widget.
+.IP \fIw\fP 1i
+Specifies the widget.
+.ds Wc \ pointer for the created widget
+.IP \fIwidget_class\fP 1i
+Specifies the widget class\*(Wc.
+.IP \fI...\fP
+Specifies the variable argument list \*(Al.
+.SH DESCRIPTION
+The
+.ZN XtCreateWidget
+function performs much of the boilerplate operations of widget creation:
+.IP \(bu 5
+Checks to see if the class_initialize procedure has been called for this class
+and for all superclasses and, if not, calls those necessary in a
+superclass-to-subclass order.
+.IP \(bu 5
+Allocates memory for the widget instance.
+.IP \(bu 5
+If the parent is a subclass of
+.ZN constraintWidgetClass ,
+it allocates memory for the parent's constraints
+and stores the address of this memory into the constraints field.
+.IP \(bu 5
+Initializes the core nonresource data fields
+(for example, parent and visible).
+.IP \(bu 5
+Initializes the resource fields (for example, background_pixel)
+by using the resource lists specified for this class and all superclasses.
+.IP \(bu 5
+If the parent is a subclass of
+.ZN constraintWidgetClass ,
+it initializes the resource fields of the constraints record
+by using the constraint resource list specified for the parent's class
+and all superclasses up to
+.ZN constraintWidgetClass .
+.IP \(bu 5
+Calls the initialize procedures for the widget by starting at the 
+.ZN Core
+initialize procedure on down to the widget's initialize procedure.
+.IP \(bu 5
+If the parent is a subclass of
+.ZN compositeWidgetClass ,
+it puts the widget into its parent's children list by calling its parent's
+insert_child procedure.
+For further information,
+see Section 3.5.
+.IP \(bu 5
+If the parent is a subclass of
+.ZN constraintWidgetClass ,
+it calls the constraint initialize procedures,
+starting at
+.ZN constraintWidgetClass
+on down to the parent's constraint initialize procedure.
+.LP
+Note that you can determine the number of arguments in an argument list 
+by using the
+.ZN  XtNumber
+macro.
+For further information, see Section 11.1.
+.LP
+The
+.ZN XtCreateManagedWidget
+function is a convenience routine that calls
+.ZN XtCreateWidget
+and
+.ZN XtManageChild .
+.LP
+The
+.ZN XtDestroyWidget
+function provides the only method of destroying a widget,
+including widgets that need to destroy themselves.
+It can be called at any time,
+including from an application callback routine of the widget being destroyed.
+This requires a two-phase destroy process in order to avoid dangling
+references to destroyed widgets.
+.LP
+In phase one,
+.ZN XtDestroyWidget
+performs the following:
+.IP \(bu 5
+If the being_destroyed field of the widget is 
+.ZN True ,
+it returns immediately.
+.IP \(bu 5
+Recursively descends the widget tree and
+sets the being_destroyed field to 
+.ZN True 
+for the widget and all children.
+.IP \(bu 5
+Adds the widget to a list of widgets (the destroy list) that should be
+destroyed when it is safe to do so.
+.LP
+Entries on the destroy list satisfy the invariant that
+if w2 occurs after w1 on the destroy list then w2 is not a descendent of w1.
+(A descendant refers to both normal and pop-up children.)
+.LP
+Phase two occurs when all procedures that should execute as a result of
+the current event have been called (including all procedures registered with
+the event and translation managers),
+that is, when the current invocation of
+.ZN XtDispatchEvent
+is about to return or immediately if not in
+.ZN XtDispatchEvent .
+.LP
+In phase two,
+.ZN XtDestroyWidget
+performs the following on each entry in the destroy list:
+.IP \(bu 5
+Calls the destroy callback procedures registered on the widget 
+(and all descendants) in post-order (it calls children callbacks 
+before parent callbacks).
+.IP \(bu 5
+If the widget's parent is a subclass of 
+.ZN compositeWidgetClass 
+and if the parent is not being destroyed, 
+it calls 
+.ZN XtUnmanageChild 
+on the widget and then calls the widget's parent's delete_child procedure
+(see Section 3.4).
+.IP \(bu 5
+If the widget's parent is a subclass of
+.ZN constraintWidgetClass ,
+it calls the constraint destroy procedure for the parent,
+then the parent's superclass,
+until finally it calls the constraint destroy procedure for
+.ZN constraintWidgetClass .
+.IP \(bu 5
+Calls the destroy methods for the widget (and all descendants)
+in post-order.
+For each such widget,
+it calls the destroy procedure declared in the widget class,
+then the destroy procedure declared in its superclass,
+until finally it calls the destroy procedure declared in the Core
+class record.
+.IP \(bu 5
+Calls
+.ZN XDestroyWindow
+if the widget is realized (that is, has an X window).
+The server recursively destroys all descendant windows.
+.IP \(bu 5
+Recursively descends the tree and deallocates all pop-up widgets, constraint
+records, callback lists and, if the widget is a subclass of 
+.ZN compositeWidgetClass , 
+children.
+.SH "SEE ALSO"
+XtAppCreateShell(3Xt),
+XtCreatePopupShell(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtCreateWindow.man b/libXt/man/XtCreateWindow.man
new file mode 100644
index 000000000..f4c96e9b1
--- /dev/null
+++ b/libXt/man/XtCreateWindow.man
@@ -0,0 +1,190 @@
+.\" $Xorg: XtCreWin.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtCreWin.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCreate-Window wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtCreateWindow __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtCreateWindow \- window creation convenience function
+.SH SYNTAX
+.HP
+void XtCreateWindow(Widget \fIw\fP, unsigned int \fIwindow_class\fP, Visual
+*\fIvisual\fP, XtValueMask \fIvalue_mask\fP, XSetWindowAttributes
+*\fIattributes\fP); 
+.SH ARGUMENTS
+.IP \fIattributes\fP 1i
+Specifies the window attributes to use in the
+.ZN XCreateWindow
+call.
+.ds Vm attribute fields to use
+.IP \fIvalue_mask\fP 1i
+Specifies which \*(Vm.
+.IP \fIvisual\fP 1i
+Specifies the visual type (usually
+.ZN CopyFromParent ).
+.ds Wi that is used to set the x,y coordinates and so on
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.IP \fIwindow_class\fP 1i
+Specifies the Xlib window class (for example,
+.ZN InputOutput ,
+.ZN InputOnly ,
+or
+.ZN CopyFromParent ).
+.SH DESCRIPTION
+The
+.ZN XtCreateWindow
+function calls the Xlib
+.ZN XCreateWindow
+function with values from the widget structure and the passed parameters.
+Then, it assigns the created window to the widget's window field.
+.LP
+.ZN XtCreateWindow
+evaluates the following fields of the
+.ZN Core 
+widget structure:
+.IP \(bu 5
+depth
+.IP \(bu 5
+screen
+.IP \(bu 5
+parent -> core.window
+.IP \(bu 5
+x
+.IP \(bu 5
+y
+.IP \(bu 5
+width
+.IP \(bu 5
+height
+.IP \(bu 5
+border_width
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtDisplay.man b/libXt/man/XtDisplay.man
new file mode 100644
index 000000000..4a542c582
--- /dev/null
+++ b/libXt/man/XtDisplay.man
@@ -0,0 +1,173 @@
+.\" $Xorg: XtDisplay.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtDisplay.man,v 1.2 2001/01/27 18:20:25 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtDisplay-Of-Object XtScreen-Of-Object XtWindow-Of-Object wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtDisplay __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtDisplay, XtDisplayOfObject, XtScreen, XtScreenOfObject, XtWindow, XtWindowOfObject \- obtain window information about a widget
+.SH SYNTAX
+.HP
+Display *XtDisplay(Widget \fIw\fP); 
+.HP
+Display *XtDisplayOfObject(Widget \fIobject\fP);
+.HP
+Screen *XtScreen(Widget \fIw\fP);
+.HP
+Screen *XtScreenOfObject(Widget \fIobject\fP); 
+.HP
+Window XtWindow(Widget \fIw\fP); 
+.HP
+Window XtWindowOfObject(Widget \fIobject\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.LP
+.IP \fIobject\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+.ZN XtDisplay
+returns the display pointer for the specified widget.
+.LP
+.ZN XtDisplayOfObject
+returns the display pointer for the specified object.
+.LP
+.ZN XtScreen
+returns the screen pointer for the specified widget.
+.LP
+.ZN XtScreenOfObject
+returns the screen pointer for the specified object.
+.LP
+.ZN XtWindow
+returns the window of the specified widget.
+.LP
+.ZN XtWindowOfObject
+returns the window of the specified object.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtDisplayInitialize.man b/libXt/man/XtDisplayInitialize.man
new file mode 100644
index 000000000..5d559e185
--- /dev/null
+++ b/libXt/man/XtDisplayInitialize.man
@@ -0,0 +1,272 @@
+.\" $Xorg: XtDisplayI.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtDisplayI.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtDisplay-Initialize XtOpen-Display XtClose-Display XtDatabase XtScreen-Database wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtDisplayInitialize __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtDisplayInitialize, XtOpenDisplay, XtDatabase, XtScreenDatabase, XtCloseDisplay \- initialize, open, or close a display
+.SH SYNTAX
+.HP
+void XtDisplayInitialize(XtAppContext \fIapp_context\fP, Display
+*\fIdisplay\fP, String \fIapplication_name\fP, String \fIapplication_class\fP,
+XrmOptionDescRec *\fIoptions\fP, Cardinal \fInum_options\fP, int *\fIargc\fP,
+String *\fIargv\fP); 
+.HP
+Display *XtOpenDisplay(XtAppContext \fIapp_context\fP, String
+\fIdisplay_string\fP, String \fIapplication_name\fP, String
+\fIapplication_class\fP, XrmOptionDescRec *\fIoptions\fP, Cardinal
+\fInum_options\fP, int *\fIargc\fP, String *\fIargv\fP); 
+.HP
+void XtCloseDisplay(Display *\fIdisplay\fP); 
+.HP
+XrmDatabase XtDatabase(Display *\fIdisplay\fP);
+.HP
+XrmDatabase XtScreenDatabase(Screen* \fIscreen\fP); 
+.SH ARGUMENTS
+.IP \fIargc\fP 1i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv\fP 1i
+Specifies the command line parameters.
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.ds Ac , which usually is the generic name for all instances of this application
+.IP \fIapplication_class\fP 1i
+Specifies the class name of this application\*(Ac.
+.IP \fIapplication_name\fP 1i
+Specifies the name of the application instance.
+.IP \fIdisplay\fP 1i
+Specifies the display\*(Di.
+Note that a display can be in at most one application context.
+.IP \fInum_options\fP 1i
+Specifies the number of entries in the options list.
+.IP \fIoptions\fP 1i
+Specifies how to parse the command line for any application-specific resources.
+The options argument is passed as a parameter to
+.ZN XrmParseCommand .
+For further information,
+see \fI\*(xL\fP.
+.IP \fIscreen\fP 1i
+Specifies the screen whose resource database is to be returned.
+.SH DESCRIPTION
+The
+.ZN XtDisplayInitialize
+function builds the resource database, calls the Xlib
+.ZN XrmParseCommand
+function to parse the command line, 
+and performs other per display initialization.
+After 
+.ZN XrmParseCommand 
+has been called,
+argc and argv contain only those parameters that
+were not in the standard option table or in the table specified by the
+options argument.
+If the modified argc is not zero,
+most applications simply print out the modified argv along with a message
+listing the allowable options.
+On UNIX-based systems,
+the application name is usually the final component of argv[0].
+If the synchronize resource is
+.ZN True
+for the specified application,
+.ZN XtDisplayInitialize
+calls the Xlib
+.ZN XSynchronize
+function to put Xlib into synchronous mode for this display connection.
+If the reverseVideo resource is
+.ZN True ,
+the \*(xI exchange
+.ZN XtDefaultForeground
+and
+.ZN XtDefaultBackground
+for widgets created on this display.
+(See Section 9.6.1).
+.LP
+The
+.ZN XtOpenDisplay
+function calls
+.ZN XOpenDisplay 
+the specified display name.
+If display_string is NULL,
+.ZN XtOpenDisplay
+uses the current value of the \-display option specified in argv 
+and if no display is specified in argv,
+uses the user's default display (on UNIX-based systems, 
+this is the value of the DISPLAY environment variable).
+.LP
+If this succeeds, it then calls
+.ZN XtDisplayInitialize
+and pass it the opened display and
+the value of the \-name option specified in argv as the application name.
+If no name option is specified,
+it uses the application name passed to
+.ZN XtOpenDisplay .
+If the application name is NULL,
+it uses the last component of argv[0].
+.ZN XtOpenDisplay
+returns the newly opened display or NULL if it failed.
+.LP
+.ZN XtOpenDisplay
+is provided as a convenience to the application programmer.
+.LP
+The
+.ZN XtCloseDisplay
+function closes the specified display as soon as it is safe to do so.
+If called from within an event dispatch (for example, a callback procedure),
+.ZN XtCloseDisplay
+does not close the display until the dispatch is complete.
+Note that applications need only call
+.ZN XtCloseDisplay
+if they are to continue executing after closing the display; 
+otherwise, they should call
+.ZN XtDestroyApplicationContext
+or just exit.
+.LP
+The
+.ZN XtDatabase
+function returns the fully merged resource database that was built by
+.ZN XtDisplayInitialize
+associated with the display that was passed in.
+If this display has not been initialized by
+.ZN XtDisplayInitialize ,
+the results are not defined.
+.LP
+The
+.ZN XtScreenDatabase
+function returns the fully merged resource database associated with the
+specified screen. If the \fIscreen\fP does not belong to a 
+.ZN Display
+initialized by
+.ZN XtDisplayInitialize ,
+the results are undefined.
+.SH "SEE ALSO"
+XtAppCreateShell(3Xt),
+XtCreateApplicationContext(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtDisplayStringConversionWarning.man b/libXt/man/XtDisplayStringConversionWarning.man
new file mode 100644
index 000000000..e0b0ec435
--- /dev/null
+++ b/libXt/man/XtDisplayStringConversionWarning.man
@@ -0,0 +1,163 @@
+.\" $Xorg: XtDStrCW.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtDStrCW.man,v 1.4 2003/04/28 22:18:18 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtDisplay-String-Conversion-Warning wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtDisplayStringConversionWarning __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtDisplayStringConversionWarning \- issue a conversion warning message
+.SH SYNTAX
+.HP
+void XtDisplayStringConversionWarning(Display* \fIdisplay\fP, String
+\fIfrom_value\fP, \fIto_type\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the display connection with which the conversion is associated.
+.IP \fIfrom_value\fP 1i
+Specifies the string that could not be converted.
+.IP \fIto_type\fP 1i
+Specifies the target representation type requested.
+.SH DESCRIPTION
+The
+.ZN XtDisplayStringConversionWarning
+function issues a warning message using
+.ZN XtAppWarningMsg
+with name ``conversionError'', type ``string'', class ``XtToolkitError, 
+and the default message string ``Cannot convert "\fIfrom_value\fP" to 
+type \fIto_type\fP''.
+.LP
+To issue other types of warning or error messages, the type converter
+should use
+.ZN XtAppWarningMsg
+or
+.ZN XtAppErrorMsg .
+.SH "SEE ALSO"
+XtAppWarningMsg(3t)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtDisplayToApplicationContext.man b/libXt/man/XtDisplayToApplicationContext.man
new file mode 100644
index 000000000..c80279dd9
--- /dev/null
+++ b/libXt/man/XtDisplayToApplicationContext.man
@@ -0,0 +1,146 @@
+.\" $Xorg: XtDisACon.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtDisACon.man,v 1.2 2001/01/27 18:20:25 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtDisplay-To-Application-Context wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtDisplayToApplicationContext __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtDisplayToApplicationContext \- obtain an application context
+.SH SYNTAX
+.HP
+XtAppContext XtDisplayToApplicationContext(Display* \fIdpy\fP); 
+.SH ARGUMENTS
+.ds Wi that you want the application context for
+.IP \fIdpy\fP 1i
+Specifies the display \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtDisplayToApplicationContext
+function returns the application context for the specified display.
+.SH "SEE ALSO"
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtError.man b/libXt/man/XtError.man
new file mode 100644
index 000000000..65d3e9259
--- /dev/null
+++ b/libXt/man/XtError.man
@@ -0,0 +1,177 @@
+.\" $Xorg: XtErr.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtErr.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtError XtSet-Error-Handler XtSet-Warning-Handler XtWarning wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtError __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtError, XtSetErrorHandler, XtSetWarningHandler, XtWarning \- low-level error handlers
+.SH SYNTAX
+.HP
+void XtError(String \fImessage\fP); 
+.HP
+void XtSetErrorHandler(XtErrorHandler \fIhandler\fP): 
+.HP
+void XtSetWarningHandler(XtErrorHandler \fIhandler\fP); 
+.HP
+void XtWarning(String \fImessage\fP); 
+.SH ARGUMENTS
+.IP \fImessage\fP 1i
+Specifies the nonfatal error message that is to be reported.
+.ds Ha fatal error procedure, which should not return, \
+or the nonfatal error procedure, which usually returns
+.IP \fIhandler\fP 1i
+Specifies the new \*(Ha.
+.ds Me reported
+.IP \fImessage\fP 1i
+Specifies the message that is to be \*(Me.
+.SH DESCRIPTION
+The
+.ZN XtError
+function has been superceded by
+.ZN XtAppError .
+.LP
+The
+.ZN XtSetErrorHandler
+function has been superceded by
+.ZN XtAppSetErrorHandler .
+.LP
+The
+.ZN XtSetWarningHandler
+function has been superceded by
+.ZN XtAppSetWarningHandler .
+.LP
+The
+.ZN XtWarning
+function has been superceded by
+.ZN XtAppWarning .
+.SH "SEE ALSO"
+.BR XtAppError (3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtErrorMsg.man b/libXt/man/XtErrorMsg.man
new file mode 100644
index 000000000..ab18c6581
--- /dev/null
+++ b/libXt/man/XtErrorMsg.man
@@ -0,0 +1,187 @@
+.\" $Xorg: XtErrM.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtErrM.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtError-Msg XtSet-Error-Msg-Handler XtSet-Warning-Msg-Handler XtWarning-Msg wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtErrorMsg __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtErrorMsg, XtSetErrorMsgHandler, XtWarningMsg, XtSetWarningMsgHandler \- high-level error handlers
+.SH SYNTAX
+.HP
+void XtErrorMsg(String \fIname\fP, String \fItype\fP, String \fIclass\fP,
+String \fIdefault\fP, String *\fIparams\fP, Cardinal *\fInum_params\fP); 
+.HP
+void XtSetErrorMsgHandler(XtErrorMsgHandler \fImsg_handler\fP); 
+.HP
+void XtSetWarningMsgHandler(XtErrorMsgHandler \fImsg_handler\fP); 
+.HP
+void XtWarningMsg(String \fIname\fP, String \fItype\fP, String \fIclass\fP,
+String \fIdefault\fP, String *\fIparams\fP, Cardinal *\fInum_params\fP); 
+.SH ARGUMENTS
+.ds Cl
+.IP \fIclass\fP 1i
+Specifies the resource class\*(Cl.
+.IP \fIdefault\fP 1i
+Specifies the default message to use\*(Dm.
+.IP \fIname\fP 1i
+Specifies the general kind of error.
+.IP \fItype\fP 1i
+Specifies the detailed name of the error.
+.ds Mh fatal error procedure, which should not return \
+or the nonfatal error procedure, which usually returns
+.IP \fImsg_handler\fP 1i
+Specifies the new \*(Mh.
+.IP \fInum_params\fP 1i
+Specifies the number of values in the parameter list.
+.IP \fIparams\fP 1i
+Specifies a pointer to a list of values to be stored in the message.
+.SH DESCRIPTION
+The
+.ZN XtErrorMsg
+function has been superceded by
+.ZN XtAppErrorMsg .
+.LP
+The
+.ZN XtSetErrorMsgHandler
+function has been superceded by
+.ZN XtAppSetErrorMsgHandler .
+.LP
+The
+.ZN XtSetWarningMsgHandler
+function has been superceded by
+.ZN XtAppSetWarningMsgHandler .
+.LP
+The
+.ZN XtWarningMsg
+function has been superceded by
+.ZN XtAppWarningMsg
+.SH "SEE ALSO"
+.BR XtAppErrorMsg (3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtFindFile.man b/libXt/man/XtFindFile.man
new file mode 100644
index 000000000..80c27f19a
--- /dev/null
+++ b/libXt/man/XtFindFile.man
@@ -0,0 +1,191 @@
+.\" $Xorg: XtFindF.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtFindF.man,v 1.4 2002/10/12 16:06:41 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtFind-File wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtFindFile __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtFindFile \- search for a file using substitutions in the path list
+.SH SYNTAX
+.HP
+String XtFindFile(String \fIpath\fP, Substitution \fIsubstitutions\fP,
+Cardinal \fInum_substitutions\fP, XtFilePredicate \fIpredicate\fP); 
+.SH ARGUMENTS
+.IP \fIpath\fP 1i
+Specifies a path of file names, including substitution characters.
+.IP \fIsubstitutions\fP 1i
+Specifies a list of substitutions to make into a path.
+.IP \fInum_substitutions\fP 1i
+Specifies the number of substitutions passed in.
+.IP \fIpredicate\fP 1i
+Specifies a procedure to call to judge a potential file name, or NULL.
+.SH DESCRIPTION
+The \fIpath\fP parameter specifies a string that consists of a series of
+potential file names delimited by colons.  Within each name, the
+percent character specifies a string substitution selected by the
+following character.  The character sequence ``%:'' specifies an
+embedded colon that is not a delimiter; the sequence is replaced by a
+single colon.  The character sequence ``%%'' specifies a percent
+character that does not introduce a substitution; the sequence is
+replaced by a single percent character.  If a percent character is
+followed by any other character,
+.ZN XtFindFile
+looks through the
+specified \fIsubstitutions\fP for that character in the \fImatch\fP field and if
+found replaces the percent and match characters with the string in the
+corresponding \fIsubstitution\fP field.  A \fIsubstitution\fP field entry of NULL
+is equivalent to a pointer to an empty string.  If the operating
+system does not interpret multiple embedded name separators in the
+path (i.e., ``/'' in POSIX) the same way as a single separator,
+.ZN XtFindFile
+will collapse multiple separators into a single one after performing
+all string substitutions.  Except for collapsing embedded separators,
+the contents of the string substitutions are not interpreted by
+.ZN XtFindFile
+and may therefore contain any operating-system-dependent
+characters, including additional name separators.  Each resulting
+string is passed to the predicate procedure until a string is found for
+which the procedure returns
+.ZN True ;
+this string is the return value for
+.ZN XtFindFile .
+If no string yields a
+.ZN True
+return from the predicate,
+.ZN XtFindFile
+returns NULL.
+.LP
+If the \fIpredicate\fP parameter is NULL, an internal procedure that checks
+if the file exists, is readable, and is not a directory will be used.
+.LP
+It is the responsibility of the caller to free the returned string using
+.ZN XtFree
+when it is no longer needed.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetActionKeysym.man b/libXt/man/XtGetActionKeysym.man
new file mode 100644
index 000000000..28e1d7891
--- /dev/null
+++ b/libXt/man/XtGetActionKeysym.man
@@ -0,0 +1,173 @@
+.\" $Xorg: XtGetActK.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetActK.man,v 1.2 2001/01/27 18:20:26 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Action-Keysym wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetActionKeysym __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetActionKeysym \- obtain corresponding keysym
+.SH SYNTAX
+.HP
+KeySym XtGetActionKeysym(XEvent* \fIevent\fP, Modifiers*
+\fImodifiers_return\fP); 
+.SH ARGUMENTS
+.IP \fIevent\fP 1i
+Specifies the event pointer passed to the action procedure by the
+Intrinsics.
+.IP \fImodifiers_return\fP 1i
+Returns the modifiers that caused the match, if non-NULL.
+.SH DESCRIPTION
+If
+.ZN XtGetActionKeysym
+is called after an action procedure has been invoked by the Intrinsics
+and before that action procedure returns, and if the event pointer has
+the same value as the event pointer passed to that action routine, and
+if the event is a
+.ZN KeyPress
+or
+.ZN KeyRelease
+event, then
+.ZN XtGetActionKeysym
+returns the KeySym that matched the final event specification in the
+translation table and, if \fImodifiers_return\fP is non-NULL, the
+modifier state actually used to generate this KeySym; otherwise, if
+the event is a
+.ZN KeyPress
+or
+.ZN KeyRelease
+event, then
+.ZN XtGetActionKeysym 
+calls
+.ZN XtTranslateKeycode
+and returns the results; else it returns
+.ZN NoSymbol
+and does not examine \fImodifiers_return\fP.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetActionList.man b/libXt/man/XtGetActionList.man
new file mode 100644
index 000000000..88f8b15d6
--- /dev/null
+++ b/libXt/man/XtGetActionList.man
@@ -0,0 +1,159 @@
+.\" $Xorg: XtGetActL.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetActL.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Action-List wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetActionList __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetActionList \- obtain class action list
+.SH SYNTAX
+.HP
+void XtGetActionList(WidgetClass \fIwidget_class\fP, XtActionList*
+\fIactions_return\fP, Cardinal* \fInum_actions_return\fP); 
+.SH ARGUMENTS
+.IP \fIwidget_class\fP 1i
+Specifies the widget class whose actions are to be returned.
+.IP \fIactions_return\fP 1i
+Returns the action list.
+.IP \fInum_actions_return\fP 1i
+Returns the number of action procedures declared by the class.
+.SH DESCRIPTION
+.ZN XtGetActionList
+returns the action table defined by the specified widget class. This
+table does not include actions defined by the superclasses. If
+\fIwidget_class\fP is not initialized, or is not
+.ZN coreWidgetClass
+or a subclass thereof, or if the class does not define any actions,
+*\fIactions_return\fP will be NULL and *\fInum_actions_return\fP will
+be zero. If *\fIactions_return\fP is non-NULL the client is responsible
+for freeing the table using
+.ZN XtFree
+when it is no longer needed.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetApplicationNameAndClass.man b/libXt/man/XtGetApplicationNameAndClass.man
new file mode 100644
index 000000000..2b50b04f7
--- /dev/null
+++ b/libXt/man/XtGetApplicationNameAndClass.man
@@ -0,0 +1,158 @@
+.\" $Xorg: XtGetANC.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetANC.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Application-Name-And-Class wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetApplicationNameAndClass __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetApplicationNameAndClass \- retrieve application name and class
+.SH SYNTAX
+.HP
+void XtGetApplicationNameAndClass(Display* \fIdisplay\fP, String*
+\fIname_return\fP, String* \fIclass_return\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies an open display connection that has been initialized with
+.ZN XtDisplayInitialize .
+.IP \fIname_return\fP 1i
+Returns the application name.
+.IP \fIclass_return\fP 1i
+Returns the application class.
+.SH DESCRIPTION
+.ZN XtGetApplicationNameAndClass
+returns the application name and class passed to
+.ZN XtDisplayInitialize
+for the specified display. If the display was never initialized or
+has been closed, the result is undefined. The returned strings are
+owned by the Intrinsics and must not be modified or freed by the
+caller.
+.SH "SEE ALSO"
+.BR XtDisplayInitialize (3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetApplicationResources.man b/libXt/man/XtGetApplicationResources.man
new file mode 100644
index 000000000..609b33eac
--- /dev/null
+++ b/libXt/man/XtGetApplicationResources.man
@@ -0,0 +1,184 @@
+.\" $Xorg: XtGetAres.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetAres.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Application-Resources, XtVa-Get-Application-Resources wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetApplicationResources __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetApplicationResources, XtVaGetApplicationResources \- obtain application resources
+.SH SYNTAX
+.HP
+void XtGetApplicationResources(Widget \fIw\fP, XtPointer \fIbase\fP,
+XtResourceList \fIresources\fP, Cardinal \fInum_resources\fP, ArgList
+\fIargs\fP, Cardinal \fInum_args\fP); 
+.HP
+void XtVaGetApplicationResources(Widget \fIw\fP, XtPointer \fIbase\fP,
+XtResourceList \fIresources\fP, Cardinal \fInum_resources\fP, ...\^);
+.SH ARGUMENTS
+.ds Al to override resources obtained from the resource database
+.IP \fIargs\fP 1i
+Specifies the argument list \*(Al.
+.ds Ba written
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure where the resources
+should be \*(Ba.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.IP \fInum_resources\fP 1i
+Specifies the number of resources in the resource list.
+.IP \fIresources\fP 1i
+Specifies the resource list for the subpart.
+.ds Wi that wants resources for a subpart \
+or that identifies the resource database to search
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.IP \fI...\fP 1i
+Specifies the variable arguments \*(Al.
+.SH DESCRIPTION
+The
+.ZN XtGetApplicationResources
+function first uses the passed widget,
+which is usually an application shell,
+to construct a resource name and class list,
+Then, it retrieves the resources from the argument list,
+the resource database, or the resource list default values.
+After adding base to each address,
+.ZN XtGetApplicationResources
+copies the resources into the address given in the resource list.
+If args is NULL,
+num_args must be zero.
+However, if num_args is zero,
+the argument list is not referenced.
+The portable way to specify application resources is to declare them
+as members of a structure and pass the address of the structure 
+as the base argument.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetClassExtension.man b/libXt/man/XtGetClassExtension.man
new file mode 100644
index 000000000..d71e4cbce
--- /dev/null
+++ b/libXt/man/XtGetClassExtension.man
@@ -0,0 +1,166 @@
+.\" $Xorg: XtGetClExt.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetClExt.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Class-Extension wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetClassExtension __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetClassExtension \- locate a class extension record
+.SH SYNTAX
+.HP
+XtPointer XtGetClassExtension(WidgetClass \fIobject_class\fP, Cardinal
+\fIbyte_offset\fP, XrmQuark \fItype\fP, long \fIversion\fP, Cardinal
+\fIrecord_size\fP); 
+.SH ARGUMENTS
+.IP \fIobject_class\fP 1i
+Specifies the widget class containing the extension list to be searched.
+.IP \fIbyte_offset\fP 1i
+Specifies the offset in bytes form the base of the widget class of the
+extension field to be searched.
+.IP \fItype\fP 1i
+Specifies the name of the class extension to be located.
+.IP \fIversion\fP 1i
+Specifies the minimum acceptable version of the class extension
+required for a match.
+.IP \fIrecord_size\fP 1i
+Specifies the minimum acceptable length of the class extension record
+required for match, or 0.
+.SH DESCRIPTION
+The list of extension records at the specified offset in the specified
+\fIwidget_class\fP will be searched for a match on the specified 
+\fItype\fP, a version greater than or equal to the specified \fIversion\fP, 
+and a record size greater than or equal the specified \fIrecord_size\fP 
+if it is nonzero.
+.ZN XtGetClassExtension
+returns a pointer to a matching extension record or NULL if no match
+is found. The returned extension record is owned by the widget class
+and must not be modified or freed by the caller, except possibly to
+be modified by the widget class owner.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetDisplays.man b/libXt/man/XtGetDisplays.man
new file mode 100644
index 000000000..21f1ba7bb
--- /dev/null
+++ b/libXt/man/XtGetDisplays.man
@@ -0,0 +1,151 @@
+.\" $Xorg: XtGetDisp.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetDisp.man,v 1.2 2001/01/27 18:20:26 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Displays wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetDisplays __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetDisplays \- retrieve a list of displays associated with an application context
+.SH SYNTAX
+.HP
+void XtGetDisplays(XtAppContext \fIapp_context\fP, Display
+***\fIdpy_return\fP, Cardinal* \fInum_dpy_return\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context.
+.IP \fIdpy_return\fP 1i
+Returns a list of open X display connections in the specified application
+context.
+.IP \fInum_dpy_return\fP 1i
+Returns the count of open X display connections in \fIdpy_return\fP.
+.SH DESCRIPTION
+To free the list of displays, use
+.ZN XtFree .
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetErrorDatabase.man b/libXt/man/XtGetErrorDatabase.man
new file mode 100644
index 000000000..a72f0de8a
--- /dev/null
+++ b/libXt/man/XtGetErrorDatabase.man
@@ -0,0 +1,172 @@
+.\" $Xorg: XtGEDB.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGEDB.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Error-Database XtGet-Error-Database-Text wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetErrorDatabase __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtGetErrorDatabase, XtGetErrorDatabaseText \- obtain error database
+.SH SYNTAX
+.HP
+XrmDatabase *XtGetErrorDatabase(void); 
+.HP
+void XtGetErrorDatabaseText(char *\fIname\fP, char *\fItype\fP, char
+*\fIclass\fP, char *\fIdefault\fP, char *\fIbuffer_return\fP, int
+\fInbytes\fP); 
+.SH ARGUMENTS
+.IP \fIbuffer_return\fP 1i
+Specifies the buffer into which the error message is to be returned.
+.ds Cl \ of the error message
+.IP \fIclass\fP 1i
+Specifies the resource class\*(Cl.
+.IP \fIdefault\fP 1i
+Specifies the default message to use\*(Dm.
+.IP \fIname\fP 1i
+.br
+.ns
+.IP \fItype\fP 1i
+Specifies the name and type that are concatenated to form the resource name 
+of the error message.
+.IP \fInbytes\fP 1i
+Specifies the size of the buffer in bytes.
+.SH DESCRIPTION
+The
+.ZN XtGetErrorDatabase
+function has been superceded by
+.ZN XtAppGetErrorDatabase .
+.LP
+The
+.ZN XtGetErrorDatabaseText
+function has been superceded by
+.ZN XtAppGetErrorDatabaseText .
+.SH "SEE ALSO"
+.BR XtAppGetErrorDatabase (3Xt)
+.BR XtAppGetErrorDatabaseText (3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetGC.man b/libXt/man/XtGetGC.man
new file mode 100644
index 000000000..235dfc0fc
--- /dev/null
+++ b/libXt/man/XtGetGC.man
@@ -0,0 +1,176 @@
+.\" $Xorg: XtGetGC.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetGC.man,v 1.2 2001/01/27 18:20:26 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-GC XtRelease-GC wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetGC __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetGC, XtReleaseGC \- obtain and destroy a sharable GC
+.SH SYNTAX
+.HP
+GC XtGetGC(Widget \fIw\fP, XtGCMask \fIvalue_mask\fP, XGCValues
+*\fIvalues\fP); 
+.HP
+void XtReleaseGC(Widget \fIw\fP, GC \fIgc\fP); 
+.SH ARGUMENTS
+.IP \fIgc\fP 1i
+Specifies the GC to be deallocated.
+.IP \fIvalues\fP 1i
+Specifies the actual values for this GC.
+.ds Vm fields of the values are specified
+.IP \fIvalue_mask\fP 1i
+Specifies which \*(Vm.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtGetGC
+function returns a sharable, read-only GC.
+The parameters to this function are the same as those for
+.ZN XCreateGC 
+except that a widget is passed instead of a display.
+.ZN XtGetGC
+shares only GCs in which all values in the GC returned by
+.ZN XCreateGC
+are the same.
+In particular, it does not use the value_mask provided to
+determine which fields of the GC a widget considers relevant.
+The value_mask is used only to tell the server which fields should be
+filled in with widget data and which it should fill in with default values.
+For further information about value_mask and values,
+see
+.ZN XCreateGC
+in the \fI\*(xL\fP.
+.LP
+The
+.ZN XtReleaseGC
+function deallocate the specified shared GC.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetKeyboardFocusWidget.man b/libXt/man/XtGetKeyboardFocusWidget.man
new file mode 100644
index 000000000..ab63c6660
--- /dev/null
+++ b/libXt/man/XtGetKeyboardFocusWidget.man
@@ -0,0 +1,150 @@
+.\" $Xorg: XtGetKFoc.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetKFoc.man,v 1.2 2001/01/27 18:20:26 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Keyboard-Focus-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetKeyboardFocusWidget __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetKeyboardFocusWidget \- extension event handling
+.SH SYNTAX
+.HP
+Widget XtGetKeyboardFocusWidget(Widget \fIwidget\fP); 
+.SH ARGUMENTS
+.IP \fIwidget\fP 1i
+Specifies the widget for this event handler.
+Must be of class Core or any subclass thereof.
+.SH DESCRIPTION
+.ZN XtGetKeyboardFocusWidget
+function returns the widget that would be the end result of keyboard
+event forwarding for a keyboard event for the specified widget.
+.SH "SEE ALSO"
+XtInsertEventTypeHandler(3Xt), XtRemoveEventTypeHandler(3Xt),
+XtRegisterExtensionSelector(3Xt), XtSetEventDispatcher(3Xt),
+XtDispatchEventToWidget(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetKeysymTable.man b/libXt/man/XtGetKeysymTable.man
new file mode 100644
index 000000000..0166f2016
--- /dev/null
+++ b/libXt/man/XtGetKeysymTable.man
@@ -0,0 +1,176 @@
+.\" $Xorg: XtKeysym.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtKeysym.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Keysym-Table XtKeysym-To-Keycode-List wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetKeysymTable __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetKeysymTable, XtKeysymToKeycodeList \- query keysyms and keycodes 
+.SH SYNTAX
+.HP
+Keysym* XtGetKeysymTable(Display* \fIdisplay\fP, KeyCode*
+\fImin_keycode_return\fP, int *\fIkeysyms_per_keycode_return\fP); 
+.HP
+void XtKeysymToKeycodeList(Display* \fIdisplay\fP, KeySym \fIkeysym\fP,
+KeyCode** \fIkeycodes_return\fP, Cardinal* \fIkeycount_return\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the display whose table is required.
+.LP
+.IP \fImin_keycode_return\fP 1i
+Returns the minimum KeyCode valid for the display.
+.LP
+.IP \fIkeysyms_per_keycode_return\fP
+Returns the number of KeySyms stored for each KeyCode.
+.LP
+.IP \fIkeysym\fP 1i
+Specifies the KeySym for which to search.
+.LP
+.IP \fIkeycodes_return\fP 1i
+Returns a list of KeyCodes that have \fIkeysym\fP associated with them,
+or NULL if \fIkeycount_return\fP is 0.
+.LP
+.IP \fIkeycount_return\fP 1i
+Returns the number of KeyCodes in the keycode list.
+.SH DESCRIPTION
+.ZN XtGetKeysymTable
+returns a pointer to the Intrinsics' copy of the server's KeyCode-to-KeySym
+table. This table must not be modified.
+.LP
+The
+.ZN XtKeysymToKeycodeList
+procedure returns all the KeyCodes that have \fIkeysym\fP in their
+entry for the keyboard mapping table associated with \fIdisplay\fP.
+The caller should free the storage pointed to by \fIkeycodes_return\fP
+using 
+.ZN XtFree
+when it is no longer useful.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetResourceList.man b/libXt/man/XtGetResourceList.man
new file mode 100644
index 000000000..5599a558d
--- /dev/null
+++ b/libXt/man/XtGetResourceList.man
@@ -0,0 +1,191 @@
+.\" $Xorg: XtGetRList.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetRList.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Resource-List XtGet-Constraint-Resource-List wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetResourceList __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetResourceList, XtGetConstraintResourceList \- obtain resource list
+.SH SYNTAX
+.HP
+void XtGetResourceList(WidgetClass \fIclass\fP, XtResourceList
+*\fIresources_return\fP, Cardinal *\fInum_resources_return\fP); 
+.HP
+void XtGetConstraintResourceList(WidgetClass \fIclass\fP, XtResourceList
+*\fIresources_return\fP, Cardinal *\fInum_resources_return\fP); 
+.SH ARGUMENTS
+.IP \fInum_resources_return\fP 1i
+Specifies a pointer to where to store the number of entries in the 
+resource list.
+.IP \fIresources_return\fP 1i
+Specifies a pointer to where to store the returned resource list.
+The caller must free this storage using
+.ZN XtFree
+when done with it.
+.ds Cl \ for which you want the list
+.IP \fIwidget_class\fP 1i
+Specifies the widget class\*(Wc.
+.SH DESCRIPTION
+If 
+.ZN XtGetResourceList
+is called before the widget class is initialized (that is,
+before the first widget of that class has been created),
+.ZN XtGetResourceList
+returns the resource list as specified in the widget class record.
+If it is called after the widget class has been initialized,
+.ZN XtGetResourceList
+returns a merged resource list that contains the resources 
+for all superclasses. The list returned by
+.ZN XtGetResourceList
+should be freed using
+.ZN XtFree
+when it is no longer needed.
+.LP
+If 
+.ZN XtGetConstraintResourceList
+is called before the widget class is initialized (that is,
+before the first widget of that class has been created),
+.ZN XtGetConstraintResourceList
+returns the resource list as specified in the widget class Constraint
+part record. If it is called after the widget class has been initialized,
+.ZN XtGetConstraintResourceList
+returns a merged resource list that contains the Constraint resources 
+for all superclasses. If the specified class is not a subclass of
+.ZN constraintWidgetClass ,
+\fI*resources_return\fP is set to NULL and \fI*num_resources_return\fP
+is set to zero. The list returned by
+.ZN XtGetConstraintResourceList
+should be freed using
+.ZN XtFree
+when it is no longer needed.
+.SH "SEE ALSO"
+XtGetSubresources(3Xt),
+XtOffset(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetSelectionParameters.man b/libXt/man/XtGetSelectionParameters.man
new file mode 100644
index 000000000..8ae16839f
--- /dev/null
+++ b/libXt/man/XtGetSelectionParameters.man
@@ -0,0 +1,171 @@
+.\" $Xorg: XtGetSP.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetSP.man,v 1.4 2003/04/28 22:18:19 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Selection-Parameters XtGet-Selection-Parameters wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetSelectionParameters __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetSelectionParameters \- retrieve target parameters for a selection request with a single target
+.SH SYNTAX
+.HP
+void XtGetSelectionParameters(Widget \fIowner\fP, Atom \fIselection\fP,
+XtRequestId \fIrequest_id\fP, Atom *\fItype_return\fP, XtPointer
+*\fIvalue_return\fP, unsigned long *\fIlength_return\fP, int
+*\fIformat_return\fP); 
+.SH ARGUMENTS
+.IP \fIowner\fP 1i
+Specifies the widget that owns the specified selection.
+.IP \fIselection\fP 1i
+Specifies the selection being processed.
+.IP \fIrequest_id\fP 1i
+Specifies the requestor id in the case of incremental selections, or NULL
+in the case of atomic transfers.
+.IP \fItype_return\fP 1i
+Specifies a pointer to an atom in which the property type of the
+parameters will be stored.
+.IP \fIvalue_return\fP 1i
+Specifies a pointer into which a pointer to the parameters are to be
+stored. A NULL will be stored if no parameters accompany the request.
+.IP \fIlength_return\fP 1i
+Specifies a pointer into which the number of data elements in 
+\fIvalue_return\fP of size indicated by \fIformat_return\fP will be
+stored.
+.IP \fIformat_return\fP 1i
+Specifies a pointer into which the size in bits of the parameter data
+in the elements of \fIvalue_return\fP will be stored.
+.SH DESCRIPTION
+.ZN XtGetSelectionParameters
+may only be called from within an
+.ZN XtConvertSelectionProc
+or from within the last call to an
+.ZN XtConvertSelectionIncrProc
+with a new request_id.
+.SH "SEE ALSO"
+XtSetSelectionParameters(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetSelectionRequest.man b/libXt/man/XtGetSelectionRequest.man
new file mode 100644
index 000000000..e8cd0b8ef
--- /dev/null
+++ b/libXt/man/XtGetSelectionRequest.man
@@ -0,0 +1,163 @@
+.\" $Xorg: XtGetSR.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetSR.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Selection-Request wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetSelectionRequest __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetSelectionRequest \- retrieve the event that triggered the XtConvertSelectionProc
+.SH SYNTAX
+.HP
+XSelectionRequestEvent* XtGetSelectionRequest(Widget \fIw\fP, Atom
+\fIselection\fP, XtRequestId \fIrequest_id\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fIselection\fP 1i
+Specifies the selection being processed.
+.IP \fIrequest_id\fP 1i
+Specifies the requestor id in the case of incremental selections, or
+NULL in the case of atomic transfers.
+.SH DESCRIPTION
+.ZN XtGetSelectionRequest
+may only be called from within an
+.ZN XtConvertSelectionProc
+procedure and returns a pointer to the
+.ZN SelectionRequest
+event that caused the conversion procedure to be invoked. \fIRequest_id\fP
+specifies a unique id for the individual request in the case that
+multiple incremental transfers are outstanding. For atomic transfers,
+\fIrequest_id\fP must be specified as NULL. If no
+.ZN SelectionRequest
+event is being processed for the specified \fIwidget\fP, \fIselection\fP,
+and \fIrequest_id\fP,
+.ZN XtGetSelectionRequest
+returns NULL.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetSelectionTimeout.man b/libXt/man/XtGetSelectionTimeout.man
new file mode 100644
index 000000000..f6923d162
--- /dev/null
+++ b/libXt/man/XtGetSelectionTimeout.man
@@ -0,0 +1,156 @@
+.\" $Xorg: XtGetSTO.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetSTO.man,v 1.2 2001/01/27 18:20:27 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Selection-Timeout XtSet-Selection-Timeout wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetSelectionTimeout __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtGetSelectionTimeout, XtSetSelectionTimeout \- set and obtain selection timeout values
+.SH SYNTAX
+.HP
+unsigned long XtGetSelectionTimeout(void); 
+.HP
+void XtSetSelectionTimeout(unsigned long \fItimeout\fP); 
+.SH ARGUMENTS
+.IP \fItimeout\fP 1i
+Specifies the selection timeout in milliseconds.
+.SH DESCRIPTION
+The
+.ZN XtGetSelectionTimeout
+function has been superceded by
+.ZN XtAppGetSelectionTimeout .
+.LP
+The
+.ZN XtSetSelectionTimeout
+function has been superceded by
+.ZN XtAppSetSelectionTimeout .
+.SH "SEE ALSO"
+.BR XtAppGetSelectionTimeout (3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetSelectionValue.man b/libXt/man/XtGetSelectionValue.man
new file mode 100644
index 000000000..37e51562f
--- /dev/null
+++ b/libXt/man/XtGetSelectionValue.man
@@ -0,0 +1,200 @@
+.\" $Xorg: XtGetSVal.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetSVal.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Selection-Value XtGet-Selection-Values wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetSelectionValue __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetSelectionValue, XtGetSelectionValues \- obtain selection values
+.SH SYNTAX
+.HP
+void XtGetSelectionValue(Widget \fIw\fP, Atom \fIselection\fP, Atom
+\fItarget\fP, XtSelectionCallbackProc \fIcallback\fP, XtPointer
+\fIclient_data\fP, Time \fItime\fP); 
+.HP
+void XtGetSelectionValues(Widget \fIw\fP, Atom \fIselection\fP, Atom
+*\fItargets\fP, int \fIcount\fP, XtSelectionCallbackProc \fIcallback\fP,
+XtPointer \fIclient_data\fP, Time \fItime\fP); 
+.SH ARGUMENTS
+.ds Cb \ that is to be called when the selection value has been obtained
+.IP \fIcallback\fP 1i
+Specifies the callback procedure\*(Cb.
+.ds Cd it is called
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when \*(Cd.
+.IP \fIclient_data\fP 1i
+Specifies the client data (one for each target type)
+that is passed to the callback procedure when it is called for that target.
+.IP \fIcount\fP 1i
+Specifies the length of the targets and client_data lists.
+.IP \fIselection\fP 1i
+Specifies the particular selection desired (that is, primary or secondary).
+.IP \fItarget\fP 1i
+Specifies the type of the information that is needed about the selection.
+.IP \fItargets\fP 1i
+Specifies the types of information that is needed about the selection.
+.ds Ti value is desired
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the selection \*(Ti.
+.ds Wi that is making the request
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtGetSelectionValue
+function requests the value of the selection that has been converted to 
+the target type. 
+The specified callback will be called some time after 
+.ZN XtGetSelectionValue 
+is called;
+in fact, it may be called before or after 
+.ZN XtGetSelectionValue 
+returns.
+.LP
+The
+.ZN XtGetSelectionValues
+function is similar to
+.ZN XtGetSelectionValue 
+except that it takes a list of target types and a list of client data 
+and obtains the current value of the selection converted to each of the targets.
+The effect is as if each target were specified in a separate call to
+.ZN XtGetSelectionValue .
+The callback is called once with the corresponding client data for each target.
+.ZN XtGetSelectionValues
+does guarantee that all the conversions will use the same selection value
+because the ownership of the selection cannot change in the middle of the list,
+as would be when calling
+.ZN XtGetSelectionValue
+repeatedly.
+.SH "SEE ALSO"
+XtAppGetSelectionTimeout(3Xt),
+XtOwnSelection(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetSelectionValueIncremental.man b/libXt/man/XtGetSelectionValueIncremental.man
new file mode 100644
index 000000000..02c3fb834
--- /dev/null
+++ b/libXt/man/XtGetSelectionValueIncremental.man
@@ -0,0 +1,205 @@
+.\" $Xorg: XtGetSValI.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetSValI.man,v 1.4 2003/04/28 22:18:19 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Selection-Value-Incremental XtGet-Selection-Values-Incremental wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetSelectionValueIncremental __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetSelectionValueIncremental, XtGetSelectionValuesIncremental \- obtain selection values
+.SH SYNTAX
+.HP
+void XtGetSelectionValueIncremental(Widget \fIw\fP, Atom \fIselection\fP, Atom
+\fItarget\fP, XtSelectionCallbackProc \fIcallback\fP, XtPointer
+\fIclient_data\fP, Time \fItime\fP); 
+.HP
+void XtGetSelectionValuesIncremental(Widget \fIw\fP, Atom \fIselection\fP,
+Atom *\fItargets\fP, int \fIcount\fP, XtSelectionCallbackProc \fIcallback\fP,
+XtPointer \fIclient_data\fP, Time \fItime\fP); 
+.SH ARGUMENTS
+.ds Cb \ that is to be called when the selection value has been obtained
+.IP \fIcallback\fP 1i
+Specifies the callback procedure\*(Cb.
+.ds Cd it is called
+.IP \fIclient_data\fP 1i
+Specifies the argument that is to be passed to the specified procedure
+when \*(Cd.
+.IP \fIclient_data\fP 1i
+Specifies the client data (one for each target type)
+that is passed to the callback procedure when it is called for that target.
+.IP \fIcount\fP 1i
+Specifies the length of the targets and client_data lists.
+.IP \fIselection\fP 1i
+Specifies the particular selection desired (that is, primary or secondary).
+.IP \fItarget\fP 1i
+Specifies the type of the information that is needed about the selection.
+.IP \fItargets\fP 1i
+Specifies the types of information that is needed about the selection.
+.ds Ti value is desired
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the selection \*(Ti.
+.ds Wi that is making the request
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtGetSelectionValueIncremental
+function is similar to
+.ZN XtGetSelectionValue
+except that the \fIselection_callback\fP procedure will be called
+repeatedly upon delivery of multiple segments of the selection value.
+The end of the selection value is indicated when \fIselection_callback\fP
+is called with a non-NULL value of length zero, which must still be
+freed by the client. If the transfer of the selection is aborted in the
+middle of a transfer (for example, because to timeout), the
+\fIselection_callback\fP procedure is called with a type value equal
+to the symbolic constant
+.ZN XT_CONVERT_FAIL
+so that the requestor can dispose of the partial selection value it has
+collected up until that point. Upon receiving
+.ZN XT_CONVERT_FAIL ,
+the requesting client must determine for itself whether or not a
+partially completed transfer is meaningful.
+.LP
+The
+.ZN XtGetSelectionValuesIncremental
+function is similar to
+.ZN XtGetSelectionValueIncremental
+except that it takes a list of target types and a list of client data 
+and obtains the current value of the selection converted to each of the targets.
+The effect is as if each target were specified in a separate call to
+.ZN XtGetSelectionValueIncremental .
+The callback is called once with the corresponding client data for each target.
+.ZN XtGetSelectionValuesIncremental
+does guarantee that all the conversions will use the same selection value
+because the ownership of the selection cannot change in the middle of the list,
+as would be when calling
+.ZN XtGetSelectionValueIncremental
+repeatedly.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGetSubresources.man b/libXt/man/XtGetSubresources.man
new file mode 100644
index 000000000..0a31c703f
--- /dev/null
+++ b/libXt/man/XtGetSubresources.man
@@ -0,0 +1,185 @@
+.\" $Xorg: XtGetSres.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGetSres.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGet-Subresources XtVa-Get-Subresources wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGetSubresources __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGetSubresources, XtVaGetSubresources \- obtain subresources
+.SH SYNTAX
+.HP
+void XtGetSubresources(Widget \fIw\fP, XtPointer \fIbase\fP, String
+\fIname\fP, String \fIclass\fP, XtResourceList \fIresources\fP, Cardinal
+\fInum_resources\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP); 
+.HP
+void XtVaGetSubresources(Widget \fIw\fP, XtPointer \fIbase\fP, String
+\fIname\fP, String \fIclass\fP, XtResourceList \fIresources\fP, Cardinal
+\fInum_resources\fP); 
+.SH ARGUMENTS
+.ds Al to override resources obtained from the resource database
+.IP \fIargs\fP 1i
+Specifies the argument list \*(Al.
+.ds Ba written
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure where the resources
+should be \*(Ba.
+.IP \fIclass\fP 1i
+Specifies the class of the subpart.
+.IP \fIname\fP 1i
+Specifies the name of the subpart.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.IP \fInum_resources\fP 1i
+Specifies the number of resources in the resource list.
+.IP \fIresources\fP 1i
+Specifies the resource list for the subpart.
+.ds Wi that wants resources for a subpart \
+or that identifies the resource database to search
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.IP \fI...\fP 1i
+Specifies the variable arguments \*(Al.
+.SH DESCRIPTION
+The
+.ZN XtGetSubresources
+function constructs a name/class list from the application name/class,
+the name/classes of all its ancestors, and the widget itself.
+Then, it appends to this list the name/class pair passed in.
+The resources are fetched from the argument list, the resource database,
+or the default values in the resource list.
+Then, they are copied into the subpart record.
+If args is NULL,
+num_args must be zero.
+However, if num_args is zero,
+the argument list is not referenced.
+.SH "SEE ALSO"
+XtGetApplicationResources, XtVaGetApplicationResources
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtGrabKey.man b/libXt/man/XtGrabKey.man
new file mode 100644
index 000000000..97b15ed43
--- /dev/null
+++ b/libXt/man/XtGrabKey.man
@@ -0,0 +1,315 @@
+.\" $Xorg: XtGrabKey.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtGrabKey.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtGrab-Key XtUngrab-Key XtGrab-Keyboard XtUngrab-Keyboard XtGrab-Button XtUngrab-Button XtGrab-Pointer XtUngrab-Pointer wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtGrabKey __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtGrabKey, XtUngrabKey, XtGrabKeyboard, XtUngrabKeyboard, XtGrabButton, XtUngrabButton, XtGrabPointer, XtUngrabPointer \- manage grabs
+.SH SYNTAX
+.HP
+void XtGrabKey(Widget \fIwidget\fP, KeyCode \fIkeycode\fP, Modifiers
+\fImodifiers\fP, Boolean \fIowner_events\fP, int \fIpointer_mode\fP, int
+\fIkeyboard_mode\fP); 
+.HP
+void XtUngrabKey(Widget \fIwidget\fP, KeyCode \fIkeycode\fP, Modifiers
+\fImodifiers\fP); 
+.HP
+int XtGrabKeyboard(Widget \fIwidget\fP, Boolean \fIowner_events\fP, int
+\fIpointer_mode\fP, int \fIkeyboard_mode\fP, Time \fItime\fP); 
+.HP
+void XtUngrabKeyboard(Widget \fIwidget\fP, Time \fItime\fP); 
+.HP
+void XtGrabButton(Widget \fIwidget\fP, int \fIbutton\fP, Modifiers
+\fImodifiers\fP, Boolean \fIowner_events\fP, unsigned int \fIevent_mask\fP,
+int \fIpointer_mode\fP, int \fIkeyboard_mode\fP, Window \fIconfine_to\fP,
+Cursor \fIcursor\fP); 
+.HP
+void XtUngrabButton(Widget \fIwidget\fP, KeyCode \fIbutton\fP, Modifiers
+\fImodifiers\fP); 
+.HP
+int XtGrabPointer(Widget \fIwidget\fP, Boolean \fIowner_events\fP, unsigned
+int \fIevent_mask\fP, int \fIpointer_mode\fP, int \fIkeyboard_mode\fP, Window
+\fIconfine_to\fP, Cursor \fIcursor\fP, Time \fItime\fP); 
+.HP
+void XtUngrabPointer(Widget \fIwidget\fP, Time \fItime\fP); 
+.SH ARGUMENTS
+.IP \fIwidget\fP 1i
+Specifies the widget in whose window the grab will occur. Must be of
+class Core or a subclass thereof.
+.sp 6p
+.IP \fIkeycode\fP
+.br
+.ns
+.IP \fImodifiers\fP
+.br
+.ns
+.IP \fIowner_events\fP
+.br
+.ns
+.IP \fIpointer_mode\fP
+.br
+.ns
+.IP \fIkeyboard_mode\fP
+.br
+.ns
+.IP \fItime\fP
+.br
+.ns
+.IP \fIbutton\fP
+.br
+.ns
+.IP \fIconfine_to\fP
+.br
+.ns
+.IP \fIcursor\fP 1i
+Specifies arguments to the associated Xlib function call.
+.SH DESCRIPTION
+.ZN XtGrabKey
+calls
+.ZN XGrabKey
+specifying the widget's window as the grab window if the widget is
+realized. The remaining arguments are exactly as for
+.ZN XGrabKey .
+If the widget is not realized, or is later unrealized, the call to
+.ZN XGrabKey 
+will be performed (again) when the widget is realized and its window
+becomes mapped. In the future, if
+.ZN XtDispatchEvent
+is called with a
+.ZN KeyPress
+event matching the specified keycode and modifiers (which may be
+.ZN AnyKey
+or
+.ZN AnyModifier ,
+respectively) for the widget's window, the Intrinsics will call
+.ZN XtUngrabKeyboard
+with the timestamp from the
+.ZN KeyPress
+event if either of the following conditions is true:
+.IP \(bu 3
+There is a modal cascade and the widget is not in the active subset
+of the cascade and the keyboard was not previously grabbed, or
+.IP \(bu 3
+.ZN XFilterEvent
+returns
+.ZN True .
+.LP
+.ZN XtUngrabKey
+calls
+.ZN XUngrabKey
+specifying the widget's window as the ungrab window if the widget is
+realized. The remaining arguments are exactly as for
+.ZN XUngrabKey .
+If the widget is not realized,
+.ZN XtUngrabKey
+removes a deferred
+.ZN XtGrabKey
+request, if any, for the specified widget, keycode, and modifiers.
+.LP
+If the specified widget is realized
+.ZN XtGrabKeyboard
+calls
+.ZN XGrabKeyboard
+specifying the widget's window as the grab window. The remaining
+arguments and return value are exactly as for
+.ZN XGrabKeyboard .
+If the widget is not realized,
+.ZN XtGrabKeyboard
+immediately returns
+.ZN GrabNotViewable .
+No future ungrab is implied by
+.ZN XtGrabKeyboard .
+.LP
+.ZN XtUngrabKeyboard
+calls
+.ZN XUngrabKeyboard
+with the specified time.
+.LP
+.ZN XtGrabButton
+calls
+.ZN XGrabButton
+specifying the widget's window as the grab window if the widget is
+realized. The remaining arguments are exactly as for
+.ZN XGrabButton .
+If the widget is not realized, or is later unrealized, the call to
+.ZN XGrabButton 
+will be performed (again) when the widget is realized and its window
+becomes mapped. In the future, if
+.ZN XtDispatchEvent
+is called with a
+.ZN ButtonPress
+event matching the specified button and modifiers (which may be
+.ZN AnyButton
+or
+.ZN AnyModifier ,
+respectively) for the widget's window, the Intrinsics will call
+.ZN XtUngrabPointer
+with the timestamp from the
+.ZN ButtonPress
+event if either of the following conditions is true:
+.IP \(bu 3
+There is a modal cascade and the widget is not in the active subset
+of the cascade and the pointer was not previously grabbed, or
+.IP \(bu 3
+.ZN XFilterEvent
+returns
+.ZN True .
+.LP
+.ZN XtUngrabButton
+calls
+.ZN XUngrabButton
+specifying the widget's window as the ungrab window if the widget is
+realized. The remaining arguments are exactly as for
+.ZN XUngrabButton .
+If the widget is not realized,
+.ZN XtUngrabButton
+removes a deferred
+.ZN XtGrabButton
+request, if any, for the specified widget, button, and modifiers.
+.LP
+.ZN XtGrabPointer
+calls
+.ZN XGrabPointer
+specifying the widget's window as the grab window. The remaining
+arguments and return value are exactly as for
+.ZN XGrabPointer .
+If the widget is not realized,
+.ZN XtGrabPointer
+immediately returns
+.ZN GrabNotViewable .
+No future ungrab is implied by
+.ZN XtGrabPointer .
+.LP
+.ZN XtUngrabPointer
+calls
+.ZN XUngrabPointer
+with the specified time.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtHooksOfDisplay.man b/libXt/man/XtHooksOfDisplay.man
new file mode 100644
index 000000000..d17351c8a
--- /dev/null
+++ b/libXt/man/XtHooksOfDisplay.man
@@ -0,0 +1,147 @@
+.\" $Xorg: XtHookOD.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtHookOD.man,v 1.2 2001/01/27 18:20:27 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtHooks-Of-Display XtGet-Displays wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtHooksOfDisplay __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtHooksOfDisplay \- external agent access points
+.SH SYNTAX
+.HP
+Widget XtHooksOfDisplay(Display* \fIdisplay\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the desired display.
+.SH DESCRIPTION
+The class of this object is a private, implementation dependent, subclass
+of Object. The hook object has no parent. The resources of this object are
+the callback lists for hooks and the read-only resources for getting a
+list of parentless shells.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtInitialize.man b/libXt/man/XtInitialize.man
new file mode 100644
index 000000000..729597553
--- /dev/null
+++ b/libXt/man/XtInitialize.man
@@ -0,0 +1,177 @@
+.\" $Xorg: XtInit.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtInit.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw Xt-Initialize
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtInitialize __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtInitialize \- initialize
+.SH SYNTAX
+.HP
+Widget XtInitialize(String \fIshell_name\fP, String \fIapplication_class\fP,
+XrmOptionDescRec* \fIoptions\fP, Cardinal \fInum_options\fP, int* \fIargc\fP,
+char** \fIargv\fP); 
+.SH ARGUMENTS
+.IP \fIshell_name\fP 1i
+Specifies the name of the created shell widget.
+.ds Ac , which usually is the generic name for all instances of this application
+.IP \fIapplication_class\fP 1i
+Specifies the class name of this application\*(Ac.
+.IP \fIoptions\fP 1i
+Specifies how to parse the command line for any application-specific resources.
+The options argument is passed as a parameter to
+.ZN XrmParseCommand .
+For further information,
+see \fI\*(xL\fP.
+.IP \fInum_options\fP 1i
+Specifies the number of entries in the options list.
+.IP \fIargc\fP 1i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv\fP 1i
+Specifies the command line parameters.
+.SH DESCRIPTION
+.ZN XtInitialize
+calls
+.ZN XtToolkitInitialize
+followed by
+.ZN XtOpenDisplay
+with \fIdisplay_string\fP NULL and \fIapplication_name\fP NULL, and
+finally calls
+.ZN XtAppCreateShell
+with \fIapplication_name\fP NULL, \fIwidget_class\fP
+.ZN applicationShellWidgetClass ,
+and the specified \fIargs\fP and \fInum_args\fP and returns the
+created shell. The semantics of calling
+.ZN XtInitialize 
+more than once are undefined. This routine has been replaced by
+.ZN XtAppInitialize .
+.SH "SEE ALSO"
+.BR XtAppInitialize (3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtInitializeWidgetClass.man b/libXt/man/XtInitializeWidgetClass.man
new file mode 100644
index 000000000..8fac28060
--- /dev/null
+++ b/libXt/man/XtInitializeWidgetClass.man
@@ -0,0 +1,153 @@
+.\" $Xorg: XtInitWC.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtInitWC.man,v 1.2 2001/01/27 18:20:27 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtInitialize-Widget-Class wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtInitializeWidgetClass __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtInitializeWidgetClass \- initialize a widget class
+.SH SYNTAX
+.HP
+void XtInitializeWidgetClass(WidgetClass \fIobject_class\fP); 
+.SH ARGUMENTS
+.IP \fIobject_class\fP 1i
+Specifies the object class to initialize.
+.SH DESCRIPTION
+If the specified widget class is already initialized, 
+.ZN XtInitializeWidgetClass
+returns immediately.
+.LP
+If the class initialization procedure registers type converters, these
+type converters are not available until the first object of the class
+or subclass is created or
+.ZN XtInitializeWidgetClass
+is called.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtInsertEventTypeHandler.man b/libXt/man/XtInsertEventTypeHandler.man
new file mode 100644
index 000000000..75aeedc35
--- /dev/null
+++ b/libXt/man/XtInsertEventTypeHandler.man
@@ -0,0 +1,294 @@
+.\" $Xorg: XtExtEvDis.man,v 1.3 2000/08/17 19:42:00 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtExtEvDis.man,v 1.3 2001/02/09 03:47:50 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtInsert-Event-Type-Handler XtRemove-Event-Type-Handler XtSet-Event-Dispatcher XtDispatch-Event-To-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtInsertEventTypeHandler __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtInsertEventTypeHandler, XtRemoveEventTypeHandler,
+XtRegisterExtensionSelector, XtSetEventDispatcher, XtDispatchEventToWidget
+\- extension event handling
+.SH SYNTAX
+.HP
+void XtInsertEventTypeHandler(Widget \fIwidget\fP, int \fIevent_type\fP,
+XtPointer \fIselect_data\fP, XtEventHandler \fIproc\fP, XtPointer
+\fIclient_data\fP, XtListPosition \fIposition\fP); 
+.HP
+void XtRemoveEventTypeHandler(Widget \fIwidget\fP, int \fIevent_type\fP,
+XtPointer \fIselect_data\fP, XtEventHandler \fIproc\fP, XtPointer
+\fIclient_data\fP); 
+.HP
+void XtRegisterExtensionSelector(Display* \fIdisplay\fP, int
+\fImin_event_type\fP, int \fImax_event_type\fP, XtExtensionSelectProc
+\fIproc\fP, XtPointer \fIclient_data\fP); 
+.HP
+XtEventDispatchProc XtSetEventDispatcher(Widget \fIwidget\fP, int
+\fIevent_type\fP, XtEventDispatchProc \fIproc\fP);
+.HP
+Boolean XtDispatchEventToWidget(Widget \fIwidget\fP, XEvent* \fIevent\fP); 
+.SH ARGUMENTS
+.IP \fIwidget\fP 1i
+Specifies the widget for this event handler.
+Must be of class Core or any subclass thereof.
+.IP \fIevent_type\fP 1i
+Specifies the event type.
+.IP \fIselect_data\fP 1i
+Specifies data used to select or deselect events from the server.
+.IP \fIproc\fP 1i
+Specifies the proc.
+.IP \fIclient_data\fP 1i
+Specifies additional data to be passed to the event handler.
+.IP \fIposition\fP 1i
+Specifies when the event handler is to be called relative to other
+previously registered handlers.
+.IP \fIdisplay\fP 1i
+Specifies the display.
+.IP \fImin_event_type,\ max_event_type\fP 1i
+Specifies the range of event types for this extension.
+.IP \fIevent\fP 1i
+Specifies a pointer to the event to be dispatched.
+.SH DESCRIPTION
+The
+.ZN XtInsertEventTypeHandler
+function registers a procedure with the dispatch mechanism that is to
+be called when an event that matches the specified \fIevent_type\fP is
+dispatched to the specified \fIwidget\fP.
+.LP
+If \fIevent_type\fP is one of the core X protocol events then 
+\fIselect_data\fP must be a pointer to a value of type
+.ZN EventMask ,
+indicating the event mask to be used to select for the desired event.
+This event mask will be included in the value returned by
+.ZN XtBuildEventMask .
+If the widget is realized
+.ZN XtInsertEventTypeHandler
+calls
+.ZN XSelectInput
+if necessary. Specifying NULL for \fIselect_data\fP is equivalent to
+specifying a pointer to an event mask containing 0. This is similar to the 
+.ZN XtInsertRawEventHandler
+function.
+.LP
+If \fIevent_type\fP specifies an extension event type then the semantics
+of the data pointed to by \fIselect_data\fP are defined by the extension
+selector registered for the specified event type.
+.LP
+In either case the Intrinsics are not required to copy the data pointed
+to by \fIselect_data\fP, so the caller must ensure that it remains valid
+as long as the event handler remains registered with this value of
+\fIselect_data\fP.
+.LP
+The \fIposition\fP argument allows the client to control the order of the
+invocation of event handlers registered for the same event type. If the
+client does not care about the order, it should normally specify
+.ZN XtListTail ,
+which registers this event handler after any previously registered
+handlers for this event type.
+.LP
+The
+.ZN XtRemoveEventTypeHandler
+function unregisters an even handler registered with
+.ZN XtInsertEventTypeHandler
+for the specified event type. The request is ignored if \fIclient_data\fP
+does not match the value given with the handler was registered.
+.LP
+If \fIevent_type\fP specifies on of the core X protocol events,
+\fIselect_data\fP must be a pointer to a value of type
+.ZN EventMask ,
+indicating the mask to be used to deselect for the appropriate event.
+If the widget is realized,
+.ZN XtRemoveEventTypeHandler
+calls
+.ZN XSelectInput
+if necessary. Specifying NULL for \fIselect_data\fP is equivalent to
+specifying a pointer to an event mask containing 0. This is similar to the
+.ZN XtRemoveRawEventHandler
+function.
+.LP
+If \fIevent_type\fP specifies an extension event type then the semantics
+of the data pointed to by \fIselect_data\fP are defined by the extension
+selector registered for the specified event type.
+.LP
+The
+.ZN XtRegisterExtensionSelector
+function registers a procedure to arrange for the delivery of extension
+events to widgets.
+.LP
+If \fImin_event_type\fP and \fImax_event_type\fP match the parameters to
+a previous call to
+.ZN XtRegisterExtensionSelector
+for the same display, the \fIproc\fP and \fIclient_data\fP replace the
+previously registered values. If the range specified by \fImin_event_type\fP
+and \fImax_event_type\fP overlaps the range of the parameters to a
+previous call for the same display in any other way, an error results.
+.LP
+The
+.ZN XtSetEventDispatcher
+function registers the event dispatcher procedure specified by \fIproc\fP
+for events with the type \fIevent_type\fP. The previously registered
+dispatcher (or the default dispatcher if there was no previously registered
+dispatcher) is returned. If \fIproc\fP is NULL, the default procedure is
+restored for the specified type.
+.LP
+In the future, when
+.ZN XtDispatchEvent
+is called with an event of \fIevent_type\fP, the specified \fIproc\fP (or
+the default dispatcher) will be invoked to determine a widget ot which
+to dispatch the event.
+.LP
+The
+.ZN XtDispatchEventToWidget
+function scans the list of registered event handlers for the specified
+widget and calls each handler that has been registered for the specified
+event type, subject to the \fIcontinue_to_dispatch\fP value returned by
+each handler. The Intrinsics behave as if event handlers were registered
+at the head of the list for
+.ZN Expose ,
+.ZN NoExpose ,
+.ZN GraphicsExpose ,
+and
+.ZN VisibilityNotify
+events to invoke the widget's expose procedure according to the exposure
+compression rules and to update the widget's \fIvisible\fP field if
+\fIvisible_interest\fP is
+.ZN True .
+These internal event handlers never set \fIcontinue_to_dispatch\fP to
+.ZN False .
+.LP
+.ZN XtDispatchEventToWidget
+returns
+.ZN True
+if any event handler was called and
+.ZN False
+otherwise.
+.LP
+.SH "SEE ALSO"
+XtGetKeyboardFocusWidget(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtLastEventProcessed.man b/libXt/man/XtLastEventProcessed.man
new file mode 100644
index 000000000..a47f661ea
--- /dev/null
+++ b/libXt/man/XtLastEventProcessed.man
@@ -0,0 +1,166 @@
+.\" $Xorg: XtLastProc.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtLastProc.man,v 1.2 2001/01/27 18:20:27 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtLast-Event-Processed XtLast-Timestamp-Processed wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtLastEventProcessed __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtLastEventProcessed, XtLastTimestampProcessed \- last event, last timestamp processed
+.SH SYNTAX
+.HP
+XEvent* XtLastEventProcessed(Display* \fIdisplay\fP); 
+.HP
+Time XtLastTimestampProcessed(Display* \fIdisplay\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the open display connection.
+.SH DESCRIPTION
+.ZN XtLastEventProcessed
+returns the last event passed to
+.ZN XtDispatchEvent
+for the specified display and NULL if there has been no event. The
+client must not modify the contents of the returned event.
+.LP
+.ZN XtLastTimestampProcessed 
+returns the timestamp of the last
+.ZN KeyPress ,
+.ZN KeyRelease ,
+.ZN ButtonPress ,
+.ZN ButtonRelease ,
+.ZN MotionNotify ,
+.ZN EnterNotify ,
+.ZN LeaveNotify ,
+.ZN PropertyNotify ,
+or
+.ZN SelectionClear
+event that has been passed to
+.ZN XtDispatchEvent 
+for the specified display and zero if there has been no such event.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtMakeGeometryRequest.man b/libXt/man/XtMakeGeometryRequest.man
new file mode 100644
index 000000000..4bb0343d4
--- /dev/null
+++ b/libXt/man/XtMakeGeometryRequest.man
@@ -0,0 +1,241 @@
+.\" $Xorg: XtMakGReq.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtMakGReq.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtMake-Geometry-Request XtMake-Resize-Request wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtMakeGeometryRequest __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtMakeGeometryRequest, XtMakeResizeRequest \- make geometry manager request
+.SH SYNTAX
+.HP
+XtGeometryResult XtMakeGeometryRequest(Widget \fIw\fP, XtWidgetGeometry
+*\fIrequest\fP, XtWidgetGeometry *\fIreply_return\fP); 
+.HP
+XtGeometryResult XtMakeResizeRequest(Widget \fIw\fP, Dimension \fIwidth\fP,
+\fIheight\fP, Dimension *\fIwidth_return\fP, Dimension *\fIheight_return\fP); 
+.SH ARGUMENTS
+.IP \fIreply_return\fP 1i
+Returns the allowed widget size or may be NULL
+if the requesting widget is not interested in handling
+.ZN XtGeometryAlmost .
+.IP \fIrequest\fP 1i
+Specifies the desired widget geometry (size, position, border width,
+and stacking order).
+.ds Wi that is making the request
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the allowed widget width and height.
+.SH DESCRIPTION
+Depending on the condition,
+.ZN XtMakeGeometryRequest
+performs the following:
+.IP \(bu 5
+If the widget is unmanaged or the widget's parent is not realized,
+it makes the changes and returns
+.ZN XtGeometryYes .
+.IP \(bu 5
+If the parent is not a subclass of
+.ZN compositeWidgetClass 
+or the parent's geometry_manager is NULL,
+it issues an error.
+.IP \(bu 5
+If the widget's being_destroyed field is 
+.ZN True ,
+it returns
+.ZN XtGeometryNo .
+.IP \(bu 5
+If the widget x, y, width, height and border_width fields are
+all equal to the requested values,
+it returns
+.ZN XtGeometryYes ;
+otherwise, it calls the parent's geometry_manager procedure 
+with the given parameters.
+.IP \(bu 5
+If the parent's geometry manager returns
+.ZN XtGeometryYes
+and if
+.ZN XtCWQueryOnly
+is not set in the request_mode
+and if the widget is realized,
+.ZN XtMakeGeometryRequest
+calls the 
+.ZN XConfigureWindow
+Xlib function to reconfigure the widget's window (set its size, location, 
+and stacking order as appropriate).
+.IP \(bu 5
+If the geometry manager returns
+.ZN XtGeometryDone ,
+the change has been approved and actually has been done.
+In this case,
+.ZN XtMakeGeometryRequest
+does no configuring and returns 
+.ZN XtGeometryYes .
+.ZN XtMakeGeometryRequest
+never returns
+.ZN XtGeometryDone .
+.LP
+Otherwise,
+.ZN XtMakeGeometryRequest
+returns the resulting value from the parent's geometry manager.
+.LP
+Children of primitive widgets are always unmanaged; thus,
+.ZN XtMakeGeometryRequest
+always returns
+.ZN XtGeometryYes
+when called by a child of a primitive widget.
+.LP
+The
+.ZN XtMakeResizeRequest
+function, a simple interface to
+.ZN XtMakeGeometryRequest ,
+creates a
+.ZN XtWidgetGeometry
+structure and specifies that width and height should change.
+The geometry manager is free to modify any of the other window attributes
+(position or stacking order) to satisfy the resize request.
+If the return value is
+.ZN XtGeometryAlmost ,
+width_return and height_return contain a compromise width and height.
+If these are acceptable,
+the widget should immediately make an
+.ZN XtMakeResizeRequest
+and request that the compromise width and height be applied.
+If the widget is not interested in
+.ZN XtGeometryAlmost
+replies, 
+it can pass NULL for width_return and height_return.
+.SH "SEE ALSO"
+XtConfigureWidget(3Xt),
+XtQueryGeometery(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtMalloc.man b/libXt/man/XtMalloc.man
new file mode 100644
index 000000000..69761958f
--- /dev/null
+++ b/libXt/man/XtMalloc.man
@@ -0,0 +1,237 @@
+.\" $Xorg: XtMalloc.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtMalloc.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtNew-String wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtMalloc __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtMalloc, XtCalloc, XtRealloc, XtFree, XtNew, XtNewString \- memory management functions
+.SH SYNTAX
+.HP
+char *XtMalloc(Cardinal \fIsize\fP); 
+.HP
+char *XtCalloc(Cardinal \fInum\fP, Cardinal \fIsize\fP); 
+.HP
+char *XtRealloc(char *\fIptr\fP, Cardinal \fInum\fP); 
+.HP
+void XtFree(char *\fIptr\fP); 
+.HP
+\fItype\fP *XtNew(\fItype\fP); 
+.HP
+String XtNewString(String \fIstring\fP); 
+.SH ARGUMENTS
+.IP \fInum\fP 1i
+Specifies the number of bytes or array elements.
+.ds Po to the old storage or to the block of storage that is to be freed
+.IP \fIptr\fP 1i
+Specifies a pointer \*(Po.
+.IP \fIsize\fP 1i
+Specifies the size of an array element (in bytes) or the number of bytes
+desired.
+.IP \fIstring\fP 1i
+Specifies a previously declared string.
+.IP \fItype\fP 1i
+Specifies a previously declared data type.
+.SH DESCRIPTION
+The
+.ZN XtMalloc
+functions returns a pointer to a block of storage of at least 
+the specified size bytes.
+If there is insufficient memory to allocate the new block,
+.ZN XtMalloc
+calls
+.ZN XtErrorMsg .
+.LP
+The
+.ZN XtCalloc
+function allocates space for the specified number of array elements 
+of the specified size and initializes the space to zero.
+If there is insufficient memory to allocate the new block,
+.ZN XtCalloc
+calls
+.ZN XtErrorMsg .
+.LP
+The
+.ZN XtRealloc
+function changes the size of a block of storage (possibly moving it).
+Then, it copies the old contents (or as much as will fit) into the new block
+and frees the old block.
+If there is insufficient memory to allocate the new block,
+.ZN XtRealloc
+calls
+.ZN XtErrorMsg .
+If ptr is NULL,
+.ZN XtRealloc
+allocates the new storage without copying the old contents;
+that is, it simply calls
+.ZN XtMalloc .
+.LP
+The
+.ZN XtFree
+function returns storage and allows it to be reused.
+If ptr is NULL,
+.ZN XtFree
+returns immediately.
+.LP
+.ZN XtNew
+returns a pointer to the allocated storage.
+If there is insufficient memory to allocate the new block,
+.ZN XtNew
+calls
+.ZN XtErrorMsg .
+.ZN XtNew
+is a convenience macro that calls
+.ZN XtMalloc
+with the following arguments specified:
+.LP
+.Ds
+.TA .5i
+.ta .5i
+((type *) XtMalloc((unsigned) sizeof(type))
+.De
+.LP
+.ZN XtNewString
+returns a pointer to the allocated storage.
+If there is insufficient memory to allocate the new block,
+.ZN XtNewString
+calls
+.ZN XtErrorMsg .
+.ZN XtNewString
+is a convenience macro that calls
+.ZN XtMalloc
+with the following arguments specified:
+.LP
+.Ds 
+.TA .5i
+.ta .5i
+(strcpy(XtMalloc((unsigned) strlen(str) + 1), str))
+.De
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtManageChildren.man b/libXt/man/XtManageChildren.man
new file mode 100644
index 000000000..3182bc5f7
--- /dev/null
+++ b/libXt/man/XtManageChildren.man
@@ -0,0 +1,354 @@
+.\" $Xorg: XtManChild.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtManChild.man,v 1.4 2004/05/08 12:05:07 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtManage-Children XtManage-Child XtUnmanage-Children XtUnmanage-Child XtChange-ManagedSet XtIs-Managed wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtManageChildren __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtManageChildren, XtManageChild, XtUnmanageChildren, XtUnmanageChild, XtChangeManagedSet, XtIsManaged \- manage and unmanage children
+.SH SYNTAX
+typedef Widget *WidgetList;
+.HP
+void XtManageChildren(WidgetList \fIchildren\fP, Cardinal \fInum_children\fP);
+.HP
+void XtManageChild(Widget \fIchild\fP); 
+.HP
+void XtUnmanageChildren(WidgetList \fIchildren\fP, Cardinal
+\fInum_children\fP); 
+.HP
+void XtUnmanageChild(Widget \fIchild\fP); 
+.HP
+void XtChangeManagedSet(WidgetList \fIunmanage_children\fP, 
+Cardinal \fInum_unmanage_children\fP, XtDoChangeProc \fIdo_change_proc\fP,
+XtPointer \fIclient_data\fP, WidgetList \fImanage_children\fP, 
+Cardinal \fInum_manage_children\fP); 
+.HP
+Boolean XtIsManaged(Widget \fIwidget\fP); 
+.SH ARGUMENTS
+.IP \fIchild\fP 1i
+Specifies the child.
+.IP \fIchildren\fP 1i
+Specifies a list of child widgets.
+.IP \fInum_children\fP 1i
+Specifies the number of children.
+.IP \fIwidget\fP 1i
+Specifies the widget.
+.IP \fImanage_children\fP 1i
+Specifies the list of widget children to add to the managed set.
+.IP \fInum_manage_children\fP 1i
+Specifies the number of entries in the manage_children list.
+.IP \fIunmanage_children\fP 1i
+Specifies the list of widget children to remove from the managed set.
+.IP \fInum_unmanage_children\fP 1i
+Specifies the number of entries in the unmanage_children list.
+.IP \fIdo_change_proc\fP 1i
+Specifies the post unmanage, pre manage hook procedure to invoke.
+.IP \fIclient_data\fP 1i
+Specifies the client data to be passed to the hook procedure.
+.SH DESCRIPTION
+The
+.ZN XtManageChildren
+function performs the following:
+.IP \(bu 5
+Issues an error if the children do not all have the same parent or
+if the parent is not a subclass of 
+.ZN compositeWidgetClass .
+.IP \(bu 5
+Returns immediately if the common parent is being destroyed;
+otherwise, for each unique child on the list,
+.ZN XtManageChildren
+ignores the child if it already is managed or is being destroyed
+and marks it if not.
+.IP \(bu 5
+If the parent is realized and after all children have been marked,
+it makes some of the newly managed children viewable:
+.RS
+.IP \- 5
+Calls the change_managed routine of the widgets' parent.
+.IP \- 5
+Calls
+.ZN XtRealizeWidget
+on each previously unmanaged child that is unrealized.
+.IP \- 5
+Maps each previously unmanaged child that has map_when_managed 
+.ZN True .
+.RE
+.LP
+Managing children is independent of the ordering of children and
+independent of creating and deleting children.
+The layout routine of the parent
+should consider children whose managed field is
+.ZN True 
+and should ignore all other children.
+Note that some composite widgets, especially fixed boxes, call
+.ZN XtManageChild
+from their insert_child procedure.
+.LP
+If the parent widget is realized,
+its change_managed procedure is called to notify it
+that its set of managed children has changed.
+The parent can reposition and resize any of its children.
+It moves each child as needed by calling 
+.ZN XtMoveWidget ,
+which first updates the x and y fields and then calls
+.ZN XMoveWindow
+if the widget is realized.
+.LP
+The
+.ZN XtManageChild
+function constructs a
+.ZN WidgetList
+of length one and calls
+.ZN XtManageChildren .
+.LP
+The
+.ZN XtUnmanageChildren
+function performs the following:
+.IP \(bu 5
+Issues an error if the children do not all have the same parent
+or if the parent is not a subclass of 
+.ZN compositeWidgetClass .
+.IP \(bu 5
+Returns immediately if the common parent is being destroyed;
+otherwise, for each unique child on the list, 
+.ZN XtUnmanageChildren
+performs the following:
+.RS
+.IP \- 5
+Ignores the child if it already is unmanaged or is being destroyed
+and marks it if not.
+.IP \- 5
+If the child is realized,
+it makes it nonvisible by unmapping it.
+.RE
+.IP \(bu 5
+Calls the change_managed routine of the widgets' parent
+after all children have been marked
+if the parent is realized.
+.LP
+.ZN XtUnmanageChildren
+does not destroy the children widgets.
+Removing widgets from a parent's managed set is often a temporary banishment,
+and, some time later, you may manage the children again.
+.LP
+The
+.ZN XtUnmanageChild
+function constructs a widget list
+of length one and calls
+.ZN XtUnmanageChildren .
+.LP
+The
+.ZN XtChangeManagedSet
+function performs the following:
+.IP \(bu 5
+Issues an error if the widgets specified in the \fImanage_children\fP
+and the \fIunmanage_children\fP lists to no all have the same parent, or
+if that parent is not a subclass of compositeWidgetClass.
+.IP \(bu 5
+Returns immediately if the common parent is being destroyed.
+.IP \(bu 5
+If no
+.ZN CompositeClassExtension
+is defined, or a
+.ZN CompositeClassExtension
+is defined but with an \fIallows_change_managed_set\fP field with a
+value of
+.ZN False ,
+and
+.ZN XtChangeManagedSet 
+was invoked with a non-NULL \fIdo_change_proc\fP procedure 
+then
+.ZN XtChangeManagedSet
+performs the following:
+.RS
+.IP \- 5
+Calls
+.ZN XtUnmanageChildren
+(\fIunmanage_children\fP, \fInum_unmanage_children\fP).
+.IP \- 5
+Calls the \fIdo_change_proc\fP specified.
+.IP \- 5
+Calls
+.ZN XtManageChildren
+(\fImanage_children\fP, \fInum_manage_children\fP) and then returns
+immediately.
+.RE
+.IP \(bu 5
+Otherwise, if a
+.ZN CompositeClassExtension
+is defined with an \fIallows_change_managed_set\fP field with a value of
+.ZN True ,
+or if no
+.ZN CompositeClassExtension
+is defined, and
+.ZN XtChangeManagedSet was invoked with a NULL 
+\fIdo_change_proc\fP procedure, then the following is
+performed:
+.RS
+.IP \- 5
+For each child on the \fIunmanage_children\fP list; if the child is
+already unmanaged or is being destroyed it is ignored, otherwise it
+is marked as being unmanaged and if it is realized it is made nonvisible
+by being unmapped.
+.IP \- 5
+If the \fIdo_change_proc\fP procedure is non-NULL then
+it is invoked as specified.
+.IP \- 5
+For each child on the \fImanage_children\fP list; if the child is
+already managed or it is being destroyed it is ignored, otherwise it
+is marked as managed
+.RE
+.IP \(bu 5
+If the parent is realized and after all children have been marked, the
+change_managed method of the parent is invoked and subsequently some
+of the newly managed children are made viewable by:
+.RS
+.IP \- 5
+Calling
+.ZN XtRealizeWidget
+on each of the previously unmanaged child that is unrealized.
+.IP \- 5
+Mapping each previously unmanaged child that has \fImap_when_managed\fP
+.ZN True .
+.RE
+.LP
+The
+.ZN XtIsManaged
+function returns
+.ZN True
+if the specified widget is of class RectObj or any subclass thereof and
+is managed, or
+.ZN False
+otherwise.
+.SH "SEE ALSO"
+XtMapWidget(3Xt),
+XtRealizeWidget(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtMapWidget.man b/libXt/man/XtMapWidget.man
new file mode 100644
index 000000000..9c4edf8d7
--- /dev/null
+++ b/libXt/man/XtMapWidget.man
@@ -0,0 +1,176 @@
+.\" $Xorg: XtMapWid.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtMapWid.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtMap-Widget XtSet-Mapped-When-Managed XtUnmap-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtMapWidget __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtMapWidget, XtSetMappedWhenManaged, XtUnmapWidget \- map and unmap widgets
+.SH SYNTAX
+.HP
+int XtMapWidget(Widget \fIw\fP\^); 
+.HP
+void XtSetMappedWhenManaged(Widget \fIw\fP, Boolean \fImap_when_managed\fP); 
+.HP
+int XtUnmapWidget(Widget \fIw\fP\^); 
+.SH ARGUMENTS
+.IP \fImap_when_managed\fP 1i
+Specifies a Boolean value that indicates the new value of the map_when_managed 
+field.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+If the widget is realized and managed
+and if the new value of map_when_managed is 
+.ZN True ,
+.ZN XtSetMappedWhenManaged
+maps the window.
+If the widget is realized and managed
+and if the new value of map_when_managed is 
+.ZN False ,
+it unmaps the window.
+.ZN XtSetMappedWhenManaged
+is a convenience function that is equivalent to (but slightly faster than)
+calling
+.ZN XtSetValues
+and setting the new value for the mappedWhenManaged resource.
+As an alternative to using
+.ZN XtSetMappedWhenManaged
+to control mapping,
+a client may set mapped_when_managed to
+.ZN False
+and use
+.ZN XtMapWidget
+and
+.ZN XtUnmapWidget
+explicitly.
+.SH "SEE ALSO"
+XtManageChildren(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtName.man b/libXt/man/XtName.man
new file mode 100644
index 000000000..d79f79124
--- /dev/null
+++ b/libXt/man/XtName.man
@@ -0,0 +1,145 @@
+.\" $Xorg: XtName.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtName.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtName __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtName \- obtain widget's name
+.SH SYNTAX
+.HP
+String XtName(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+.ZN XtName
+returns the widget's name.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtNameToWidget.man b/libXt/man/XtNameToWidget.man
new file mode 100644
index 000000000..d95d4cd86
--- /dev/null
+++ b/libXt/man/XtNameToWidget.man
@@ -0,0 +1,187 @@
+.\" $Xorg: XtNameTWid.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtNameTWid.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtName-To-Widget XtWindow-To-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtNameToWidget __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtNameToWidget, XtWindowToWidget \- translating strings to widgets or widgets to windows
+.SH SYNTAX
+.HP
+Widget XtNameToWidget(Widget \fIreference\fP, String \fInames\fP); 
+.HP
+Widget XtWindowToWidget(Display *\fIdisplay\fP, Window \fIwindow\fP); 
+.SH ARGUMENTS
+.ds Di \ on which the window is defined
+.IP \fIdisplay\fP 1i
+Specifies the display\*(Di.
+.IP \fInames\fP 1i
+Specifies the fully qualified name of the desired widget.
+.IP \fIreference\fP 1i
+Specifies the widget from which the search is to start.
+.IP \fIwindow\fP 1i
+Specify the window for which you want the widget.
+.SH DESCRIPTION
+The
+.ZN XtNameToWidget
+function looks for a widget whose name is the first component in the specified
+names and that is a pop-up child of reference (or a normal child if reference
+is a subclass of
+.ZN compositeWidgetClass ).
+It then uses that widget as the new reference and repeats the search
+after deleting the first component from the specified names.
+If it cannot find the specified widget,
+.ZN XtNameToWidget
+returns NULL.
+.LP
+Note that the names argument contains the name of a widget with respect to the 
+specified reference widget and can contain more than one widget name
+(separated by periods) for widgets that are not direct children 
+of the specified reference widget.
+.LP
+If more than one child of the reference widget matches the name,
+.ZN XtNameToWidget
+can return any of the children.
+The \*(xI do not require that all children of a widget have unique names.
+If the specified names contain more than one component
+and if more than one child matches the first component,
+.ZN XtNameToWidget
+can return NULL if the single branch that it follows does not
+contain the named widget.
+That is,
+.ZN XtNameToWidget
+does not back up and follow other matching branches of the widget tree.
+.LP
+The
+.ZN XtWindowToWidget
+function translates the specified window and display pointer into the
+appropriate widget instance.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtNextEvent.man b/libXt/man/XtNextEvent.man
new file mode 100644
index 000000000..5c742dcdf
--- /dev/null
+++ b/libXt/man/XtNextEvent.man
@@ -0,0 +1,187 @@
+.\" $Xorg: XtNextEv.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtNextEv.man,v 1.4 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtNext-Event XtPeek-Event XtProcess-Event XtMain-Loop wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtNextEvent __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtNextEvent, XtPending, XtPeekEvent, XtProcessEvent, XtMainLoop \- query and process events and input
+.SH SYNTAX
+.HP
+void XtNextEvent(XEvent *\fIevent_return\fP); 
+.HP
+Boolean XtPeekEvent(XEvent *\fIevent_return\fP); 
+.HP
+Boolean XtPending(void); 
+.HP
+void XtProcessEvent(XtInputMask \fImask\fP); 
+.HP
+void XtMainLoop(void); 
+.SH ARGUMENTS
+.IP \fIevent\fP 1i
+Specifies a pointer to the event structure that is to be dispatched
+to the appropriate event handler.
+.IP \fIevent_return\fP 1i
+Returns the event information to the specified event structure.
+.IP \fImask\fP 1i
+Specifies what types of events to process.
+The mask is the bitwise inclusive OR of any combination of
+.ZN XtIMXEvent ,
+.ZN XtIMTimer ,
+.ZN XtIMAlternateInput ,
+and
+.ZN XtIMSignal .
+As a convenience, the \*(tk defines the symbolic name
+.ZN XtIMAll
+to be the bitwise inclusive OR of all event types.
+.SH DESCRIPTION
+.ZN XtNextEvent
+has been replaced by
+.ZN XtAppNextEvent .
+.LP
+.ZN XtPeekEvent
+has been replaced by
+.ZN XtAppPeekEvent .
+.LP
+.ZN XtPending
+has been replaced by
+.ZN XtAppPending .
+.LP
+.ZN XtProcessEvent
+has been replaced by
+.ZN XtAppProcessEvent .
+.LP
+.ZN XtMainLoop
+has been replaced by
+.ZN XtAppMainLoop .
+.SH "SEE ALSO"
+XtAppNextEvent(3xt), XtAppPending(3Xt), XtAppPeekEvent(3Xt), 
+XtAppProcessEvent(3Xt), XtAppMainLoop(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtOffset.man b/libXt/man/XtOffset.man
new file mode 100644
index 000000000..90252c784
--- /dev/null
+++ b/libXt/man/XtOffset.man
@@ -0,0 +1,175 @@
+.\" $Xorg: XtOffset.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtOffset.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtOffset __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtOffset, XtOffsetOf, XtNumber \- determine the byte offset or number of array elements
+.SH SYNTAX
+.HP
+Cardinal XtOffset(Type \fIpointer_type\fP, Field \fIfield_name\fP); 
+.HP
+Cardinal XtOffsetOf(Type \fIstructure_type\fP, Field \fIfield_name\fP); 
+.HP
+Cardinal XtNumber(ArrayVariable \fIarray\fP); 
+.SH ARGUMENTS
+.IP \fIarray\fP 1i
+Specifies a fixed-size array.
+.IP \fIfield_name\fP 1i
+Specifies the name of the field for which to calculate the byte offset.
+.IP \fIpointer_type\fP 1i
+Specifies a type that is declared as a pointer to the structure.
+.IP \fIstructure_type\fP 1i
+Specifies a type that is declared as a structure.
+.SH DESCRIPTION
+The
+.ZN XtOffset
+macro is usually used to determine the offset of various resource fields 
+from the beginning of a widget and can be used at compile time in static
+initializations.
+.LP
+The
+.ZN XtOffsetOf
+macro expands to a constant expression that gives the offset in bytes
+to the specified structure member from the beginning of the structure.
+It is normally used to statically initialize resource lists and is more
+portable than
+.ZN XtOffset ,
+which serves the same function.
+.LP
+The
+.ZN XtNumber
+macro returns the number of elements in the specified argument lists, 
+resources lists, and other counted arrays.
+.SH "SEE ALSO"
+XtGetResourceList(3Xt),
+XtSetArg(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtOpenApplication.man b/libXt/man/XtOpenApplication.man
new file mode 100644
index 000000000..96993454a
--- /dev/null
+++ b/libXt/man/XtOpenApplication.man
@@ -0,0 +1,211 @@
+.\" $Xorg: XtOpenApp.man,v 1.3 2000/08/17 19:42:01 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtOpenApp.man,v 1.5 2001/03/07 15:13:09 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtOpen-Application XtVa-Open-Application
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtOpenApplication __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtOpenApplication, XtVaOpenApplication \- initialize, open, or close a display
+.SH SYNTAX
+.HP
+Widget XtOpenApplication(XtAppContext *\fIapp_context_return\fP, String
+\fIapplication_class\fP, XrmOptionDescRec *\fIoptions\fP, Cardinal
+\fInum_options\fP, int *\fIargc_in_out\fP, String *\fIargv_in_out\fP, String 
+*\fIfallback_resources\fP, WidgetClass \fIwidget_class\fP, ArgList \fIargs\fP,
+Cardinal \fInum_args\fP); 
+.HP
+Widget XtVaOpenApplication(XtAppContext *\fIapp_context_return\fP, String
+\fIapplication_class\fP, XrmOptionDescRec *\fIoptions\fP, Cardinal
+\fInum_options\fP, int *\fIargc_in_out\fP, String *\fIargv_in_out\fP, String 
+*\fIfallback_resources\fP, WidgetClass \fIwidget_class\fP, ...\^); 
+.SH ARGUMENTS
+.IP \fIapp_context_return\fP 1i
+Specifies the application context.
+.ds Ac , which usually is the generic name for all instances of this application
+.IP \fIapplication_class\fP 1i
+Specifies the class name of this application\*(Ac.
+.IP \fIoptions\fP 1i
+Specifies how to parse the command line for any application-specific resources.
+The options argument is passed as a parameter to
+.ZN XrmParseCommand .
+For further information,
+see \fI\*(xL\fP.
+.IP \fInum_options\fP 1i
+Specifies the number of entries in the options list.
+.IP \fIargc_in_out\fP 1i
+Specifies a pointer to the number of command line parameters.
+.IP \fIargv_in_out\fP 1i
+Specifies the command line parameters.
+.IP \fIfallback_resources\fP 1i
+Specifies resource values to be used if the application class resource
+file cannot be opened or read, or NULL.
+.IP \fIwidget_class\fP 1i
+Specifies the widget class of the shell to be created.
+.IP \fIargs\fP 1i
+Specifies the argument list to override any other resource specification
+for the created shell widget.
+.IP \fInum_args\fP 1i
+Specifies the number of entries in the argument list.
+.IP \fI...\fP 1i
+Specifies the variable argument list to override any other resource 
+specification for the created shell widget.
+.SH DESCRIPTION
+The
+.ZN XtOpenApplication
+function calls
+.ZN XtToolkitInitialize
+followed by
+.ZN XtCreateApplicationContext ,
+then calls
+.ZN XtOpenDisplay
+with \fIdisplay_string\fP NULL and \fIapplication_name\fP NULL, and
+finally calls
+.ZN XtAppCreateShell
+with \fIapplication_name\fP NULL, the specified \fIwidget_class\fP,
+and the specified \fIargs\fP and \fInum_args\fP and returns the
+created shell. The modified \fIargc\fP and \fIargv\fP returned by
+.ZN XtDisplayInitialize
+are returned in \fIargc_in_out\fP and \fIargv_in_out\fP. If
+\fIapp_context_return\fP is not NULL, the created application context
+is also returned. If the display specified by the command line cannot
+be opened, an error message is issued and
+.ZN XtOpenApplication
+terminates the application. If \fIfallback_resources\fP is non-NULL,
+.ZN XtAppSetFallbackResources
+is called with the value prior to calling
+.ZN XtOpenDisplay .
+.LP
+XtAppInitialize and XtVaAppInitialize have been superceded by
+.ZN XtOpenApplication
+and
+.ZN XtVaOpenApplication
+respectively.
+.SH "SEE ALSO"
+XtAppInitialize(3Xt), XtVaAppInitialize(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtOwnSelection.man b/libXt/man/XtOwnSelection.man
new file mode 100644
index 000000000..cdf35641c
--- /dev/null
+++ b/libXt/man/XtOwnSelection.man
@@ -0,0 +1,231 @@
+.\" $Xorg: XtOwnSel.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtOwnSel.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtOwn-Selection XtOwn-Selection-Incremental XtDisown-Selection wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtOwnSelection __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtOwnSelection, XtOwnSelectionIncremental, XtDisownSelection \- set selection owner
+.SH SYNTAX
+.HP
+Boolean XtOwnSelection(Widget \fIw\fP, Atom \fIselection\fP, Time \fItime\fP,
+XtConvertSelectionProc \fIconvert_proc\fP, XtLoseSelectionProc
+\fIlose_selection\fP, XtSelectionDoneProc \fIdone_proc\fP); 
+.HP
+Boolean XtOwnSelectionIncremental(Widget \fIw\fP, Atom \fIselection\fP, Time
+\fItime\fP, XtConvertSelectionIncrProc \fIconvert_callback\fP,
+XtLoseSelectionIncrProc \fIlose_callback\fP, XtSelectionDoneIncrProc
+\fIdone_callback\fP, XtCancelConvertSelectionProc \fIcancel_callback\fP,
+XtPointer \fIclient_data\fP); 
+.HP
+void XtDisownSelection(Widget \fIw\fP, Atom \fIselection\fP, Time \fItime\fP);
+.SH ARGUMENTS
+.IP \fIconvert_proc\fP 1i
+Specifies the procedure that is to be called whenever someone requests the 
+current value of the selection.
+.IP \fIdone_proc\fP 1i
+Specifies the procedure that is called 
+after the requestor has received the selection or NULL if the owner is not
+interested in being called back.
+.IP \fIlose_selection\fP 1i
+Specifies the procedure that is to be called whenever the widget has 
+lost selection ownership or NULL if the owner is not interested in being 
+called back.
+.IP \fIselection\fP 1i
+Specifies an atom that describes the type of the selection (for example,
+.ZN XA_PRIMARY , 
+.ZN XA_SECONDARY , 
+or
+.ZN XA_CLIPBOARD ).
+.ds Ti ownership should commence or is to be relinquished
+.IP \fItime\fP 1i
+Specifies the timestamp that indicates when the selection \*(Ti.
+.ds Wi that wishes to become the owner or to relinquish ownership
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtOwnSelection
+function informs the \*(xI selection mechanism that a
+widget believes it owns a selection.
+It returns 
+.ZN True 
+if the widget has successfully become the owner and 
+.ZN False
+otherwise.
+The widget may fail to become the owner if some other widget 
+has asserted ownership at a time later than this widget.
+Note that widgets can lose selection ownership either 
+because someone else asserted later ownership of the selection 
+or because the widget voluntarily gave up ownership of the selection.
+Also note that the lose_selection procedure is not called 
+if the widget fails to obtain selection ownership in the first place.
+.LP
+The
+.ZN XtOwnSelectionIncremental
+procedure informs the Intrinsics incremental selection mechanism that
+the specified widget wishes to own the selection. It returns
+.ZN True 
+if the specified widget successfully becomes the selection owner or
+.ZN False
+otherwise. For more information about \fIselection\fP, \fItarget\fP,
+and \fItime\fP, see Section 2.6 of the \fIInter-Client Communication
+Conventions Manual\fP.
+.LP
+A widget that becomes the selection owner using
+.ZN XtOwnSelectionIncremental
+may use
+.ZN XtDisownSelection
+to relinquish selection ownership.
+.LP
+The
+.ZN XtDisownSelection
+function informs the \*(xI selection mechanism that
+the specified widget is to lose ownership of the selection.
+If the widget does not currently own the selection either 
+because it lost the selection 
+or because it never had the selection to begin with,
+.ZN XtDisownSelection
+does nothing.
+.LP
+After a widget has called
+.ZN XtDisownSelection ,
+its convert procedure is not called even if a request arrives later 
+with a timestamp during the period that this widget owned the selection.
+However, its done procedure will be called if a conversion that started 
+before the call to
+.ZN XtDisownSelection
+finishes after the call to
+.ZN XtDisownSelection .
+.SH "SEE ALSO"
+XtAppGetSelectionTimeout(3Xt),
+XtGetSelectionValue(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtParent.man b/libXt/man/XtParent.man
new file mode 100644
index 000000000..07b318207
--- /dev/null
+++ b/libXt/man/XtParent.man
@@ -0,0 +1,146 @@
+.\" $Xorg: XtParent.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtParent.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtParent __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtParent \- obtain widget's parent widget id
+.SH SYNTAX
+.HP
+Widget XtParent(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+.ZN XtParent
+returns the widget's parent widget ID.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtParseAcceleratorTable.man b/libXt/man/XtParseAcceleratorTable.man
new file mode 100644
index 000000000..a8cf9501e
--- /dev/null
+++ b/libXt/man/XtParseAcceleratorTable.man
@@ -0,0 +1,179 @@
+.\" $Xorg: XtParATab.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtParATab.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtParse-Accelerator-Table XtInstall-Accelerators XtInstall-All-Accelerators wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtParseAcceleratorTable __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtParseAcceleratorTable, XtInstallAccelerators, XtInstallAllAccelerators \- managing accelerator tables
+.SH SYNTAX
+.HP
+XtAccelerators XtParseAcceleratorTable(String \fIsource\fP); 
+.HP
+void XtInstallAccelerators(Widget \fIdestination\fP, Widget \fIsource\fP); 
+.HP
+void XtInstallAllAccelerators(Widget \fIdestination\fP, Widget \fIsource\fP); 
+.SH ARGUMENTS
+.ds So to compile
+.IP \fIsource\fP 1i
+Specifies the accelerator table \*(So.
+.IP \fIdestination\fP 1i
+Specifies the widget on which the accelerators are to be installed.
+.ds Sr widget or the root widget of the widget tree
+.IP \fIsource\fP 1i
+Specifies the \*(Sr from which the accelerators are to come.
+.SH DESCRIPTION
+The
+.ZN XtParseAcceleratorTable
+function compiles the accelerator table into the opaque internal representation.
+.LP
+The
+.ZN XtInstallAccelerators
+function installs the accelerators from source onto destination
+by augmenting the destination translations with the source accelerators.
+If the source display_accelerator method is non-NULL, 
+.ZN XtInstallAccelerators
+calls it with the source widget and a string representation 
+of the accelerator table,
+which indicates that its accelerators have been installed 
+and that it should display them appropriately.
+The string representation of the accelerator table is its
+canonical translation table representation.
+.LP
+The
+.ZN XtInstallAllAccelerators
+function recursively descends the widget tree rooted at source 
+and installs the accelerators of each widget encountered onto destination.
+A common use os to call
+.ZN XtInstallAllAccelerators
+and pass the application main window as the source.
+.SH "SEE ALSO"
+XtParseTranslationTable(1)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtParseTranslationTable.man b/libXt/man/XtParseTranslationTable.man
new file mode 100644
index 000000000..bd9c9007a
--- /dev/null
+++ b/libXt/man/XtParseTranslationTable.man
@@ -0,0 +1,194 @@
+.\" $Xorg: XtParTTab.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtParTTab.man,v 1.2 2001/01/27 18:20:28 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtParse-Translation-Table XtAugment-Translations XtOverride-Translations XtUninstall-Translations wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtParseTranslationTable __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtParseTranslationTable, XtAugmentTranslations, XtOverrideTranslations, XtUninstallTranslations \- manage translation tables
+.SH SYNTAX
+.HP
+XtTranslations XtParseTranslationTable(String \fItable\fP); 
+.HP
+void XtAugmentTranslations(Widget \fIw\fP, XtTranslations \fItranslations\fP);
+.HP
+void XtOverrideTranslations(Widget \fIw\fP, XtTranslations
+\fItranslations\fP); 
+.HP
+void XtUninstallTranslations(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fItable\fP 1i
+Specifies the translation table to compile.
+.IP \fItranslations\fP 1i
+Specifies the compiled translation table to merge in (must not be NULL).
+.ds Wi into which the new translations are to be merged or removed
+.IP \fIw\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XtParseTranslationTable
+function compiles the translation table into the opaque internal representation
+of type
+.ZN XtTranslations .
+Note that if an empty translation table is required for any purpose,
+one can be obtained by calling
+.ZN XtParseTranslationTable
+and passing an empty string.
+.LP
+The
+.ZN XtAugmentTranslations
+function nondestructively merges the new translations into the existing widget
+translations.
+If the new translations contain an event or event sequence that
+already exists in the widget's translations,
+the new translation is ignored.
+.LP
+The
+.ZN XtOverrideTranslations
+function destructively merges the new translations into the existing widget
+translations.
+If the new translations contain an event or event sequence that
+already exists in the widget's translations,
+the new translation is merged in and override the widget's translation.
+.LP
+To replace a widget's translations completely, use
+.ZN XtSetValues
+on the XtNtranslations resource and specify a compiled translation table
+as the value.
+.LP
+The
+.ZN XtUninstallTranslations
+function causes the entire translation table for widget to be removed.
+.SH "SEE ALSO"
+XtAppAddActions(3Xt),
+XtCreatePopupShell(3Xt),
+XtParseAcceleratorTable(3Xt),
+XtPopup(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtPopdown.man b/libXt/man/XtPopdown.man
new file mode 100644
index 000000000..4ae647d64
--- /dev/null
+++ b/libXt/man/XtPopdown.man
@@ -0,0 +1,235 @@
+.\" $Xorg: XtPopdown.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtPopdown.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtCallback-Popdown wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtPopdown __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtPopdown, XtCallbackPopdown \- unmap a pop-up
+.SH SYNTAX
+.HP
+void XtPopdown(Widget \fIpopup_shell\fP); 
+.HP
+void XtCallbackPopdown(Widget \fIw\fP, XtPointer \fIclient_data\fP, XtPointer
+\fIcall_data\fP);
+.HP
+void MenuPopdown(String \fIshell_name\fP); 
+.SH ARGUMENTS
+.IP \fIcall_data\fP 1i
+Specifies the callback data,
+which is not used by this procedure.
+.IP \fIclient_data\fP 1i
+Specifies a pointer to the
+.ZN XtPopdownID
+structure.
+.ds Ps \ to pop down
+.IP \fIpopup_shell\fP 1i
+Specifies the widget shell\*(Ps.
+.ds Sn down
+.IP \fIshell_name\fP 1i
+Specifies the name of the widget shell to pop \*(Sn.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtPopdown
+function performs the following:
+.IP \(bu 5
+Calls
+.ZN XtCheckSubclass
+.\".ZN XtCheckSubclass(popup_shell, popupShellWidgetClass)
+to ensure popup_shell is a subclass of
+.ZN Shell .
+.IP \(bu 5
+Checks that popup_shell is currently popped_up;
+otherwise, it generates an error.
+.IP \(bu 5
+Unmaps popup_shell's window.
+.IP \(bu 5
+If popup_shell's grab_kind is either
+.ZN XtGrabNonexclusive
+or
+.ZN XtGrabExclusive ,
+it calls
+.ZN XtRemoveGrab .
+.\".ZN XtRemoveGrab(popup_shell)
+.IP \(bu 5
+Sets pop-up shell's popped_up field to 
+.ZN False .
+.IP \(bu 5
+Calls the callback procedures on the shell's popdown_callback list.
+.LP
+The
+.ZN XtCallbackPopdown
+function casts the client data parameter to an
+.ZN XtPopdownID
+pointer:
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+	Widget shell_widget;
+	Widget enable_widget;
+} XtPopdownIDRec, *XtPopdownID;
+.De
+The shell_widget is the pop-up shell to pop down,
+and the enable_widget is the widget that was used to pop it up.
+.LP
+.ZN XtCallbackPopdown
+calls
+.ZN XtPopdown
+with the specified shell_widget 
+and then calls
+.ZN XtSetSensitive
+to resensitize the enable_widget.
+.LP
+If a shell name is not given,
+.ZN MenuPopdown
+calls
+.ZN XtPopdown
+with the widget for which the translation is specified.
+If a shell_name is specified in the translation table,
+.ZN MenuPopdown
+tries to find the shell by looking up the widget tree starting at the
+parent of the widget in which it is invoked.
+If it finds a shell with the specified name in the pop-up children 
+of that parent, 
+it pops down the shell; 
+otherwise, it moves up the parent chain as needed.
+If 
+.ZN MenuPopdown 
+gets to the application top-level shell widget 
+and cannot find a matching shell, 
+it generates an error.
+.SH "SEE ALSO"
+XtCreatePopupShell(3Xt),
+XtPopup(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtPopup.man b/libXt/man/XtPopup.man
new file mode 100644
index 000000000..6e50b85c2
--- /dev/null
+++ b/libXt/man/XtPopup.man
@@ -0,0 +1,328 @@
+.\" $Xorg: XtPopup.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtPopup.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtPopup-Spring-Loaded XtCallback-None XtCallback-Nonexclusive XtCallback-Exclusive wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtPopup __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtPopup, XtPopupSpringLoaded, XtCallbackNone, XtCallbackNonexclusive, XtCallbackExclusive \- map a pop-up
+.SH SYNTAX
+.HP
+void XtPopup(Widget \fIpopup_shell\fP, XtGrabKind \fIgrab_kind\fP); 
+.HP
+void XtPopupSpringLoaded(Widget \fIpopup_shell\fP); 
+.HP
+void XtCallbackNone(Widget \fIw\fP, XtPointer \fIclient_data\fP, XtPointer
+\fIcall_data\fP): 
+.HP
+void XtCallbackNonexclusive(Widget \fIw\fP, XtPointer \fIclient_data\fP,
+XtPointer \fIcall_data\fP); 
+.HP
+void XtCallbackExclusive(Widget \fIw\fP, XtPointer \fIclient_data\fP,
+XtPointer \fIcall_data\fP); 
+.HP
+void MenuPopup(String \fIshell_name\fP); 
+.SH ARGUMENTS
+.IP \fIcall_data\fP 1i
+Specifies the callback data,
+which is not used by this procedure.
+.IP \fIclient_data\fP 1i
+Specifies the pop-up shell.
+.IP \fIgrab_kind\fP 1i
+Specifies the way in which user events should be constrained.
+.IP \fIpopup_shell\fP 1i
+Specifies the widget shell\*(Ps.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtPopup
+function performs the following:
+.IP \(bu 5
+Calls
+.ZN XtCheckSubclass
+.\".ZN XtCheckSubclass(popup_shell, popupShellWidgetClass)
+to ensure popup_shell is a subclass of
+.ZN Shell .
+.IP \(bu 5
+Generates an error if the shell's popped_up field is already 
+.ZN True .
+.IP \(bu 5
+Calls the callback procedures on the shell's popup_callback list.
+.IP \(bu 5
+Sets the shell popped_up field to 
+.ZN True ,
+the shell spring_loaded field to 
+.ZN False ,
+and the shell grab_kind field from grab_kind.
+.IP \(bu 5
+If the shell's create_popup_child field is non-NULL,
+.ZN XtPopup
+calls it with popup_shell as the parameter.
+.IP \(bu 5
+If grab_kind is either
+.ZN XtGrabNonexclusive
+or
+.ZN XtGrabExclusive ,
+it calls:
+.LP
+.Ds
+XtAddGrab(popup_shell, (grab_kind == XtGrabExclusive), False)
+.De
+.IP \(bu 5
+Calls
+.ZN XtRealizeWidget 
+with popup_shell specified.
+.IP \(bu 5
+Calls
+.ZN XMapWindow 
+with popup_shell specified.
+.LP
+The
+.ZN XtPopupSpringLoaded
+function performs exactly as
+.ZN XtPopup
+except that it sets the shell \fIspring_loaded\fP field to
+.ZN True
+and always calls
+.ZN XtAddGrab
+with \fIexclusive\fP
+.ZN True
+and \fIspring_loaded\fP
+.ZN True .
+.LP
+The
+.ZN XtCallbackNone ,
+.ZN XtCallbackNonexclusive ,
+and
+.ZN XtCallbackExclusive
+functions call
+.ZN XtPopup
+with the shell specified by the client data argument
+and grab_kind set as the name specifies.
+.ZN XtCallbackNone ,
+.ZN XtCallbackNonexclusive ,
+and
+.ZN XtCallbackExclusive
+specify
+.ZN XtGrabNone ,
+.ZN XtGrabNonexclusive ,
+and
+.ZN XtGrabExclusive ,
+respectively.
+Each function then sets the widget that executed the callback list 
+to be insensitive by using
+.ZN XtSetSensitive .
+Using these functions in callbacks is not required.
+In particular,
+an application must provide customized code for
+callbacks that create pop-up shells dynamically or that must do more than
+desensitizing the button.
+.LP
+.ZN MenuPopup
+is known to the translation manager,
+which must perform special actions for spring-loaded pop-ups.
+Calls to
+.ZN MenuPopup
+in a translation specification are mapped into calls to a
+nonexported action procedure,
+and the translation manager fills in parameters
+based on the event specified on the left-hand side of a translation.
+.LP
+If
+.ZN MenuPopup
+is invoked on
+.ZN ButtonPress
+(possibly with modifiers),
+the translation manager pops up the shell with grab_kind set to
+.ZN XtGrabExclusive
+and spring_loaded set to 
+.ZN True .
+If
+.ZN MenuPopup
+is invoked on
+.ZN EnterWindow
+(possibly with modifiers),
+the translation manager pops up the shell with grab_kind set to
+.ZN XtGrabNonexclusive
+and spring_loaded set to 
+.ZN False .
+Otherwise, the translation manager generates an error.
+When the widget is popped up,
+the following actions occur:
+.IP \(bu 5
+Calls
+.ZN XtCheckSubclass
+.\".ZN XtCheckSubclass(popup_shell, popupShellWidgetClass)
+to ensure popup_shell is a subclass of
+.ZN Shell .
+.IP \(bu 5
+Generates an error if the shell's popped_up field is already 
+.ZN True .
+.IP \(bu 5
+Calls the callback procedures on the shell's popup_callback list.
+.IP \(bu 5
+Sets the shell popped_up field to 
+.ZN True
+and the shell grab_kind and spring_loaded fields appropriately.
+.IP \(bu 5
+If the shell's create_popup_child field is non-NULL,
+it is called with popup_shell as the parameter.
+.IP \(bu 5
+Calls:
+.LP
+.Ds
+XtAddGrab(popup_shell, (grab_kind == XtGrabExclusive), spring_loaded)
+.De
+.IP \(bu 5
+Calls
+.ZN XtRealizeWidget 
+with popup_shell specified.
+.IP \(bu 5
+Calls
+.ZN XMapWindow 
+with popup_shell specified.
+.LP
+(Note that these actions are the same as those for
+.ZN XtPopup .)
+.ZN MenuPopup
+tries to find the shell by searching the widget tree starting at
+the parent of the widget in which it is invoked.
+If it finds a shell with the specified name in the pop-up children of
+that parent, it pops up the shell with the appropriate parameters.
+Otherwise, it moves up the parent chain as needed.
+If
+.ZN MenuPopup
+gets to the application widget and cannot find a matching shell,
+it generates an error.
+.SH "SEE ALSO"
+XtCreatePopupShell(3Xt),
+XtPopdown(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtProcessLock.man b/libXt/man/XtProcessLock.man
new file mode 100644
index 000000000..19790ef2f
--- /dev/null
+++ b/libXt/man/XtProcessLock.man
@@ -0,0 +1,147 @@
+.\" $Xorg: XtProcLock.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtProcLock.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtProcess-Lock XtProcess-Unlock wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtProcessLock __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtProcessLock, XtProcessUnlock \- lock and unlock process
+.SH SYNTAX
+.HP
+void XtProcessLock(void); 
+.HP
+void XtProcessUnlock(void); 
+.SH DESCRIPTION
+.ZN XtProcessLock 
+is used to lock all process global data.
+.LP
+.ZN XtProcessUnlock 
+unlocks the process.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtQueryGeometry.man b/libXt/man/XtQueryGeometry.man
new file mode 100644
index 000000000..eb3cdd42e
--- /dev/null
+++ b/libXt/man/XtQueryGeometry.man
@@ -0,0 +1,171 @@
+.\" $Xorg: XtQueryGeo.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtQueryGeo.man,v 1.3 2001/02/09 03:47:51 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtQuery-Geometry wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtQueryGeometry __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtQueryGeometry \- query the preferred geometry of a child widget
+.SH SYNTAX
+.HP
+XtGeometryResult XtQueryGeometry(Widget \fIw\fP\^, XtWidgetGeometry
+*\fIintended\fP, XtWidgetGeometry *\fIpreferred_return\fP\^); 
+.SH ARGUMENTS
+.IP \fIintended\fP 1i
+Specifies any changes the parent plans to make to the child's geometry or
+NULL.
+.IP \fIpreferred_return\fP 1i
+Returns the child widget's preferred geometry.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+To discover a child's preferred geometry,
+the child's parent sets any changes
+that it intends to make to the child's geometry in the corresponding fields of
+the intended structure, sets the corresponding bits in intended.request_mode,
+and calls
+.ZN XtQueryGeometry .
+.LP
+.ZN XtQueryGeometry
+clears all bits in the preferred_return->request_mode and checks the
+query_geometry field of the specified widget's class record.
+If query_geometry is not NULL,
+.ZN XtQueryGeometry
+calls the query_geometry procedure and passes as arguments the
+specified widget, intended, and preferred_return structures.
+If the intended argument is NULL,
+.ZN XtQueryGeometry
+replaces it with a pointer to an
+.ZN XtWidgetGeometry
+structure with request_mode=0 before calling query_geometry.
+.SH "SEE ALSO"
+XtConfigureWidget(3Xt),
+XtMakeGeometryRequest(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtRealizeWidget.man b/libXt/man/XtRealizeWidget.man
new file mode 100644
index 000000000..ecc11f37c
--- /dev/null
+++ b/libXt/man/XtRealizeWidget.man
@@ -0,0 +1,215 @@
+.\" $Xorg: XtRealize.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtRealize.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtRealize-Widget XtIs-Realized XtUnrealize-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtRealizeWidget __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtRealizeWidget, XtIsRealized, XtUnrealizeWidget \- realize and unrealize widgets
+.SH SYNTAX
+.HP
+void XtRealizeWidget(Widget \fIw\fP); 
+.HP
+Boolean XtIsRealized(Widget \fIw\fP); 
+.HP
+void XtUnrealizeWidget(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+If the widget is already realized,
+.ZN XtRealizeWidget
+simply returns. 
+Otherwise, it performs the following:
+.IP \(bu 5
+Binds all action names in the widget's
+translation table to procedures (see Section 10.1.2).
+.IP \(bu 5
+Makes a post-order traversal of the widget tree rooted
+at the specified widget and calls the change_managed procedure
+of each composite widget that has one or more managed children.
+.IP \(bu 5
+Constructs an
+.ZN XSetWindowAttributes
+structure filled in with information derived from the 
+.ZN Core 
+widget fields and calls the realize procedure for the widget,
+which adds any widget-specific attributes and creates the X window.
+.IP \(bu 5
+If the widget is
+not a subclass of 
+.ZN compositeWidgetClass ,
+.ZN XtRealizeWidget
+returns; otherwise, it continues and performs the following:
+.RS
+.IP \- 5
+Descends recursively to each of the widget's
+managed children and calls the realize procedures.
+Primitive widgets that instantiate children are responsible for realizing
+those children themselves.
+.IP \- 5
+Maps all of the managed children windows that have mapped_when_managed 
+.ZN True .
+(If a widget is managed but mapped_when_managed is 
+.ZN False , 
+the widget is allocated visual space but is not displayed.
+Some people seem to like this to indicate certain states.)
+.RE
+.LP
+If the widget is a top-level shell widget (that is, it has no parent), and
+mapped_when_managed is 
+.ZN True , 
+.ZN XtRealizeWidget
+maps the widget window.
+.LP
+The
+.ZN XtIsRealized
+function returns 
+.ZN True 
+if the widget has been realized,
+that is, if the widget has a nonzero X window ID.
+.LP
+Some widget procedures (for example, set_values) might wish to
+operate differently
+after the widget has been realized.
+.LP
+The
+.ZN XtUnrealizeWidget
+function destroys the windows of an existing widget and all of its
+children (recursively down the widget tree).
+To recreate the windows at a later time,
+call
+.ZN XtRealizeWidget
+again.
+If the widget was managed, 
+it will be unmanaged automatically before its window is freed.
+.SH "SEE ALSO"
+XtManageChildren(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtRegisterDrawable.man b/libXt/man/XtRegisterDrawable.man
new file mode 100644
index 000000000..30724a307
--- /dev/null
+++ b/libXt/man/XtRegisterDrawable.man
@@ -0,0 +1,174 @@
+.\" $Xorg: XtRegDraw.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtRegDraw.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtRegister-Drawable XtUnregister-Drawable XtWindow-To-Widget wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtRegisterDrawable __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtRegisterDrawable \- register a drawable with the Intrinsics event dispatcher
+.SH SYNTAX
+.HP
+void XtRegisterDrawable(Display* \fIdisplay\fP, Drawable \fIdrawable\fP,
+Widget \fIwidget\fP); 
+.HP
+void XtUnregisterDrawable(Display* \fIdisplay\fP, Drawable \fIdrawable\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the drawable's display.
+.IP \fIdrawable\fP 1i
+Specifies the drawable to register.
+.IP \fIwidget\fP 1i
+Specifies the widget to register the drawable for.
+.SH DESCRIPTION
+.ZN XtRegisterDrawable
+associates the specified drawable with the specified widget so that
+future calls to
+.ZN XtWindowToWidget
+with the drawable will return the widget. The default event dispatcher
+will dispatch future core events that arrive with the drawable to the
+widget as though the event contained the widget's window, but the event
+itself will not be changed in any way when being passed to even handler
+or action procedures.
+.LP
+If the drawable is already registered with another widget, or if the
+drawable is the window of a widget in the client's widget tree, the
+results of calling
+.ZN XtRegisterDrawable
+are undefined.
+.LP
+.ZN XtUnregisterDrawable
+removes an association created with
+.ZN XtRegisterDrawable .
+If the drawable is the window of a widget in the client's widget tree
+the results of calling
+.ZN XtUnregisterDrawable
+are undefined.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtRegisterGrabAction.man b/libXt/man/XtRegisterGrabAction.man
new file mode 100644
index 000000000..4e1fbfb3c
--- /dev/null
+++ b/libXt/man/XtRegisterGrabAction.man
@@ -0,0 +1,156 @@
+.\" $Xorg: XtRegGA.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtRegGA.man,v 1.3 2001/02/09 03:47:52 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtRegister-Grab-Action wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtRegisterGrabAction __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtRegisterGrabAction \- register button and key grabs
+.SH SYNTAX
+.HP
+void XtRegisterGrabAction(XtActionProc \fIaction_proc\fP, Boolean
+\fIowner_events\fP, unsigned int \fIevent_mask\fP, int \fIpointer_mode\fP, int
+\fIkeyboard_mode\fP); 
+.SH ARGUMENTS
+.IP \fIaction_proc\fP 1i
+Specifies the action procedure to search for in translation tables.
+.IP \fIaction\fP 1i
+.IP \fIevent\fP 1i
+.IP \fIparams\fP 1i
+.IP \fInum_params\fP 1i
+Specify arguments to
+.ZN XtGrabButton
+or
+.ZN XtGrabKey
+.SH DESCRIPTION
+.ZN XtRegisterGrabAction
+adds the specified \fIaction_proc\fP to a list known to the translation
+manager.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtReservePropertyAtom.man b/libXt/man/XtReservePropertyAtom.man
new file mode 100644
index 000000000..358cb7c54
--- /dev/null
+++ b/libXt/man/XtReservePropertyAtom.man
@@ -0,0 +1,152 @@
+.\" $Xorg: XtResPA.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtResPA.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtReserve-Property-Atom XtRelease-Property-Atom wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtReservePropertyAtom __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtReservePropertyAtom, XtReleasePropertyAtom \- maintain a cache of property atoms
+.SH SYNTAX
+.HP
+Widget XtReservePropertyAtom(Widget \fIw\fP); 
+.HP
+void XtReleasePropertyAtom(Widget \fIw\fP, Atom \fIatom\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the widget used to reserve the atom.
+.IP \fIatom\fP 1i
+Specifies the atom whose reservation is to be released.
+.SH DESCRIPTION
+.ZN XtReservePropertyAtom
+returns an atom that may be used for properties in conjunction with
+conversion requests from widget \fIw\fP. The atom returned will be
+unique for the display of the widget specified.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtResolvePathname.man b/libXt/man/XtResolvePathname.man
new file mode 100644
index 000000000..d1bed4173
--- /dev/null
+++ b/libXt/man/XtResolvePathname.man
@@ -0,0 +1,285 @@
+.\" $Xorg: XtResPath.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtResPath.man,v 1.4 2002/10/12 16:06:41 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtResolve-Pathname wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtResolvePathname __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtResolvePathname \- search for a file using standard substitution
+.SH SYNTAX
+.HP
+String XtResolvePathname(Display *\fIdisplay\fP, String \fItype\fP, String
+\fIfilename\fP, String \fIsuffix\fP, String \fIpath\fP, Substitution
+\fIsubstitutions\fP, Cardinal \fInum_substitutions\fP, XtFilePredicate
+\fIpredicate\fP); 
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1.2i
+Specifies the display to use to find the language for language substitutions.
+.IP \fItype\fP
+.br
+.ns
+.IP \fIfilename\fP
+.br
+.ns
+.IP \fIsuffix\fP 1.2i
+Specify values to substitute into the path.
+.IP \fIpath\fP 1.2i
+Specifies the list of file specifications, or NULL.
+.IP \fIsubstitutions\fP 1.2i
+Specifies a list of additional substitutions to make into the path, or NULL.
+.IP \fInum_substitutions\fP 1.2i
+Specifies the number of entries in \fIsubstitutions\fP.
+.IP \fIpredicate\fP 1.2i
+Specifies a procedure called to judge each potential file name, or NULL.
+.SH DESCRIPTION
+The substitutions specified by
+.ZN XtResolvePathname
+are determined from the value of the language string retrieved by
+.ZN XtDisplayInitialize
+for the specified display.
+To set the
+language for all applications specify ``*xnlLanguage: \fIlang\fP'' in the
+resource database. 
+.IN "xnlLanguage"
+The format and content of the language string are
+implementation-defined.   One suggested syntax is to compose
+the language string of three parts;  a  ``language  part'',  a
+``territory  part'' and a ``codeset part''.  The manner in which
+this composition is accomplished is implementation-defined
+and the \*(xI make no interpretation of the parts other
+than to use them in substitutions as described below.
+.LP
+.ZN XtResolvePathname
+calls
+.ZN XtFindFile
+with the following substitutions
+in addition to any passed by the caller and returns the value returned by
+.ZN XtFindFile :
+.IP %N 5
+The value of the \fIfilename\fP parameter, or the application's
+class name if \fIfilename\fP is NULL.
+.IP %T 5
+The value of the \fItype\fP parameter.
+.IP %S 5
+The value of the \fIsuffix\fP parameter.
+.IP %L 5
+The language string associated with the specified display.
+.IP %l 5
+The language part of the display's language string.
+.IP %t 5
+The territory part of the display's language string.
+.IP %c 5
+The codeset part of the display's language string.
+.IP %C 5
+The customization string retrieved from the resource
+database associated with \fIdisplay\fP.
+.IP %D 5
+The value of the implementation-specific default path.
+.LP
+If a path is passed to
+.ZN XtResolvePathname ,
+it will be passed along to
+.ZN XtFindFile .
+If the \fIpath\fP argument is NULL, the value of the
+.ZN \s-1XFILESEARCHPATH\s+1
+.IN "XFILESEARCHPATH" "" "@DEF@"
+environment variable will be passed to
+.ZN XtFindFile .
+If
+.ZN \s-1XFILESEARCHPATH\s+1
+is not defined, an implementation-specific default path will be used
+which contains at least 6 entries.  These entries
+must contain the following substitutions:
+
+.nf
+.ta 3n 23n 27n
+1.	%C, %N, %S, %T, %L	or	%C, %N, %S, %T, %l, %t, %c
+2.	%C, %N, %S, %T, %l
+3.	%C, %N, %S, %T
+4.	%N, %S, %T, %L	or	%N, %S, %T, %l, %t, %c
+5.	%N, %S, %T, %l
+6.	%N, %S, %T
+.fi
+
+The order of these six entries within the path must be as given above.
+The order and use of substitutions within a given entry is implementation
+dependent.
+If the path begins
+with a colon, it will be preceded by %N%S.  If the path includes two
+adjacent colons, \fB%N%S\fP will be inserted between them.
+.LP
+The \fItype\fP parameter is intended to be a category of files, usually
+being translated into a directory in the pathname.  Possible values
+might include ``app-defaults'', ``help'', and ``bitmap''.
+.LP
+The \fIsuffix\fP parameter is intended to be appended to the file name.
+Possible values might include ``.txt'', ``.dat'', and ``.bm''.
+.LP
+A suggested value for the default path on POSIX-based systems is
+.IP
+__projectroot__/lib/X11/%L/%T/%N%C%S:__projectroot__/lib/X11/%l/%T/%N%C%S:\\
+.br
+__projectroot__/lib/X11/%T/%N%C%S:__projectroot__/lib/X11/%L/%T/%N%S:\\
+.br
+__projectroot__/lib/X11/%l/%T/%N%S:__projectroot__/lib/X11/%T/%N%S
+.LP
+Using this example, if the user has specified a language, it will be
+used as a subdirectory of __projectroot__/lib/X11 that will be searched
+for other files.  If the desired file is not found there, the lookup
+will be tried again using just the language part of the specification.
+If the file is not there, it will be looked for in
+__projectroot__/lib/X11.  The \fItype\fP parameter is used as a
+subdirectory of the language directory or of __projectroot__/lib/X11,
+and \fIsuffix\fP is appended to the file name.
+.LP
+The %D substitution allows the addition of path
+elements to the implementation-specific default path, typically to
+allow additional directories to be searched without preventing
+resources in the system directories from being found.  For example, a
+user installing resource files under a directory called ``ourdir''
+might set
+.ZN \s-1XFILESEARCHPATH\s+1
+to
+.IP
+%D:ourdir/%T/%N%C:ourdir/%T/%N
+.LP
+The customization string is obtained by querying the resource database
+currently associated with the display (the database returned by
+.ZN XrmGetDatabase )
+for the resource \fIapplication_name\fP.customization, class
+\fIapplication_class\fP.Customization where \fIapplication_name\fP
+and \fIapplication_class\fP are the values returned by
+.ZN XtGetApplicationNameAndClass .
+If no value is specified in the database, the empty string is used.
+.LP
+It is the responsibility of the caller to free the returned string using
+.ZN XtFree
+when it is no longer needed.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSessionGetToken.man b/libXt/man/XtSessionGetToken.man
new file mode 100644
index 000000000..0f46f009e
--- /dev/null
+++ b/libXt/man/XtSessionGetToken.man
@@ -0,0 +1,159 @@
+.\" $Xorg: XtSession.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSession.man,v 1.2 2001/01/27 18:20:29 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSession-Get-Token XtSession-Return-Token wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSessionGetToken __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSessionGetToken, XtSessionReturnToken \- token management for checkpointing
+.SH SYNTAX
+.HP
+XtCheckpointToken XtSessionGetToken(Widget \fIw\fP, int \fItype\fP); 
+.HP
+void XtSessionReturnToken(XtCheckpointToken \fItoken\fP); 
+.SH ARGUMENTS
+.IP \fIw\fP 1i
+Specifies the session widget.
+.IP \fItype\fP 1i
+Specifies the value in the type field of the token.
+.IP \fItoken\fP 1i
+Specifies the token to be returned.
+.SH DESCRIPTION
+The
+.ZN XtSessionGetToken
+function will return NULL if the checkpoint operation instigated by
+the session manager is not currently under way.
+.LP
+To indicate the completion of a deferred save operation and to return
+the checkpoint token use
+.ZN XtSessionReturnToken .
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetArg.man b/libXt/man/XtSetArg.man
new file mode 100644
index 000000000..fa8d60798
--- /dev/null
+++ b/libXt/man/XtSetArg.man
@@ -0,0 +1,210 @@
+.\" $Xorg: XtSetArg.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetArg.man,v 1.3 2001/02/09 03:47:52 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Arg XtMerge-Arg-Lists wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetArg __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetArg, XtMergeArgLists \- set and merge ArgLists
+.SH SYNTAX
+.HP
+int XtSetArg(Arg \fIarg\fP, String \fIname\fP, XtArgVal \fIvalue\fP); 
+.HP
+ArgList XtMergeArgLists(ArgList \fIargs1\fP, Cardinal \fInum_args1\fP, ArgList
+\fIargs2\fP, Cardinal \fInum_args2\fP); 
+.SH ARGUMENTS
+.IP \fIarg\fP 1i
+Specifies the name-value pair to set.
+.IP \fIargs1\fP 1i
+Specifies the first
+.ZN ArgList .
+.IP \fIargs2\fP 1i
+Specifies the second 
+.ZN ArgList .
+.IP \fInum_args1\fP 1i
+Specifies the number of arguments in the first argument list.
+.IP \fInum_args2\fP 1i
+Specifies the number of arguments in the second argument list.
+.IP \fIname\fP 1i
+Specifies the name of the resource.
+.IP \fIvalue\fP 1i
+Specifies the value of the resource if it will fit in an
+.ZN XtArgVal 
+or the address.
+.SH DESCRIPTION
+The
+.ZN XtSetArg
+function is usually used in a highly stylized manner to
+minimize the probability of making a mistake; for example:
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+Arg args[20];
+int n;
+
+n = 0;
+XtSetArg(args[n], XtNheight, 100);	n++;
+XtSetArg(args[n], XtNwidth, 200);	n++;
+XtSetValues(widget, args, n);
+.De
+.LP
+Alternatively, an application can statically declare the argument list
+and use
+.ZN XtNumber :
+.LP
+.Ds
+.TA .5i 3i
+.ta .5i 3i
+static Args args[] = {
+	{XtNheight, (XtArgVal) 100},
+	{XtNwidth, (XtArgVal) 200},
+};
+XtSetValues(Widget, args, XtNumber(args));
+.De
+.LP
+Note that you should not use auto-increment or auto-decrement
+within the first argument to
+.ZN XtSetArg .
+.ZN XtSetArg
+can be implemented as a macro that dereferences the first argument twice.
+.LP
+The
+.ZN XtMergeArgLists
+function allocates enough storage to hold the combined
+.ZN ArgList
+structures and copies them into it.
+Note that it does not check for duplicate entries.
+When it is no longer needed,
+free the returned storage by using
+.ZN XtFree .
+.SH "SEE ALSO"
+XtOffset(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetKeyTranslator.man b/libXt/man/XtSetKeyTranslator.man
new file mode 100644
index 000000000..88e4b0687
--- /dev/null
+++ b/libXt/man/XtSetKeyTranslator.man
@@ -0,0 +1,214 @@
+.\" $Xorg: XtSetKTr.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetKTr.man,v 1.3 2001/02/09 03:47:52 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Key-Translator XtTranslate-Keycode XtRegister-Case-Converter XtConvert-Case wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetKeyTranslator __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetKeyTranslator, XtTranslateKeycode, XtRegisterCaseConverter, XtConvertCase \- convert KeySym to KeyCodes
+.SH SYNTAX
+.HP
+void XtSetKeyTranslator(Display *\fIdisplay\fP, XtKeyProc \fIproc\fP); 
+.HP
+void XtTranslateKeycode(Display *\fIdisplay\fP, KeyCode \fIkeycode\fP,
+Modifiers \fImodifiers\fP, Modifiers *\fImodifiers_return\fP, KeySym
+*\fIkeysym_return\fP); 
+.HP
+void XtRegisterCaseConverter(Display *\fIdisplay\fP, XtCaseProc \fIproc\fP,
+KeySym \fIstart\fP, KeySym \fIstop\fP); 
+.HP
+void XtConvertCase(Display *\fIdisplay\fP, KeySym \fIkeysym\fP, KeySym
+*\fIlower_return\fP, KeySym *\fIupper_return\fP); 
+.SH ARGUMENTS
+.ds Di
+.IP \fIdisplay\fP 1i
+Specifies the display\*(Di.
+.IP \fIkeycode\fP 1i
+Specifies the KeyCode to translate.
+.IP \fIkeysym\fP 1i
+Specifies the KeySym to convert.
+.IP \fIkeysym_return\fP 1i
+Returns the resulting KeySym.
+.IP \fIlower_return\fP 1i
+Returns the lowercase equivalent of the KeySym.
+.IP \fIupper_return\fP 1i
+Returns the uppercase equivalent of the KeySym.
+.IP \fImodifiers\fP 1i
+Specifies the modifiers to the KeyCode.
+.IP \fImodifiers_return\fP 1i
+Returns a mask that indicates the modifiers actually used 
+to generate the KeySym.
+.ds Pr \ to perform key translations or conversions
+.IP \fIproc\fP 1i
+Specifies the procedure that is\*(Pr.
+.IP \fIstart\fP 1i
+Specifies the first KeySym for which this converter is valid.
+.IP \fIstop\fP 1i
+Specifies the last KeySym for which this converter is valid.
+.SH DESCRIPTION
+The
+.ZN XtSetKeyTranslator
+function sets the specified procedure as the current key translator.
+The default translator is 
+.ZN XtTranslateKey ,
+an
+.ZN XtKeyProc
+that uses Shift and Lock modifiers with the interpretations defined
+by the core protocol.
+It is provided so that new translators can call it to get default 
+KeyCode-to-KeySym translations and so that the default translator 
+can be reinstalled.
+.LP
+The
+.ZN XtTranslateKeycode
+function passes the specified arguments 
+directly to the currently registered KeyCode to KeySym translator.
+.LP
+The
+.ZN XtRegisterCaseConverter
+registers the specified case converter.
+The start and stop arguments provide the inclusive range of KeySyms 
+for which this converter is to be called.
+The new converter overrides any previous converters for KeySyms in that range.
+No interface exists to remove converters; 
+you need to register an identity converter.
+When a new converter is registered,
+the \*(xI  refreshes the keyboard state if necessary.
+The default converter understands case conversion for all
+KeySyms defined in the core protocol.
+.LP
+The
+.ZN XtConvertCase
+function calls the appropriate converter and returns the results.
+A user-supplied
+.ZN XtKeyProc 
+may need to use this function.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetKeyboardFocus.man b/libXt/man/XtSetKeyboardFocus.man
new file mode 100644
index 000000000..d58da9eac
--- /dev/null
+++ b/libXt/man/XtSetKeyboardFocus.man
@@ -0,0 +1,192 @@
+.\" $Xorg: XtSetKFoc.man,v 1.3 2000/08/17 19:42:02 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetKFoc.man,v 1.3 2002/10/12 16:06:41 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Keyboard-Focus wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetKeyboardFocus __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetKeyboardFocus \- focus events on a child widget
+.SH SYNTAX
+.HP
+XtSetKeyboardFocus(Widget \fIsubtree\fP, Widget \fIdescendant\fP); 
+.SH ARGUMENTS
+.IP \fIsubtree\fP 1i
+Specifies either the widget in the subtree structure which is to receive the 
+keyboard event, or 
+.ZN None .
+Note that it is not an error to specify
+.ZN None
+when no input focus was previously set.
+.ds Wi for which the keyboard focus is to be set
+.IP \fIdescendant\fP 1i
+Specifies the widget \*(Wi.
+.SH DESCRIPTION
+If a future 
+.ZN KeyPress
+or
+.ZN KeyRelease 
+event occurs within the specified subtree,
+.ZN XtSetKeyboardFocus
+causes
+.ZN XtDispatchEvent
+to remap and send the event to the specified descendant widget.
+.LP
+When there is no modal cascade,
+keyboard events can occur within a widget W in one of three ways:
+.IP \(bu 5
+W has the X input focus.
+.IP \(bu 5
+W has the keyboard focus of one of its ancestors,
+and the event occurs within the ancestor or one of the ancestor's descendants.
+.IP \(bu 5
+No ancestor of W has a descendant within the keyboard focus,
+and the pointer is within W.
+.LP
+When there is a modal cascade,
+a widget W receives keyboard events if an ancestor of W is in the active
+subset of the modal cascade and one or more of the previous conditions is
+.ZN True .
+.LP
+When subtree or one of its descendants acquires the X input focus
+or the pointer moves into the subtree such that keyboard events would
+now be delivered to subtree, a
+.ZN FocusIn
+event is generated for the descendant if
+.ZN FocusNotify
+events have been selected by the descendant.
+Similarly, when W loses the X input focus
+or the keyboard focus for one of its ancestors, a
+.ZN FocusOut
+event is generated for descendant if
+.ZN FocusNotify
+events have been selected by the descendant.
+.SH "SEE ALSO"
+XtCallAcceptFocus(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetLanguageProc.man b/libXt/man/XtSetLanguageProc.man
new file mode 100644
index 000000000..1c33a6fd4
--- /dev/null
+++ b/libXt/man/XtSetLanguageProc.man
@@ -0,0 +1,200 @@
+.\" $Xorg: XtSetLangP.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetLangP.man,v 1.4 2003/05/29 21:48:05 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Language-Proc wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetLanguageProc __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetLanguageProc \- set the language procedure
+.SH SYNTAX
+.HP
+Widget XtSetLanguageProc(XtAppContext \fIapp_context\fP, XtLanguageProc
+\fIproc\fP, XtPointer \fIclient_data\fP); 
+.SH ARGUMENTS
+.IP \fIapp_context\fP 1i
+Specifies the application context in which the language procedure
+is to be used, or NULL.
+.LP
+.IP \fIproc\fP 1i
+Specifies the language procedure, or NULL.
+.LP
+.IP \fIclient_data\fP 1i
+Specifies additional client data to be passed to the language procedure
+when it is called.
+.SH DESCRIPTION
+.ZN XtSetLanguageProc
+sets the language procedure that will be called from
+.ZN XtDisplayInitialize
+for all subsequent Displays initialized in the specified application
+context. If \fIapp_context\fP is NULL, the specified language procedure
+is registered in all application contexts created by the calling process,
+including any future application contexts that may be created. If 
+\fIproc\fP is NULL a default language procedure is registered.
+.ZN XtSetLanguageProc
+returns the previously registered language procedure. If a language
+procedure has not yet been registered, the return value is unspecified
+but if this return value is used in a subsequent call to
+.ZN XtSetLanguageProc ,
+it will cause the default language procedure to be registered.
+.LP
+The default language procedure does the following:
+.IP \(bu 5
+Sets the locale according to the environment. On ANSI C-based systems
+this is done by calling
+.ZN setlocale (
+.ZN LC_ALL ,
+language ). If an error is encountered a warning message is issued with
+.ZN XtWarning .
+.IP \(bu 5
+Calls
+.ZN XSupportsLocale 
+to verify that the current locale is supported. If the locale is not
+supported, a warning message is issued with
+.ZN XtWarning
+and the locale is set to ``C''.
+.IP \(bu 5
+Calls
+.ZN XSetLocaleModifiers
+specifying the empty string.
+.IP \(bu 5
+Returns the value of the current locale. On ANSI C-based systems this
+is the return value from a final call to
+.ZN setlocale (
+.ZN LC_ALL ,
+NULL ).
+.LP
+A client wishing to use this mechanism to establish locale can do so
+by calling
+.ZN XtSetLanguageProc
+prior to 
+.ZN XtDisplayInitialize.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetMultiClickTime.man b/libXt/man/XtSetMultiClickTime.man
new file mode 100644
index 000000000..eebc6baf8
--- /dev/null
+++ b/libXt/man/XtSetMultiClickTime.man
@@ -0,0 +1,155 @@
+.\" $Xorg: XtClickT.man,v 1.3 2000/08/17 19:41:59 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtClickT.man,v 1.2 2001/01/27 18:20:25 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Multi-Click-Time Xt-Get-Multi-Click-Time wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetMultiClickTime __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetMultiClickTime, XtGetMultiClickTime \- set and get multi-click times
+.SH SYNTAX
+.HP
+void XtSetMultiClickTime(Display* \fIdisplay\fP, int \fItime\fP);
+.HP
+int XtGetMultiClickTime(Display* \fIdisplay\fP);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the display connection.
+.IP \fItime\fP 1i
+Specifies the multi-click time in milliseconds.
+.SH DESCRIPTION
+.ZN XtSetMultiClickTime
+sets the time interval used by the translation manager to determine
+when multiple events are interpreted as a repeated event.
+.LP
+.ZN XtGetMultiClickTime
+returns the time in milliseconds that the translation manager uses to
+determine if multiple events are to be interpreted as a repeated event
+for purposes of matching a translation entry containing a repeat count.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetSelectionParameters.man b/libXt/man/XtSetSelectionParameters.man
new file mode 100644
index 000000000..74b016452
--- /dev/null
+++ b/libXt/man/XtSetSelectionParameters.man
@@ -0,0 +1,192 @@
+.\" $Xorg: XtSetSP.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetSP.man,v 1.4 2003/04/28 22:18:21 herrb Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Selection-Parameters XtGet-Selection-Parameters wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetSelectionParameters __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetSelectionParameters \- specify target parameters for a selection request with a single target
+.SH SYNTAX
+.HP
+void XtSetSelectionParameters(Widget \fIrequestor\fP, Atom \fIselection\fP,
+Atom \fItype\fP, XtPointer \fIvalue\fP, unsigned long \fIlength\fP, int
+\fIformat\fP); 
+.SH ARGUMENTS
+.IP \fIrequestor\fP 1i
+Specifies the widget making the request. Must be of class Core or any
+subclass thereof.
+.IP \fIselection\fP 1i
+Specifies the atom that names the selection.
+.IP \fItype\fP 1i
+Specifies the type of the property in which the parameters will be passed.
+.IP \fIvalue\fP 1i
+Specifies a pointer to the parameters.
+.IP \fIlength\fP 1i
+Specifies the number of elements containing data in \fIvalue\fP, each
+element of a sized indicated by \fIformat\fP.
+.IP \fIformat\fP 1i
+Specifies the size in bits of the data in the elements of \fIvalue\fP.
+.SH DESCRIPTION
+The specified parameters will be copied and stored in a new property of
+the specified type and format on the requestor's window. To initiate a
+selection request with a target and these parameters, a subsequent call to
+.ZN XtGetSelectionValue
+or to
+.ZN XtGetSelectionValueIncremental
+specifying the same requestor widget and selection atom will generate a
+.ZN ConvertSelection
+request referring referring to the property containing the parameters. If
+.ZN XtSetSelectionParameters
+is called more than once with the same widget and selection without a
+call to specify a request, the most recently specified parameters are
+used in the subsequent request.
+.LP
+The possible values of \fIformat\fP may be 8, 16, or 32. If the \fIformat\fP
+is 8, the elements of \fIvalue\fP are assumed to be sizeof(char); if 16,
+sizeof(short); if 32, sizeof(long).
+.LP
+To generate a MULTIPLE target request with parameters for any of the
+multiple targets of the selection request, precede individual calls to
+.ZN XtGetSelectionValue
+and
+.ZN XtGetSelectionValueIncremental
+with corresponding individual calls to
+.ZN XtSetSelectionParameters ,
+and enclose these all within
+.ZN XtCreateSelectionRequest
+and
+.ZN XtSendSelectionRequest .
+.ZN XtGetSelectionValues 
+and
+.ZN XtGetSelectionValuesIncremental
+cannot be used  to make selection requests with parameterized targets.
+.SH "SEE ALSO"
+XtGetSelectionParameters(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetSensitive.man b/libXt/man/XtSetSensitive.man
new file mode 100644
index 000000000..207790a32
--- /dev/null
+++ b/libXt/man/XtSetSensitive.man
@@ -0,0 +1,191 @@
+.\" $Xorg: XtSetSens.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetSens.man,v 1.2 2001/01/27 18:20:30 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Sensitive XtIs-Sensitive wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetSensitive __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetSensitive, XtIsSensitive \- set and check a widget's sensitivity state
+.SH SYNTAX
+.HP
+void XtSetSensitive(Widget \fIw\fP, Boolean \fIsensitive\fP); 
+.HP
+Boolean XtIsSensitive(Widget \fIw\fP); 
+.SH ARGUMENTS
+.IP \fIsensitive\fP 1i
+Specifies a Boolean value that indicates whether the widget should receive 
+keyboard and pointer events.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+The
+.ZN XtSetSensitive
+function first calls
+.ZN XtSetValues
+on the current widget with an argument list specifying that the
+sensitive field should change to the new value.
+It then recursively propagates the new value
+down the managed children tree by calling
+.ZN XtSetValues
+on each child to set the ancestor_sensitive to the new value if the new
+values for sensitive and the child's ancestor_sensitive are not the same.
+.LP
+.ZN XtSetSensitive
+calls
+.ZN XtSetValues
+to change sensitive and ancestor_sensitive.
+Therefore, when one of these changes,
+the widget's set_values procedure should
+take whatever display actions are needed
+(for example, greying out or stippling the widget).
+.LP
+.ZN XtSetSensitive
+maintains the invariant that if parent has either sensitive 
+or ancestor_sensitive 
+.ZN False ,
+then all children have ancestor_sensitive 
+.ZN False .
+.LP
+The
+.ZN XtIsSensitive
+function returns 
+.ZN True 
+or 
+.ZN False 
+to indicate whether or not user input events are being dispatched.
+If both core.sensitive and core.ancestor_sensitive are 
+.ZN True ,
+.ZN XtIsSensitive
+returns 
+.ZN True ;
+otherwise, it returns 
+.ZN False .
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetValues.man b/libXt/man/XtSetValues.man
new file mode 100644
index 000000000..fe9751822
--- /dev/null
+++ b/libXt/man/XtSetValues.man
@@ -0,0 +1,283 @@
+.\" $Xorg: XtSetVal.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetVal.man,v 1.3 2001/02/09 03:47:52 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-Values XtVa-Set-Values XtSet-Subvalues XtVa-Set-Subvalues XtGet-Values XtVa-Get-Values XtGet-Subvalues XtVa-Get-Subvalues constraint-Widget-Class wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetValues __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetValues, XtVaSetValues, XtSetSubvalues, XtVaSetSubvalues, XtGetValues, XtVaGetValues, XtGetSubvalues, XtVaGetSubvalues \- obtain and set widget resources 
+.SH SYNTAX
+.HP
+void XtSetValues(Widget \fIw\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP);
+.HP
+void XtVaSetValues(Widget \fIw\fP, ...\^); 
+.HP
+void XtSetSubvalues(XtPointer \fIbase\fP, XtResourceList \fIresources\fP,
+Cardinal \fInum_resources\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP);
+.HP
+void XtVaSetSubvalues(XtPointer \fIbase\fP, XtResourceList \fIresources\fP,
+Cardinal \fInum_resources\fP, ...\^);
+.HP
+void XtGetValues(Widget \fIw\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP);
+.HP
+void XtVaGetValues(Widget \fIw\fP, ...\^);
+.HP
+void XtGetSubvalues(XtPointer \fIbase\fP, XtResourceList \fIresources\fP,
+Cardinal \fInum_resources\fP, ArgList \fIargs\fP, Cardinal \fInum_args\fP);
+.HP
+void XtVaGetSubvalues(XtPointer \fIbase\fP, XtResourceList \fIresources\fP,
+Cardinal \fInum_resources\fP, ...\^); 
+.SH ARGUMENTS
+.ds Al of name/address pairs that contain the resource name \
+and either the address into which the resource value is to be stored \
+or their new values
+.IP \fIargs\fP 1i
+Specifies the argument list \*(Al.
+.ds Ba retrieved or written
+.IP \fIbase\fP 1i
+Specifies the base address of the subpart data structure where the resources
+should be \*(Ba.
+.IP \fInum_args\fP 1i
+Specifies the number of arguments in the argument list.
+.IP \fIresources\fP 1i
+Specifies the nonwidget resource list or values.
+.IP \fInum_resources\fP 1i
+Specifies the number of resources in the resource list.
+.IP \fIw\fP 1i
+Specifies the widget.
+.IP \fI...\fP 1i
+Specifies the variable argument list \*(Al.
+.SH DESCRIPTION
+The
+.ZN XtSetValues
+function starts with the resources specified for the 
+.ZN Core 
+widget fields and proceeds down the subclass chain to the widget.
+At each stage,
+it writes the new value (if specified by one of the arguments) or the existing
+value (if no new value is specified) to a new widget data record.
+.ZN XtSetValues
+then calls the set_values procedures for the widget in superclass-to-subclass 
+order.
+.IN "hook"
+If the widget has any non-NULL set_values_hook fields,
+these are called immediately after the
+corresponding set_values procedure.
+This procedure permits subclasses to set nonwidget data for
+.ZN XtSetValues .
+.LP
+If the widget's parent is a subclass of
+.ZN constraintWidgetClass ,
+.ZN XtSetValues
+also updates the widget's constraints.
+It starts with the constraint resources specified for
+.ZN constraintWidgetClass
+and proceeds down the subclass chain to the parent's class.
+At each stage,
+it writes the new value or the existing value to a new constraint record.
+It then calls the constraint set_values procedures from
+.ZN constraintWidgetClass
+down to the parent's class.
+The constraint set_values procedures are called with widget arguments,
+as for all set_values procedures, not just the constraint record arguments,
+so that they can make adjustments to the desired values based
+on full information about the widget.
+.LP
+.ZN XtSetValues
+determines if a geometry request is needed by comparing the current widget to
+the new widget.
+If any geometry changes are required,
+it makes the request, and the geometry manager returns
+.ZN XtGeometryYes ,
+.ZN XtGeometryAlmost ,
+or
+.ZN XtGeometryNo .
+If
+.ZN XtGeometryYes ,
+.ZN XtSetValues
+calls the widget's resize procedure.
+If
+.ZN XtGeometryNo ,
+.ZN XtSetValues
+resets the geometry fields to their original values.
+If
+.ZN XtGeometryAlmost ,
+.ZN XtSetValues
+calls the set_values_almost procedure,
+which determines what should be done and writes new values for the
+geometry fields into the new widget.
+.ZN XtSetValues
+then repeats this process,
+deciding once more whether the geometry manager should be called.
+.LP
+Finally, if any of the set_values procedures returned 
+.ZN True ,
+.ZN XtSetValues
+causes the widget's expose procedure to be invoked by calling the Xlib
+.ZN XClearArea
+function on the widget's window.
+.LP
+The
+.ZN XtSetSubvalues
+function stores resources into the structure identified by base.
+.LP
+The
+.ZN XtGetValues
+function starts with the resources specified for the core widget fields
+and proceeds down the subclass chain to the widget.
+The value field of a passed argument list should contain the
+address into which to store the corresponding resource value.
+It is the caller's responsibility
+to allocate and deallocate this storage according to the size of the
+resource representation type used within the widget.
+.LP
+If the widget's parent is a subclass of
+.ZN constraintWidgetClass ,
+.ZN XtGetValues
+then fetches the values for any constraint resources requested.
+It starts with the constraint resources specified for
+.ZN constraintWidgetClass
+and proceeds down to the subclass chain to the parent's constraint resources.
+If the argument list contains a resource name that is not found in any of the
+resource lists searched, 
+the value at the corresponding address is not modified.
+.IN "hook"
+Finally, if the get_values_hook procedures are non-NULL, 
+they are called in superclass-to-subclass order after
+all the resource values have been fetched by
+.ZN XtGetValues .
+This permits a subclass to provide nonwidget resource data to
+.ZN XtGetValues .
+.LP
+The
+.ZN XtGetSubvalues
+function obtains resource values from the structure identified by base.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtSetWMColormapWindows.man b/libXt/man/XtSetWMColormapWindows.man
new file mode 100644
index 000000000..ffc4e953f
--- /dev/null
+++ b/libXt/man/XtSetWMColormapWindows.man
@@ -0,0 +1,166 @@
+.\" $Xorg: XtSetWMC.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\" $XdotOrg: $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtSetWMC.man,v 1.2 2001/01/27 18:20:30 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtSet-WMColormap-Windows wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtSetWMColormapWindows __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtSetWMColormapWindows \- Set the value of the WM_COLORMAP_WINDOWS property
+.SH SYNTAX
+.HP
+void XtSetWMColormapWindows(Widget \fIwidget\fP, Widget* \fIlist\fP, Cardinal
+\fIcount\fP); 
+.SH ARGUMENTS
+.IP \fIwidget\fP 1i
+Specifies the widget on whose window the WM_COLORMAP_WINDOWS property
+will be stored. Must be of class Core or any subclass thereof.
+.IP \fIlist\fP 1i
+Specifies a list of widgets whose windows are are potentially to be
+listed in the WM_COLORMAP_WINDOWS property.
+.IP \fIcount\fP 1i
+Specifies the number of widgets in \fIlist\fP.
+.SH DESCRIPTION
+.ZN XtSetWMColormapWindows
+returns immediately if \fIwidget\fP is not realized or if \fIcount\fP
+is zero. Otherwise,
+.ZN XtSetWMColormapWindows
+constructs an ordered list of windows by examining each widget in
+\fIlist\fP in turn and ignoring the widget if it is not realized,
+or adding the widget's window to the window list if the widget is
+realized and its colormap resource is different from the colormap
+resources of all widgets whose windows are already on the window
+list.
+.LP
+Finally,
+.ZN XtSetWMColormapWindows
+stores the resulting window list in the WM_COLORMAP_WINDOWS property
+on the specified widget's window.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtStringConversionWarning.man b/libXt/man/XtStringConversionWarning.man
new file mode 100644
index 000000000..a2a47ab94
--- /dev/null
+++ b/libXt/man/XtStringConversionWarning.man
@@ -0,0 +1,159 @@
+.\" $Xorg: XtStrCW.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtStrCW.man,v 1.2 2001/01/27 18:20:30 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtString-Conversion-Warning wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtStringConversionWarning __libmansuffix__ __xorgversion__ "XT COMPATIBILITY FUNCTIONS"
+.SH NAME
+XtStringConversionWarning \- issue a conversion warning message
+.SH SYNTAX
+.HP
+void XtStringConversionWarning(String \fIsrc\fP, String \fIdst_type\fP); 
+.SH ARGUMENTS
+.IP \fIsrc\fP 1i
+Specifies the string that could not be converted.
+.IP \fIdst_type\fP 1i
+Specifies the name of the type to which the string could not be converted.
+.SH DESCRIPTION
+The
+.ZN XtStringConversionWarning
+function issues a warning message with name ``conversionError'',
+type ``string'', class ``XtToolkitError, and the default message string
+``Cannot convert "\fIsrc\fP" to type \fIdst_type\fP''.
+.LP
+.ZN XtStringConversionWarning
+has been replaced by
+.ZN XtDisplayStringConversionWarning .
+.SH "SEE ALSO"
+XtAppAddConverter(3Xt),
+XtAppErrorMsg(3t),
+XtConvert(3Xt),
+XtDisplayStringConversionWarning(3Xt)
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtToolkitThreadInitialize.man b/libXt/man/XtToolkitThreadInitialize.man
new file mode 100644
index 000000000..7df914522
--- /dev/null
+++ b/libXt/man/XtToolkitThreadInitialize.man
@@ -0,0 +1,151 @@
+.\" $Xorg: XtThreadI.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\"
+.\" 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, 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtThreadI.man,v 1.2 2001/01/27 18:20:30 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtToolkit-Thread-Initialize wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtToolkitThreadInitialize __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtToolkitThreadInitialize \- initialize the toolkit for multiple threads
+.SH SYNTAX
+.HP
+Boolean XtToolkitThreadInitialize(void); 
+.SH DESCRIPTION
+If
+.ZN XtToolkitThreadInitialize
+was previously called, it returns. The application programmer must ensure
+that two or more threads do not simultaneously attempt to call
+.ZN XtToolkitThreadInitialize ;
+the effect of this is undefined.
+.ZN XtToolkitThreadInitialize
+returns
+.ZN True
+if the host operating system has threads and the Intrinsics are thread
+safe.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtTranslateCoords.man b/libXt/man/XtTranslateCoords.man
new file mode 100644
index 000000000..f0b41db78
--- /dev/null
+++ b/libXt/man/XtTranslateCoords.man
@@ -0,0 +1,162 @@
+.\" $Xorg: XtTransC.man,v 1.3 2000/08/17 19:42:03 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtTransC.man,v 1.3 2001/02/09 03:47:52 tsi Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtTranslate-Coords wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtTranslateCoords __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtTranslateCoords \- translate widget coordinates
+.SH SYNTAX
+.HP
+void XtTranslateCoords(Widget \fIw\fP, Position \fIx\fP, \fIy\fP, Position
+*\fIrootx_return\fP, *\fIrooty_return\fP); 
+.SH ARGUMENTS
+.IP \fIrootx_return\fP 1i
+.br
+.ns
+.IP \fIrooty_return\fP 1i
+Returns the root-relative x and y coordinates.
+.ds Nu widget-relative
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the \*(Nu x and y coordinates.
+.IP \fIw\fP 1i
+Specifies the widget.
+.SH DESCRIPTION
+While
+.ZN XtTranslateCoords
+is similar to the Xlib
+.ZN XTranslateCoordinates 
+function, it does not generate a server request because all the required
+information already is in the widget's data structures.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/man/XtVaCreateArgsList.man b/libXt/man/XtVaCreateArgsList.man
new file mode 100644
index 000000000..f9b053df9
--- /dev/null
+++ b/libXt/man/XtVaCreateArgsList.man
@@ -0,0 +1,161 @@
+.\" $Xorg: XtVaCrArgL.man,v 1.3 2000/08/17 19:42:04 cpqbld Exp $
+.\"
+.\" Copyright 1993 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.
+.\"
+.\" $XFree86: xc/doc/man/Xt/XtVaCrArgL.man,v 1.2 2001/01/27 18:20:30 dawes Exp $
+.\"
+.ds tk X Toolkit
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xI Intrinsics
+.ds xW X Toolkit Athena Widgets \- C Language Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.ds Rn 3
+.ds Vn 2.2
+.hw XtVa-Create-Args-List wid-get
+.na
+.de Ds
+.nf
+.\\$1D \\$2 \\$1
+.ft 1
+.ps \\n(PS
+.\".if \\n(VS>=40 .vs \\n(VSu
+.\".if \\n(VS<=39 .vs \\n(VSp
+..
+.de De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN		\" send an index entry to the stderr
+..
+.de C{
+.KS
+.nf
+.D
+.\"
+.\"	choose appropriate monospace font
+.\"	the imagen conditional, 480,
+.\"	may be changed to L if LB is too
+.\"	heavy for your eyes...
+.\"
+.ie "\\*(.T"480" .ft L
+.el .ie "\\*(.T"300" .ft L
+.el .ie "\\*(.T"202" .ft PO
+.el .ie "\\*(.T"aps" .ft CW
+.el .ft R
+.ps \\n(PS
+.ie \\n(VS>40 .vs \\n(VSu
+.el .vs \\n(VSp
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+.		\" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XtVaCreateArgsList __libmansuffix__ __xorgversion__ "XT FUNCTIONS"
+.SH NAME
+XtVaCreateArgsList \- dynamically allocate a varargs list
+.SH SYNTAX
+.HP
+XtVarArgsList XtVaCreateArgsList(XtPointer \fIunused\fP, ...\^); 
+.SH ARGUMENTS
+.IP \fIunused\fP 1i
+Must be specified as NULL.
+.IP \fI...\fP 1i
+Specifies a variable parameter list of resource name and value pairs.
+.SH DESCRIPTION
+The
+.ZN XtVaCreateArgsList
+function allocates memory and copies its arguments into a single list
+pointer, which may be used with
+.ZN XtVaNestedList .
+The end of both lists is identified by a \fIname\fP entry containing
+NULL. Any entries of type
+.ZN XtVaTypedArg
+are copied as specified without applying conversions. Data passed by
+reference (including Strings) are not copied, only the pointers
+themselves; the caller must ensure that the data remain valid for
+the lifetime of the created varargs list. The list should be freed
+using
+.ZN XtFree
+when no longer needed.
+.SH "SEE ALSO"
+.br
+\fI\*(xT\fP
+.br
+\fI\*(xL\fP
diff --git a/libXt/missing b/libXt/missing
new file mode 100644
index 000000000..28055d2ae
--- /dev/null
+++ b/libXt/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 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 <http://www.gnu.org/licenses/>.
+
+# 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
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    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
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar*)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar*)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case $firstarg in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case $firstarg in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libXt/src/ActionHook.c b/libXt/src/ActionHook.c
new file mode 100644
index 000000000..6c2fe2bd0
--- /dev/null
+++ b/libXt/src/ActionHook.c
@@ -0,0 +1,135 @@
+/* $Xorg: ActionHook.c,v 1.4 2001/02/09 02:03:53 xorgcvs Exp $ */
+
+/*LINTLIBRARY*/
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/ActionHook.c,v 1.2 2001/08/22 22:52:17 dawes Exp $ */
+
+/* 
+ * Contains XtAppAddActionHook, XtRemoveActionHook
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+
+/*ARGSUSED*/
+static void FreeActionHookList(
+    Widget widget,		/* unused (and invalid) */
+    XtPointer closure,		/* ActionHook* */
+    XtPointer call_data)	/* unused */
+{
+    ActionHook list = *(ActionHook*)closure;
+    while (list != NULL) {
+	ActionHook next = list->next;
+	XtFree( (XtPointer)list );
+	list = next;
+    }
+}
+
+
+XtActionHookId XtAppAddActionHook(
+    XtAppContext app,
+    XtActionHookProc proc,
+    XtPointer closure)
+{
+    ActionHook hook = XtNew(ActionHookRec);
+    LOCK_APP(app);
+    hook->next = app->action_hook_list;
+    hook->app = app;
+    hook->proc = proc;
+    hook->closure = closure;
+    if (app->action_hook_list == NULL) {
+	_XtAddCallback( &app->destroy_callbacks,
+		        FreeActionHookList,
+		        (XtPointer)&app->action_hook_list
+		      );
+    }
+    app->action_hook_list = hook;
+    UNLOCK_APP(app);
+    return (XtActionHookId)hook;
+}
+
+
+void XtRemoveActionHook(
+    XtActionHookId id)
+{
+    ActionHook *p, hook = (ActionHook)id;
+    XtAppContext app = hook->app;
+    LOCK_APP(app);
+    for (p = &app->action_hook_list; p != NULL && *p != hook; p = &(*p)->next);
+    if (p) {
+	*p = hook->next;
+	XtFree( (XtPointer)hook );
+	if (app->action_hook_list == NULL)
+	    _XtRemoveCallback(&app->destroy_callbacks, FreeActionHookList,
+			      (XtPointer) &app->action_hook_list);
+    }
+#ifdef DEBUG
+    else {
+	XtAppWarningMsg(app, "badId", "xtRemoveActionHook", XtCXtToolkitError,
+			"XtRemoveActionHook called with bad or old hook id",
+			(String*)NULL, (Cardinal*)NULL);
+    }
+#endif /*DEBUG*/
+    UNLOCK_APP(app);
+}
diff --git a/libXt/src/Alloc.c b/libXt/src/Alloc.c
new file mode 100644
index 000000000..1312db2ac
--- /dev/null
+++ b/libXt/src/Alloc.c
@@ -0,0 +1,494 @@
+/* $Xorg: Alloc.c,v 1.4 2001/02/09 02:03:53 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Alloc.c,v 1.9 2001/12/14 19:56:07 dawes Exp $ */
+
+/*
+ * X Toolkit Memory Allocation Routines
+ *
+ * Uses Xlib memory management, which is spec'd to be re-entrant.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "InitialI.h"
+#undef _XBCOPYFUNC
+
+#include <stdlib.h>
+
+#define Xmalloc(size) malloc((size))
+#define Xrealloc(ptr, size) realloc((ptr), (size))
+#define Xcalloc(nelem, elsize) calloc((nelem), (elsize))
+#define Xfree(ptr) free(ptr)
+
+#ifdef _XNEEDBCOPYFUNC
+void _XtBcopy(
+    char *src, char *dst,
+    int length)
+{
+    if (src < dst) {
+	dst += length;
+	src += length;
+	while (length--)
+	    *--dst = *--src;
+    } else {
+	while (length--)
+	    *dst++ = *src++;
+    }
+}
+#endif
+
+void _XtAllocError(
+    String type)
+{
+    Cardinal num_params = 1;
+    if (type == NULL) type = "local memory allocation";
+    XtErrorMsg("allocError", type, XtCXtToolkitError,
+	       "Cannot perform %s", &type, &num_params);
+}
+
+void _XtHeapInit(
+    Heap*	heap)
+{
+    heap->start = NULL;
+    heap->bytes_remaining = 0;
+}
+
+#ifndef XTTRACEMEMORY
+
+char *XtMalloc(
+    unsigned size)
+{
+    char *ptr;
+
+#if defined(MALLOC_0_RETURNS_NULL) && defined(XTMALLOC_BC)
+    /* preserve this (broken) behavior until everyone fixes their apps */
+    if (!size) size = 1;
+#endif
+    if ((ptr = Xmalloc(size)) == NULL)
+        _XtAllocError("malloc");
+
+    return(ptr);
+}
+
+char *XtRealloc(
+    char     *ptr,
+    unsigned size)
+{
+   if (ptr == NULL) {
+#ifdef MALLOC_0_RETURNS_NULL
+	if (!size) size = 1;
+#endif
+	return(XtMalloc(size));
+   } else if ((ptr = Xrealloc(ptr, size)) == NULL
+#ifdef MALLOC_0_RETURNS_NULL
+		&& size
+#endif
+	)
+	_XtAllocError("realloc");
+
+   return(ptr);
+}
+
+char *XtCalloc(
+    unsigned num, unsigned size)
+{
+    char *ptr;
+
+#if defined(MALLOC_0_RETURNS_NULL) && defined(XTMALLOC_BC)
+    /* preserve this (broken) behavior until everyone fixes their apps */
+    if (!size) num = size = 1;
+#endif
+    if ((ptr = Xcalloc(num, size)) == NULL)
+	_XtAllocError("calloc");
+
+    return(ptr);
+}
+
+void XtFree(
+    char *ptr)
+{
+    if (ptr != NULL) Xfree(ptr);
+}
+
+char* __XtMalloc(
+    unsigned size)
+{
+#ifdef MALLOC_0_RETURNS_NULL
+    if (!size) size = 1;
+#endif
+    return XtMalloc (size);
+}
+
+char* __XtCalloc(
+    unsigned num, unsigned size)
+{
+#ifdef MALLOC_0_RETURNS_NULL
+    if (!size) num = size = 1;
+#endif
+    return XtCalloc(num, size);
+}
+
+#ifndef HEAP_SEGMENT_SIZE
+#define HEAP_SEGMENT_SIZE 1492
+#endif
+
+char* _XtHeapAlloc(
+    Heap*	heap,
+    Cardinal	bytes)
+{
+    register char* heap_loc;
+    if (heap == NULL) return XtMalloc(bytes);
+    if (heap->bytes_remaining < (int)bytes) {
+	if ((bytes + sizeof(char*)) >= (HEAP_SEGMENT_SIZE>>1)) {
+	    /* preserve current segment; insert this one in front */
+#ifdef _TRACE_HEAP
+	    printf( "allocating large segment (%d bytes) on heap %#x\n",
+		    bytes, heap );
+#endif
+	    heap_loc = XtMalloc(bytes + sizeof(char*));
+	    if (heap->start) {
+		*(char**)heap_loc = *(char**)heap->start;
+		*(char**)heap->start = heap_loc;
+	    }
+	    else {
+		*(char**)heap_loc = NULL;
+		heap->start = heap_loc;
+	    }
+	    return heap_loc + sizeof(char*);
+	}
+	/* else discard remainder of this segment */
+#ifdef _TRACE_HEAP
+	printf( "allocating new segment on heap %#x\n", heap );
+#endif
+	heap_loc = XtMalloc((unsigned)HEAP_SEGMENT_SIZE);
+	*(char**)heap_loc = heap->start;
+	heap->start = heap_loc;
+	heap->current = heap_loc + sizeof(char*);
+	heap->bytes_remaining = HEAP_SEGMENT_SIZE - sizeof(char*);
+    }
+    bytes = (bytes + (sizeof(long) - 1)) & (~(sizeof(long) - 1));
+    heap_loc = heap->current;
+    heap->current += bytes;
+    heap->bytes_remaining -= bytes; /* can be negative, if rounded */
+    return heap_loc;
+}
+
+void _XtHeapFree(
+    Heap*	heap)
+{
+    char* segment = heap->start;
+    while (segment != NULL) {
+	char* next_segment = *(char**)segment;
+	XtFree(segment);
+	segment = next_segment;
+    }
+    heap->start = NULL;
+    heap->bytes_remaining = 0;
+}
+
+#else
+
+/*
+ * X Toolkit Memory Trace Allocation Routines
+ */
+
+#undef XtMalloc
+#undef XtRealloc
+#undef XtCalloc
+#undef XtFree
+
+typedef struct _Stats *StatsPtr;
+typedef struct _Stats {
+    StatsPtr prev, next;
+    char *file;
+    int line;
+    unsigned size;
+    unsigned long seq;
+    XtPointer heap;
+} Stats;
+
+static StatsPtr XtMemory = (StatsPtr)NULL;
+static unsigned long ActiveXtMemory = 0;
+static unsigned long XtSeqId = 0;
+static unsigned long XtSeqBreakpoint = ~0;
+
+#define StatsSize(n) ((((n) + (sizeof(long) - 1)) & ~(sizeof(long) - 1)) + sizeof(Stats))
+#define ToStats(ptr) ((StatsPtr)(ptr - sizeof(Stats)))
+#define ToMem(ptr) (((char *)ptr) + sizeof(Stats))
+
+#define CHAIN(ptr,len,hp) \
+    ptr->next = XtMemory; \
+    if (XtMemory) \
+        XtMemory->prev = ptr; \
+    XtMemory = ptr; \
+    ptr->prev = (StatsPtr)NULL; \
+    ptr->file = file; \
+    ptr->line = line; \
+    ptr->size = len; \
+    ptr->heap = hp; \
+    if (file) \
+	ActiveXtMemory += len; \
+    ptr->seq = XtSeqId; \
+    if (XtSeqId == XtSeqBreakpoint) \
+	_XtBreakpoint(ptr); \
+    XtSeqId++
+
+/*ARGUSED*/
+static void _XtBreakpoint(
+    StatsPtr mem)
+{
+    mem->seq = XtSeqId; /* avoid being optimized out of existence */
+}
+
+char *_XtMalloc(
+    unsigned size,
+    char *file,
+    int line)
+{
+    StatsPtr ptr;
+    unsigned newsize;
+    char* retval = NULL;
+
+    LOCK_PROCESS;
+    newsize = StatsSize(size);
+    if ((ptr = (StatsPtr)Xmalloc(newsize)) == NULL)
+        _XtAllocError("malloc");
+    CHAIN(ptr, size, NULL);
+    retval = (ToMem(ptr));
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+char *XtMalloc(
+    unsigned size)
+{
+    return _XtMalloc(size, (char *)NULL, 0);
+}
+
+char *_XtRealloc(
+    char     *ptr,
+    unsigned size,
+    char *file,
+    int line)
+{
+   char *newptr;
+
+   LOCK_PROCESS;
+   newptr = _XtMalloc(size, file, line);
+   if (ptr) {
+       unsigned copysize = ToStats(ptr)->size;
+       if (copysize > size) copysize = size;
+       memmove(newptr, ptr, copysize);
+       _XtFree(ptr);
+   }
+   UNLOCK_PROCESS;
+   return(newptr);
+}
+
+char *XtRealloc(
+    char     *ptr,
+    unsigned size)
+{
+    return _XtRealloc(ptr, size, (char *)NULL, 0);
+}
+
+char *_XtCalloc(
+    unsigned num, unsigned size,
+    char *file,
+    int line)
+{
+    StatsPtr ptr;
+    unsigned total, newsize;
+    char* retval = NULL;
+
+    LOCK_PROCESS;
+    total = num * size;
+    newsize = StatsSize(total);
+    if ((ptr = (StatsPtr)Xcalloc(newsize, 1)) == NULL)
+        _XtAllocError("calloc");
+    CHAIN(ptr, total, NULL);
+    retval = (ToMem(ptr));
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+char *XtCalloc(
+    unsigned num, unsigned size)
+{
+    return _XtCalloc(num, size, (char *)NULL, 0);
+}
+
+Boolean _XtIsValidPointer(
+    char *ptr)
+{
+    register StatsPtr mem;
+    register StatsPtr stp = ToStats(ptr);
+
+    LOCK_PROCESS;
+    for (mem = XtMemory; mem; mem = mem->next) {
+	if (mem == stp) {
+	    UNLOCK_PROCESS;
+	    return True;
+	}
+    }
+    UNLOCK_PROCESS;
+    return False;
+}
+
+Boolean _XtValidateMemory = False;
+
+void _XtFree(
+    char *ptr)
+{
+   register StatsPtr stp;
+
+   LOCK_PROCESS;
+   if (ptr) {
+       if (_XtValidateMemory && !_XtIsValidPointer(ptr))
+	   abort();
+       stp = ToStats(ptr);
+       if (stp->file)
+	   ActiveXtMemory -= stp->size;
+       if (stp->prev)
+	   stp->prev->next = stp->next;
+       else
+	   XtMemory = stp->next;
+       if (stp->next)
+	   stp->next->prev = stp->prev;
+       Xfree((char *)stp);
+   }
+   UNLOCK_PROCESS;
+}
+
+void XtFree(char *ptr)
+{
+   _XtFree(ptr);
+}
+
+char *_XtHeapMalloc(
+    Heap *heap,
+    Cardinal size,
+    char *file,
+    int line)
+{
+    StatsPtr ptr;
+    unsigned newsize;
+    XtPointer hp = (XtPointer) heap;
+    char* retval = NULL;
+
+    LOCK_PROCESS;
+    newsize = StatsSize(size);
+    if ((ptr = (StatsPtr)Xmalloc(newsize)) == NULL)
+        _XtAllocError("malloc");
+    CHAIN(ptr, size, hp);
+    retval = (ToMem(ptr));
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+void _XtHeapFree(register XtPointer heap)
+{
+    register StatsPtr mem, next;
+
+    LOCK_PROCESS;
+    for (mem = XtMemory; mem; mem = next) {
+	next = mem->next;
+	if (mem->heap == heap) {
+	    if (mem->file)
+		ActiveXtMemory -= mem->size;
+	    if (mem->prev)
+		mem->prev->next = next;
+	    else
+		XtMemory = next;
+	    if (next)
+		next->prev = mem->prev;
+	    Xfree((char *)mem);
+	}
+    }
+    UNLOCK_PROCESS;
+}
+
+#include <stdio.h>
+
+void _XtPrintMemory(char * filename)
+{
+    register StatsPtr mem;
+    FILE *f;
+
+    if (filename == NULL)
+	f = stderr;
+    else 
+	f = fopen(filename, "w");
+    LOCK_PROCESS;
+    fprintf(f, "total size: %d\n", ActiveXtMemory);
+    for (mem = XtMemory; mem; mem = mem->next) {
+	if (mem->file)
+	    fprintf(f, "size: %6d  seq: %5d  %12s(%4d)  %s\n",
+		    mem->size, mem->seq,
+		    mem->file, mem->line, mem->heap ? "heap" : "");
+    }
+    UNLOCK_PROCESS;
+    if (filename) fclose(f);
+}
+
+#endif  /* XTTRACEMEMORY */
diff --git a/libXt/src/ArgList.c b/libXt/src/ArgList.c
new file mode 100644
index 000000000..622f31351
--- /dev/null
+++ b/libXt/src/ArgList.c
@@ -0,0 +1,77 @@
+/* $Xorg: ArgList.c,v 1.4 2001/02/09 02:03:53 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include	"IntrinsicI.h"
+#include	<stdio.h>
+
+/*
+ * This routine merges two arglists. It does NOT check for duplicate entries.
+ */
+
+ArgList XtMergeArgLists(
+    ArgList args1,
+    Cardinal num_args1,
+    ArgList args2,
+    Cardinal num_args2)
+{
+    ArgList result, args;
+
+    result = (ArgList) __XtCalloc((unsigned) num_args1 + num_args2,
+				(unsigned) sizeof(Arg));
+
+    for (args = result; num_args1 != 0; num_args1--)
+    	*args++ = *args1++;
+    for (             ; num_args2 != 0; num_args2--)
+    	*args++ = *args2++;
+
+    return result;
+}
diff --git a/libXt/src/Callback.c b/libXt/src/Callback.c
new file mode 100644
index 000000000..03aae5274
--- /dev/null
+++ b/libXt/src/Callback.c
@@ -0,0 +1,692 @@
+/* $Xorg: Callback.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Callback.c,v 1.8 2001/12/14 19:56:08 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+static String XtNinvalidCallbackList = "invalidCallbackList";
+static String XtNxtAddCallback = "xtAddCallback";
+static String XtNxtRemoveCallback = "xtRemoveCallback";
+static String XtNxtRemoveAllCallback = "xtRemoveAllCallback";
+static String XtNxtCallCallback = "xtCallCallback";
+
+/* However it doesn't contain a final NULL record */
+#define ToList(p) ((XtCallbackList) ((p)+1))
+
+static InternalCallbackList* FetchInternalList(
+    Widget	widget,
+    _Xconst char *name)
+{
+    XrmQuark quark;
+    int n;
+    CallbackTable offsets;
+    InternalCallbackList* retval = NULL;
+
+    quark = StringToQuark(name);
+    LOCK_PROCESS;
+    offsets = (CallbackTable)
+	widget->core.widget_class->core_class.callback_private;
+
+    for (n = (int)(long) *(offsets++); --n >= 0; offsets++)
+	if (quark == (*offsets)->xrm_name) {
+	    retval = (InternalCallbackList *)
+		((char *) widget - (*offsets)->xrm_offset - 1);
+	    break;
+	}
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+
+void _XtAddCallback(
+    InternalCallbackList*   callbacks,
+    XtCallbackProc	    callback,
+    XtPointer		    closure)
+{
+    register InternalCallbackList icl;
+    register XtCallbackList cl;
+    register int count;
+
+    icl = *callbacks;
+    count = icl ? icl->count : 0;
+
+    if (icl && icl->call_state) {
+	icl->call_state |= _XtCBFreeAfterCalling;
+	icl = (InternalCallbackList)
+	    __XtMalloc(sizeof(InternalCallbackRec) +
+		     sizeof(XtCallbackRec) * (count + 1));
+	(void) memmove((char *)ToList(icl), (char *)ToList(*callbacks),
+		       sizeof(XtCallbackRec) * count);
+    } else {
+	icl = (InternalCallbackList)
+	    XtRealloc((char *) icl, sizeof(InternalCallbackRec) +
+		      sizeof(XtCallbackRec) * (count + 1));
+    }
+    *callbacks = icl;
+    icl->count = count + 1;
+    icl->is_padded = 0;
+    icl->call_state = 0;
+    cl = ToList(icl) + count;
+    cl->callback = callback;
+    cl->closure = closure;
+} /* _XtAddCallback */
+
+void _XtAddCallbackOnce(
+    register InternalCallbackList*callbacks,
+    XtCallbackProc	    callback,
+    XtPointer		    closure)
+{
+    register XtCallbackList cl = ToList(*callbacks);
+    register int i;
+
+    for (i=(*callbacks)->count; --i >= 0; cl++)
+	if (cl->callback == callback && cl->closure == closure)
+	    return;
+
+    _XtAddCallback(callbacks, callback, closure);
+} /* _XtAddCallbackOnce */
+
+void XtAddCallback(
+    Widget	    widget,
+    _Xconst char*   name,
+    XtCallbackProc  callback,
+    XtPointer	    closure
+    )
+{
+    InternalCallbackList *callbacks;
+    Widget hookobj;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, name);
+    if (!callbacks) {
+	XtAppWarningMsg(app,
+	       XtNinvalidCallbackList,XtNxtAddCallback,XtCXtToolkitError,
+              "Cannot find callback list in XtAddCallback",
+	      (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+    _XtAddCallback(callbacks, callback, closure);
+    if (!_XtIsHookObject(widget)) {
+	hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+	if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	    XtChangeHookDataRec call_data;
+
+	    call_data.type = XtHaddCallback;
+	    call_data.widget = widget;
+	    call_data.event_data = (XtPointer) name;
+	    XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+	}
+    }
+    UNLOCK_APP(app);
+} /* XtAddCallback */
+
+/* ARGSUSED */
+static void AddCallbacks(
+    Widget		    widget,
+    InternalCallbackList   *callbacks,
+    XtCallbackList	    newcallbacks)
+{
+    register InternalCallbackList icl;
+    register int i, j;
+    register XtCallbackList cl;
+
+    icl = *callbacks;
+    i = icl ? icl->count : 0;
+    for (j=0, cl = newcallbacks; cl->callback; cl++, j++);
+    if (icl && icl->call_state) {
+	icl->call_state |= _XtCBFreeAfterCalling;
+	icl = (InternalCallbackList) __XtMalloc(sizeof(InternalCallbackRec) +
+					      sizeof(XtCallbackRec) * (i+j));
+	(void) memmove((char *)ToList(*callbacks), (char *)ToList(icl),
+		       sizeof(XtCallbackRec) * i);
+    } else {
+	icl = (InternalCallbackList) XtRealloc((char *) icl,
+					       sizeof(InternalCallbackRec) +
+					       sizeof(XtCallbackRec) * (i+j));
+    }
+    *callbacks = icl;
+    icl->count = i+j;
+    icl->is_padded = 0;
+    icl->call_state = 0;
+    for (cl = ToList(icl) + i; --j >= 0; )
+	*cl++ = *newcallbacks++;
+} /* AddCallbacks */
+
+void XtAddCallbacks(
+    Widget	    widget,
+    _Xconst char*   name,
+    XtCallbackList  xtcallbacks
+    )
+{
+    InternalCallbackList* callbacks;
+    Widget hookobj;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, name);
+    if (!callbacks) {
+	XtAppWarningMsg(app,
+	       XtNinvalidCallbackList,XtNxtAddCallback,XtCXtToolkitError,
+              "Cannot find callback list in XtAddCallbacks",
+	      (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+    AddCallbacks(widget, callbacks, xtcallbacks);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHaddCallbacks;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) name;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtAddCallbacks */
+
+void _XtRemoveCallback (
+    InternalCallbackList   *callbacks,
+    XtCallbackProc	    callback,
+    XtPointer		    closure)
+{
+    register InternalCallbackList icl;
+    register int i, j;
+    register XtCallbackList cl, ncl, ocl;
+
+    icl = *callbacks;
+    if (!icl) return;
+
+    cl = ToList(icl);
+    for (i=icl->count; --i >= 0; cl++) {
+	if (cl->callback == callback && cl->closure == closure) {
+	    if (icl->call_state) {
+		icl->call_state |= _XtCBFreeAfterCalling;
+		if (icl->count == 1) {
+		    *callbacks = NULL;
+		} else {
+		    j = icl->count - i - 1;
+		    ocl = ToList(icl);
+		    icl = (InternalCallbackList)
+			__XtMalloc(sizeof(InternalCallbackRec) +
+				 sizeof(XtCallbackRec) * (i + j));
+		    icl->count = i + j;
+		    icl->is_padded = 0;
+		    icl->call_state = 0;
+		    ncl = ToList(icl);
+		    while (--j >= 0)
+			*ncl++ = *ocl++;
+		    while (--i >= 0)
+			*ncl++ = *++cl;
+		    *callbacks = icl;
+		}
+	    } else {
+		if (--icl->count) {
+		    ncl = cl + 1;
+		    while (--i >= 0)
+			*cl++ = *ncl++;
+		    icl = (InternalCallbackList)
+			XtRealloc((char *) icl, sizeof(InternalCallbackRec)
+				  + sizeof(XtCallbackRec) * icl->count);
+		    icl->is_padded = 0;
+		    *callbacks = icl;
+		} else {
+		    XtFree((char *) icl);
+		    *callbacks = NULL;
+		}
+	    }
+	    return;
+	}
+    }
+} /* _XtRemoveCallback */
+
+void XtRemoveCallback (
+    Widget	    widget,
+    _Xconst char*   name,
+    XtCallbackProc  callback,
+    XtPointer	    closure
+    )
+{
+    InternalCallbackList *callbacks;
+    Widget hookobj;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, name);
+    if (!callbacks) {
+	XtAppWarningMsg(app,
+	       XtNinvalidCallbackList,XtNxtRemoveCallback,XtCXtToolkitError,
+              "Cannot find callback list in XtRemoveCallback",
+	      (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+    _XtRemoveCallback(callbacks, callback, closure);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHremoveCallback;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) name;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtRemoveCallback */
+
+
+void XtRemoveCallbacks (
+    Widget	    widget,
+    _Xconst char*   name,
+    XtCallbackList  xtcallbacks)
+{
+    InternalCallbackList *callbacks;
+    Widget hookobj;
+    int i;
+    InternalCallbackList icl;
+    XtCallbackList cl, ccl, rcl;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, name);
+    if (!callbacks) {
+	XtAppWarningMsg(app,
+	       XtNinvalidCallbackList,XtNxtRemoveCallback,XtCXtToolkitError,
+              "Cannot find callback list in XtRemoveCallbacks",
+	      (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+
+    icl = *callbacks;
+    if (!icl) {
+	UNLOCK_APP(app);
+	return;
+    }
+
+    i = icl->count;
+    cl = ToList(icl);
+    if (icl->call_state) {
+	icl->call_state |= _XtCBFreeAfterCalling;
+	icl = (InternalCallbackList)__XtMalloc(sizeof(InternalCallbackRec) +
+					     sizeof(XtCallbackRec) * i);
+	icl->count = i;
+	icl->call_state = 0;
+    }
+    ccl = ToList(icl);
+    while (--i >= 0) {
+	*ccl++ = *cl;
+	for (rcl=xtcallbacks; rcl->callback; rcl++) {
+	    if (cl->callback == rcl->callback && cl->closure == rcl->closure) {
+		ccl--;
+		icl->count--;
+		break;
+	    }
+	}
+	cl++;
+    }
+    if (icl->count) {
+	icl = (InternalCallbackList)
+	    XtRealloc((char *)icl, (sizeof(InternalCallbackRec) +
+				    sizeof(XtCallbackRec) * icl->count));
+	icl->is_padded = 0;
+	*callbacks = icl;
+    } else {
+	XtFree((char *)icl);
+	*callbacks = NULL;
+    }
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHremoveCallbacks;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) name;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtRemoveCallbacks */
+
+
+void _XtRemoveAllCallbacks (
+    InternalCallbackList *callbacks)
+{
+    register InternalCallbackList icl = *callbacks;
+
+    if (icl) {
+	if (icl->call_state)
+	    icl->call_state |= _XtCBFreeAfterCalling;
+	else
+	    XtFree((char *) icl);
+	*callbacks = NULL;
+    }
+} /* _XtRemoveAllCallbacks */
+
+void XtRemoveAllCallbacks(
+    Widget widget,
+    _Xconst char* name)
+{
+    InternalCallbackList *callbacks;
+    Widget hookobj;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, name);
+    if (!callbacks) {
+	XtAppWarningMsg(app,
+	       XtNinvalidCallbackList,XtNxtRemoveAllCallback,XtCXtToolkitError,
+              "Cannot find callback list in XtRemoveAllCallbacks",
+	      (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+    _XtRemoveAllCallbacks(callbacks);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHremoveAllCallbacks;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) name;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtRemoveAllCallbacks */
+
+InternalCallbackList _XtCompileCallbackList(
+    XtCallbackList xtcallbacks)
+{
+    register int n;
+    register XtCallbackList xtcl, cl;
+    register InternalCallbackList callbacks;
+
+    for (n=0, xtcl=xtcallbacks; xtcl->callback; n++, xtcl++) {};
+    if (n == 0) return (InternalCallbackList) NULL;
+
+    callbacks = (InternalCallbackList) __XtMalloc(sizeof(InternalCallbackRec) +
+						sizeof(XtCallbackRec) * n);
+    callbacks->count = n;
+    callbacks->is_padded = 0;
+    callbacks->call_state = 0;
+    cl = ToList(callbacks);
+    while (--n >= 0)
+	*cl++ = *xtcallbacks++;
+    return(callbacks);
+} /* _XtCompileCallbackList */
+
+
+XtCallbackList _XtGetCallbackList(
+    InternalCallbackList *callbacks)
+{
+    register int i;
+    register InternalCallbackList icl;
+    register XtCallbackList cl, ocl;
+
+    icl = *callbacks;
+    if (!icl) {
+	static XtCallbackRec emptyList[1] = { {NULL, NULL} };
+	return (XtCallbackList)emptyList;
+    }
+    if (icl->is_padded)
+	return ToList(icl);
+    i = icl->count;
+    if (icl->call_state) {
+	icl->call_state |= _XtCBFreeAfterCalling;
+	ocl = ToList(icl);
+	icl = (InternalCallbackList) __XtMalloc(sizeof(InternalCallbackRec) +
+					      sizeof(XtCallbackRec) * (i+1));
+	icl->count = i;
+	icl->call_state = 0;
+	cl = ToList(icl);
+	while (--i >= 0)
+	    *cl++ = *ocl++;
+    } else {
+	icl = (InternalCallbackList) XtRealloc((char *)icl,
+					       sizeof(InternalCallbackRec) +
+					       sizeof(XtCallbackRec) * (i+1));
+	cl = ToList(icl) + i;
+    }
+    icl->is_padded = 1;
+    cl->callback = (XtCallbackProc) NULL;
+    cl->closure = NULL;
+    *callbacks = icl;
+    return ToList(icl);
+}
+
+void XtCallCallbacks(
+    Widget   widget,
+    _Xconst char* name,
+    XtPointer call_data
+    )
+{
+    InternalCallbackList *callbacks;
+    InternalCallbackList icl;
+    XtCallbackList cl;
+    int i;
+    char ostate;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, name);
+    if (!callbacks) {
+	XtAppWarningMsg(app,
+	       XtNinvalidCallbackList,XtNxtCallCallback,XtCXtToolkitError,
+              "Cannot find callback list in XtCallCallbacks",
+	      (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+
+    icl = *callbacks;
+    if (!icl) {
+	UNLOCK_APP(app);
+	return;
+    }
+    cl = ToList(icl);
+    if (icl->count == 1) {
+	(*cl->callback) (widget, cl->closure, call_data);
+	UNLOCK_APP(app);
+	return;
+    }
+    ostate = icl->call_state;
+    icl->call_state = _XtCBCalling;
+    for (i = icl->count; --i >= 0; cl++)
+	(*cl->callback) (widget, cl->closure, call_data);
+    if (ostate)
+	icl->call_state |= ostate;
+    else if (icl->call_state & _XtCBFreeAfterCalling)
+	XtFree((char *)icl);
+    else
+	icl->call_state = ostate;
+    UNLOCK_APP(app);
+} /* XtCallCallbacks */
+
+
+XtCallbackStatus XtHasCallbacks(
+     Widget		widget,
+     _Xconst char*	callback_name
+     )
+{
+    InternalCallbackList *callbacks;
+    XtCallbackStatus retval = XtCallbackHasSome;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    callbacks = FetchInternalList(widget, callback_name);
+    if (!callbacks)
+	retval = XtCallbackNoList;
+    else if (!*callbacks)
+	retval = XtCallbackHasNone;
+    UNLOCK_APP(app);
+    return retval;
+} /* XtHasCallbacks */
+
+
+void XtCallCallbackList(
+    Widget widget,
+    XtCallbackList callbacks,
+    XtPointer call_data)
+{
+    register InternalCallbackList icl;
+    register XtCallbackList cl;
+    register int i;
+    char ostate;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (!callbacks) {
+	UNLOCK_APP(app);
+	return;
+    }
+    icl = (InternalCallbackList)callbacks;
+    cl = ToList(icl);
+    if (icl->count == 1) {
+	(*cl->callback) (widget, cl->closure, call_data);
+	UNLOCK_APP(app);
+	return;
+    }
+    ostate = icl->call_state;
+    icl->call_state = _XtCBCalling;
+    for (i = icl->count; --i >= 0; cl++)
+	(*cl->callback) (widget, cl->closure, call_data);
+    if (ostate)
+	icl->call_state |= ostate;
+    else if (icl->call_state & _XtCBFreeAfterCalling)
+	XtFree((char *)icl);
+    else
+	icl->call_state = 0;
+    UNLOCK_APP(app);
+} /* XtCallCallbackList */
+
+void _XtPeekCallback(
+    Widget widget,
+    XtCallbackList callbacks,
+    XtCallbackProc *callback,
+    XtPointer *closure)
+{
+    register InternalCallbackList icl = (InternalCallbackList) callbacks;
+    register XtCallbackList cl;
+
+    if (!callbacks) {
+	*callback = (XtCallbackProc) NULL;
+	return;
+    }
+    cl = ToList(icl);
+    *callback = cl->callback;
+    *closure = cl->closure;
+    return;
+}
+
+void _XtCallConditionalCallbackList(
+    Widget widget,
+    XtCallbackList callbacks,
+    XtPointer call_data,
+    _XtConditionProc cond_proc)
+{
+    register InternalCallbackList icl;
+    register XtCallbackList cl;
+    register int i;
+    char ostate;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (!callbacks) {
+	UNLOCK_APP(app);
+	return;
+    }
+    icl = (InternalCallbackList)callbacks;
+    cl = ToList(icl);
+    if (icl->count == 1) {
+	(*cl->callback) (widget, cl->closure, call_data);
+	(void) (*cond_proc)(call_data);
+	UNLOCK_APP(app);
+	return;
+    }
+    ostate = icl->call_state;
+    icl->call_state = _XtCBCalling;
+    for (i = icl->count; --i >= 0; cl++) {
+	(*cl->callback) (widget, cl->closure, call_data);
+	if (! (*cond_proc)(call_data))
+	    break;
+    }
+    if (ostate)
+	icl->call_state |= ostate;
+    else if (icl->call_state & _XtCBFreeAfterCalling)
+	XtFree((char *)icl);
+    else
+	icl->call_state = 0;
+    UNLOCK_APP(app);
+}
diff --git a/libXt/src/ClickTime.c b/libXt/src/ClickTime.c
new file mode 100644
index 000000000..bfebd421f
--- /dev/null
+++ b/libXt/src/ClickTime.c
@@ -0,0 +1,93 @@
+/* $Xorg: ClickTime.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+/*
+ * Contains XtSetMultiClickTime, XtGetMultiClickTime
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+void XtSetMultiClickTime(
+    Display *dpy,
+    int time)
+{
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    _XtGetPerDisplay(dpy)->multi_click_time = time;
+    UNLOCK_APP(app);
+}
+
+
+int XtGetMultiClickTime(
+    Display *dpy)
+{
+    int retval;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    retval = _XtGetPerDisplay(dpy)->multi_click_time;
+    UNLOCK_APP(app);
+    return retval;
+}
diff --git a/libXt/src/Composite.c b/libXt/src/Composite.c
new file mode 100644
index 000000000..c5fbf125f
--- /dev/null
+++ b/libXt/src/Composite.c
@@ -0,0 +1,283 @@
+/* $Xorg: Composite.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital, or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Composite.c,v 1.5 2001/08/22 22:52:17 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+
+static XtResource resources[] = {
+    {XtNchildren, XtCReadOnly, XtRWidgetList, sizeof(WidgetList),
+     XtOffsetOf(CompositeRec, composite.children), XtRImmediate, NULL},
+    {XtNnumChildren, XtCReadOnly, XtRCardinal, sizeof(Cardinal),
+     XtOffsetOf(CompositeRec, composite.num_children), XtRImmediate, NULL},
+    {XtNinsertPosition, XtCInsertPosition, XtRFunction, sizeof(XtOrderProc),
+     XtOffsetOf(CompositeRec, composite.insert_position), XtRImmediate, NULL},
+};
+
+static void CompositeClassPartInitialize(WidgetClass);
+static void CompositeInitialize(Widget, Widget, ArgList, Cardinal *);
+static void CompositeInsertChild(Widget);
+static void CompositeDeleteChild(Widget);
+static void CompositeDestroy(Widget);
+
+externaldef(compositeclassrec) CompositeClassRec compositeClassRec = {
+  { /******* CorePart *******/
+    /* superclass	    */	&widgetClassRec,
+    /* class_name	    */	"Composite",
+    /* widget_size	    */	sizeof(CompositeRec),
+    /* class_initialize     */  NULL,
+    /* class_part_initialize*/	CompositeClassPartInitialize,
+    /* class_inited	    */	FALSE,
+    /* initialize	    */	CompositeInitialize,
+    /* initialize_hook      */	NULL,
+    /* realize		    */	XtInheritRealize,
+    /* actions		    */	NULL,
+    /* num_actions	    */	0,
+    /* resources	    */	resources,
+    /* num_resources	    */	XtNumber(resources),
+    /* xrm_class	    */	NULLQUARK,
+    /* compress_motion      */	FALSE,
+    /* compress_exposure    */	TRUE,
+    /* compress_enterleave  */  FALSE,
+    /* visible_interest     */	FALSE,
+    /* destroy		    */	CompositeDestroy,
+    /* resize		    */	NULL,
+    /* expose		    */	NULL,
+    /* set_values	    */	NULL,
+    /* set_values_hook      */	NULL,
+    /* set_values_almost    */	XtInheritSetValuesAlmost,
+    /* get_values_hook      */	NULL,
+    /* accept_focus	    */	NULL,
+    /* version		    */	XtVersion,
+    /* callback_offsets     */  NULL,
+    /* tm_table		    */  NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */	NULL,
+    /* extension	    */  NULL
+  },
+  { /**** CompositePart *****/
+    /* geometry_handler     */  NULL,
+    /* change_managed       */  NULL,
+    /* insert_child	    */  CompositeInsertChild,
+    /* delete_child	    */  CompositeDeleteChild,
+    /* extension	    */  NULL
+    }
+};
+
+externaldef(compositewidgetclass) WidgetClass compositeWidgetClass = (WidgetClass) &compositeClassRec;
+
+static void InheritAllowsChangeManagedSet(
+    WidgetClass widget_class)
+{
+    CompositeWidgetClass cc = (CompositeWidgetClass) widget_class;
+    CompositeClassExtension ext, super_ext, new_ext;
+
+    ext = (CompositeClassExtension)
+	XtGetClassExtension(widget_class,
+		    XtOffsetOf(CompositeClassRec, composite_class.extension),
+			    NULLQUARK, 1L, 0);
+
+    if (ext && ext->version == XtCompositeExtensionVersion)
+	return;
+
+    super_ext = (CompositeClassExtension)
+	XtGetClassExtension(cc->core_class.superclass,
+		    XtOffsetOf(CompositeClassRec, composite_class.extension),
+			    NULLQUARK, 1L, 0);
+
+    LOCK_PROCESS;
+    if (super_ext && super_ext->version == XtCompositeExtensionVersion &&
+	super_ext->record_size == sizeof(CompositeClassExtensionRec) &&
+	super_ext->allows_change_managed_set) {
+
+	new_ext = (CompositeClassExtension)
+	    __XtCalloc(1, sizeof(CompositeClassExtensionRec));
+
+	/* Be careful to inherit only what is appropriate */
+	new_ext->next_extension = cc->composite_class.extension;
+	new_ext->record_type = NULLQUARK;
+	new_ext->version = XtCompositeExtensionVersion;
+	new_ext->record_size = sizeof(CompositeClassExtensionRec);
+	new_ext->accepts_objects = (ext ? ext->accepts_objects : False);
+	new_ext->allows_change_managed_set = True;
+	cc->composite_class.extension = (XtPointer) new_ext;
+    }
+    UNLOCK_PROCESS;
+}
+
+static void CompositeClassPartInitialize(
+	WidgetClass widgetClass)
+{
+    register CompositePartPtr wcPtr;
+    register CompositePartPtr superPtr = NULL;
+
+    wcPtr = (CompositePartPtr)
+	&(((CompositeWidgetClass)widgetClass)->composite_class);
+
+    if (widgetClass != compositeWidgetClass)
+	/* don't compute possible bogus pointer */
+	superPtr = (CompositePartPtr)&(((CompositeWidgetClass)widgetClass
+			->core_class.superclass)->composite_class);
+
+    /* We don't need to check for null super since we'll get to composite
+       eventually, and it had better define them!  */
+
+    LOCK_PROCESS;
+    if (wcPtr->geometry_manager == XtInheritGeometryManager) {
+	wcPtr->geometry_manager =
+		superPtr->geometry_manager;
+    }
+
+    if (wcPtr->change_managed == XtInheritChangeManaged) {
+	wcPtr->change_managed =
+		superPtr->change_managed;
+	InheritAllowsChangeManagedSet(widgetClass);
+    }
+
+    if (wcPtr->insert_child == XtInheritInsertChild) {
+	wcPtr->insert_child = superPtr->insert_child;
+    }
+
+    if (wcPtr->delete_child == XtInheritDeleteChild) {
+	wcPtr->delete_child = superPtr->delete_child;
+    }
+    UNLOCK_PROCESS;
+}
+
+static void CompositeDestroy(
+    Widget	w)
+{
+    register CompositeWidget cw = (CompositeWidget) w;
+
+    XtFree((char *) cw->composite.children);
+}
+
+static void CompositeInsertChild(
+    Widget	w)
+{
+    register Cardinal	     position;
+    register Cardinal        i;
+    register CompositeWidget cw;
+    register WidgetList      children;
+
+    cw = (CompositeWidget) w->core.parent;
+    children = cw->composite.children;
+
+    if (cw->composite.insert_position != NULL)
+	position = (*(cw->composite.insert_position))(w);
+    else
+	position = cw->composite.num_children;
+
+    if (cw->composite.num_children == cw->composite.num_slots) {
+	/* Allocate more space */
+	cw->composite.num_slots +=  (cw->composite.num_slots / 2) + 2;
+	cw->composite.children = children =
+	    (WidgetList) XtRealloc((XtPointer) children,
+	    (unsigned) (cw->composite.num_slots) * sizeof(Widget));
+    }
+    /* Ripple children up one space from "position" */
+    for (i = cw->composite.num_children; i > position; i--) {
+	children[i] = children[i-1];
+    }
+    children[position] = w;
+    cw->composite.num_children++;
+}
+
+static void CompositeDeleteChild(
+    Widget	w)
+{
+    register Cardinal	     position;
+    register Cardinal	     i;
+    register CompositeWidget cw;
+
+    cw = (CompositeWidget) w->core.parent;
+
+    for (position = 0; position < cw->composite.num_children; position++) {
+        if (cw->composite.children[position] == w) {
+	    break;
+	}
+    }
+    if (position == cw->composite.num_children) return;
+
+    /* Ripple children down one space from "position" */
+    cw->composite.num_children--;
+    for (i = position; i < cw->composite.num_children; i++) {
+        cw->composite.children[i] = cw->composite.children[i+1];
+    }
+}
+
+/* ARGSUSED */
+static void CompositeInitialize(
+    Widget   requested_widget,
+    Widget   new_widget,
+    ArgList args,
+    Cardinal *num_args)
+{
+    register CompositeWidget cw;
+
+    cw = (CompositeWidget) new_widget;
+    cw->composite.num_children = 0;
+    cw->composite.children = NULL;
+    cw->composite.num_slots = 0;
+}
diff --git a/libXt/src/Constraint.c b/libXt/src/Constraint.c
new file mode 100644
index 000000000..aeb6e3891
--- /dev/null
+++ b/libXt/src/Constraint.c
@@ -0,0 +1,133 @@
+/* $Xorg: Constraint.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Constraint.c,v 1.2 2001/08/22 22:52:17 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+
+static void ConstraintPartInitialize(WidgetClass wc);
+externaldef(constraintclassrec) ConstraintClassRec constraintClassRec = {
+  { /******* CorePart *******/
+    /* superclass	    */	(WidgetClass) &compositeClassRec,
+    /* class_name	    */	"Constraint",
+    /* widget_size	    */	sizeof(ConstraintRec),
+    /* class_initialize     */  NULL,
+    /* class_part_initialize*/	ConstraintPartInitialize,
+    /* class_inited	    */	FALSE,
+    /* initialize	    */	NULL,
+    /* initialize_hook      */	NULL,
+    /* realize		    */	XtInheritRealize,
+    /* actions		    */	NULL,
+    /* num_actions	    */	0,
+    /* resources	    */	NULL,
+    /* num_resources	    */	0,
+    /* xrm_class	    */	NULLQUARK,
+    /* compress_motion      */	FALSE,
+    /* compress_exposure    */	TRUE,
+    /* compress_enterleave  */  FALSE,
+    /* visible_interest     */	FALSE,
+    /* destroy		    */	NULL,
+    /* resize		    */	NULL,
+    /* expose		    */	NULL,
+    /* set_values	    */	NULL,
+    /* set_values_hook      */	NULL,
+    /* set_values_almost    */	XtInheritSetValuesAlmost,
+    /* get_values_hook      */	NULL,
+    /* accept_focus	    */	NULL,
+    /* version		    */	XtVersion,
+    /* callback_offsets     */  NULL,
+    /* tm_table		    */  NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */  NULL,
+    /* extension	    */  NULL
+  },{ /**** CompositePart *****/
+    /* geometry_handler     */  NULL,
+    /* change_managed       */  NULL,
+    /* insert_child	    */  XtInheritInsertChild,
+    /* delete_child	    */  XtInheritDeleteChild,
+    /* extension	    */  NULL
+  },{ /**** ConstraintPart ****/
+    /* resources	    */  NULL,
+    /* num_resources	    */  0,
+    /* constraint_size      */  0,
+    /* initialize	    */  NULL,
+    /* destroy		    */  NULL,
+    /* set_values	    */  NULL,
+    /* extension	    */  NULL
+  }
+};
+
+externaldef(constraintwidgetclass) WidgetClass constraintWidgetClass =
+	(WidgetClass) &constraintClassRec;
+
+
+static void ConstraintPartInitialize(WidgetClass wc)
+{
+    ConstraintWidgetClass cwc = (ConstraintWidgetClass)wc;
+    if (cwc->constraint_class.resources)
+	_XtCompileResourceList(cwc->constraint_class.resources,
+			       cwc->constraint_class.num_resources);
+
+    _XtConstraintResDependencies((ConstraintWidgetClass)wc);
+}
diff --git a/libXt/src/Convert.c b/libXt/src/Convert.c
new file mode 100644
index 000000000..c3bb3c63a
--- /dev/null
+++ b/libXt/src/Convert.c
@@ -0,0 +1,1087 @@
+/* $Xorg: Convert.c,v 1.5 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Convert.c,v 3.7 2001/12/14 19:56:09 dawes Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include	"IntrinsicI.h"
+#include	"StringDefs.h"
+#include	"Intrinsic.h"
+
+/* Conversion procedure hash table */
+
+#define CONVERTHASHSIZE	((unsigned)256)
+#define CONVERTHASHMASK	255
+#define ProcHash(from_type, to_type) (2 * (from_type) + to_type)
+
+typedef struct _ConverterRec *ConverterPtr;
+typedef struct _ConverterRec {
+    ConverterPtr	next;
+    XrmRepresentation	from, to;
+    XtTypeConverter	converter;
+    XtDestructor	destructor;
+    unsigned short	num_args;
+    unsigned int	do_ref_count:1;
+    unsigned int	new_style:1;
+    unsigned int	global:1;
+    char		cache_type;
+} ConverterRec;
+
+#define ConvertArgs(p) ((XtConvertArgList)((p)+1))
+
+/* used for old-style type converter cache only */
+static Heap globalHeap = {NULL, NULL, 0};
+
+void _XtSetDefaultConverterTable(
+	ConverterTable *table)
+{
+    register ConverterTable globalConverterTable;
+
+    LOCK_PROCESS;
+    globalConverterTable = _XtGetProcessContext()->globalConverterTable;
+
+    *table = (ConverterTable)
+	__XtCalloc(CONVERTHASHSIZE, (unsigned)sizeof(ConverterPtr));
+    _XtAddDefaultConverters(*table);
+
+    if (globalConverterTable) {
+	ConverterPtr rec;
+	int i;
+	XtCacheType cache_type;
+	for (i = CONVERTHASHSIZE; --i >= 0; ) {
+	    for (rec = *globalConverterTable++; rec; rec = rec->next) {
+		cache_type = rec->cache_type;
+		if (rec->do_ref_count)
+		    cache_type |= XtCacheRefCount;
+	       _XtTableAddConverter(*table, rec->from, rec->to, rec->converter,
+				    ConvertArgs(rec), rec->num_args,
+				    rec->new_style, cache_type,
+				    rec->destructor, True);
+	    }
+  	}
+    }
+    UNLOCK_PROCESS;
+}
+
+void _XtFreeConverterTable(
+	ConverterTable table)
+{
+	register Cardinal i;
+	register ConverterPtr p;
+
+	for (i = 0; i < CONVERTHASHSIZE; i++) {
+	    for (p = table[i]; p; ) {
+		register ConverterPtr next = p->next;
+		XtFree((char*)p);
+		p = next;
+	    }
+	}
+	XtFree((char*)table);
+}
+
+/* Data cache hash table */
+
+typedef struct _CacheRec *CachePtr;
+
+typedef struct _CacheRec {
+    CachePtr	next;
+    XtPointer	tag;
+    int		hash;
+    XtTypeConverter converter;
+    unsigned short num_args;
+    unsigned int conversion_succeeded:1;
+    unsigned int has_ext:1;
+    unsigned int is_refcounted:1;
+    unsigned int must_be_freed:1;
+    unsigned int from_is_value:1;
+    unsigned int to_is_value:1;
+    XrmValue	from;
+    XrmValue	to;
+} CacheRec;
+
+typedef struct _CacheRecExt {
+    CachePtr	*prev;
+    XtDestructor destructor;
+    XtPointer	 closure;
+    long	 ref_count;
+} CacheRecExt;
+
+#define CEXT(p) ((CacheRecExt *)((p)+1))
+#define CARGS(p) ((p)->has_ext ? (XrmValue *)(CEXT(p)+1) : (XrmValue *)((p)+1))
+
+#define CACHEHASHSIZE	256
+#define CACHEHASHMASK	255
+typedef CachePtr CacheHashTable[CACHEHASHSIZE];
+
+static CacheHashTable	cacheHashTable;
+
+void _XtTableAddConverter(
+    ConverterTable	table,
+    XrmRepresentation   from_type,
+    XrmRepresentation   to_type,
+    XtTypeConverter	converter,
+    XtConvertArgList    convert_args,
+    Cardinal		num_args,
+    _XtBoolean		new_style,
+    XtCacheType		cache_type,
+    XtDestructor	destructor,
+    _XtBoolean		global)
+{
+    register ConverterPtr	*pp;
+    register ConverterPtr	p;
+    XtConvertArgList args;
+
+    pp= &table[ProcHash(from_type, to_type) & CONVERTHASHMASK];
+    while ((p = *pp) && (p->from != from_type || p->to != to_type))
+	pp = &p->next;
+
+    if (p) {
+	*pp = p->next;
+	XtFree((char *)p);
+    }
+
+    p = (ConverterPtr) __XtMalloc(sizeof(ConverterRec) +
+				sizeof(XtConvertArgRec) * num_args);
+    p->next	    = *pp;
+    *pp = p;
+    p->from	    = from_type;
+    p->to	    = to_type;
+    p->converter    = converter;
+    p->destructor   = destructor;
+    p->num_args     = num_args;
+    p->global       = global;
+    args = ConvertArgs(p);
+    while (num_args--)
+	*args++ = *convert_args++;
+    p->new_style    = new_style;
+    p->do_ref_count = False;
+    if (destructor || (cache_type & 0xff)) {
+	p->cache_type = cache_type & 0xff;
+	if (cache_type & XtCacheRefCount)
+	    p->do_ref_count = True;
+    } else {
+	p->cache_type = XtCacheNone;
+    }
+}
+
+void XtSetTypeConverter(
+    register _Xconst char* from_type,
+    register _Xconst char* to_type,
+    XtTypeConverter	converter,
+    XtConvertArgList    convert_args,
+    Cardinal		num_args,
+    XtCacheType		cache_type,
+    XtDestructor	destructor
+    )
+{
+    ProcessContext process;
+    XtAppContext app;
+    XrmRepresentation from;
+    XrmRepresentation to;
+
+    LOCK_PROCESS;
+    process = _XtGetProcessContext();
+    app = process->appContextList;
+    from = XrmStringToRepresentation(from_type);
+    to = XrmStringToRepresentation(to_type);
+
+    if (!process->globalConverterTable) {
+	process->globalConverterTable = (ConverterTable)
+	    __XtCalloc(CONVERTHASHSIZE, (unsigned)sizeof(ConverterPtr));
+    }
+    _XtTableAddConverter(process->globalConverterTable, from, to,
+			 converter, convert_args,
+			 num_args, True, cache_type, destructor, True);
+    while (app) {
+	_XtTableAddConverter(app->converterTable, from, to,
+			     converter, convert_args,
+			     num_args, True, cache_type, destructor, True);
+	app = app->next;
+    }
+    UNLOCK_PROCESS;
+}
+
+void XtAppSetTypeConverter(
+    XtAppContext	app,
+    register _Xconst char* from_type,
+    register _Xconst char* to_type,
+    XtTypeConverter	converter,
+    XtConvertArgList    convert_args,
+    Cardinal		num_args,
+    XtCacheType		cache_type,
+    XtDestructor	destructor
+    )
+{
+    LOCK_PROCESS;
+    _XtTableAddConverter(app->converterTable,
+	XrmStringToRepresentation(from_type),
+        XrmStringToRepresentation(to_type),
+	converter, convert_args, num_args,
+	True, cache_type, destructor, False);
+    UNLOCK_PROCESS;
+}
+
+/* old interface */
+void XtAddConverter(
+    register _Xconst char* from_type,
+    register _Xconst char* to_type,
+    XtConverter		converter,
+    XtConvertArgList    convert_args,
+    Cardinal		num_args
+    )
+{
+    ProcessContext process;
+    XtAppContext app;
+    XrmRepresentation from;
+    XrmRepresentation to;
+
+    LOCK_PROCESS;
+    process = _XtGetProcessContext();
+    app = process->appContextList;
+    from = XrmStringToRepresentation(from_type);
+    to = XrmStringToRepresentation(to_type);
+
+    if (!process->globalConverterTable) {
+	process->globalConverterTable = (ConverterTable)
+	    __XtCalloc(CONVERTHASHSIZE, (unsigned)sizeof(ConverterPtr));
+    }
+    _XtTableAddConverter(process->globalConverterTable, from, to,
+			 (XtTypeConverter)converter, convert_args, num_args,
+			 False, XtCacheAll, (XtDestructor)NULL, True);
+    while (app) {
+	_XtTableAddConverter(app->converterTable, from, to,
+			     (XtTypeConverter)converter, convert_args,
+			     num_args, False, XtCacheAll, (XtDestructor)NULL,
+			     True);
+	app = app->next;
+    }
+    UNLOCK_PROCESS;
+}
+
+/* old interface */
+void XtAppAddConverter(
+    XtAppContext	app,
+    register _Xconst char* from_type,
+    register _Xconst char* to_type,
+    XtConverter		converter,
+    XtConvertArgList    convert_args,
+    Cardinal		num_args
+    )
+{
+    LOCK_PROCESS;
+    _XtTableAddConverter(app->converterTable,
+	XrmStringToRepresentation(from_type),
+        XrmStringToRepresentation(to_type),
+	(XtTypeConverter)converter, convert_args, num_args,
+	False, XtCacheAll, (XtDestructor)NULL, False);
+    UNLOCK_PROCESS;
+}
+
+static CachePtr
+CacheEnter(
+    Heap*		    heap,
+    register XtTypeConverter converter,
+    register XrmValuePtr    args,
+    Cardinal		    num_args,
+    XrmValuePtr		    from,
+    XrmValuePtr		    to,
+    Boolean		    succeeded,
+    register int	    hash,
+    Boolean		    do_ref,
+    Boolean		    do_free,
+    XtDestructor	    destructor,
+    XtPointer		    closure)
+{
+    register	CachePtr *pHashEntry;
+    register	CachePtr p;
+    register    Cardinal i;
+
+    LOCK_PROCESS;
+    pHashEntry = &cacheHashTable[hash & CACHEHASHMASK];
+
+    if ((succeeded && destructor) || do_ref) {
+	p = (CachePtr) _XtHeapAlloc(heap, (sizeof(CacheRec) +
+					   sizeof(CacheRecExt) +
+					   num_args * sizeof(XrmValue)));
+	CEXT(p)->prev = pHashEntry;
+	CEXT(p)->destructor = succeeded ? destructor : NULL;
+	CEXT(p)->closure = closure;
+	CEXT(p)->ref_count = 1;
+	p->has_ext = True;
+    }
+    else {
+	p = (CachePtr)_XtHeapAlloc(heap, (sizeof(CacheRec) +
+					  num_args * sizeof(XrmValue)));
+	p->has_ext = False;
+    }
+    if (!to->addr)
+	succeeded = False;
+    p->conversion_succeeded = succeeded;
+    p->is_refcounted = do_ref;
+    p->must_be_freed = do_free;
+    p->next	    = *pHashEntry;
+    if (p->next && p->next->has_ext)
+	CEXT(p->next)->prev = &p->next;
+
+    *pHashEntry     = p;
+    p->tag	    = (XtPointer)heap;
+    p->hash	    = hash;
+    p->converter    = converter;
+    p->from.size    = from->size;
+    if (from->size <= sizeof(p->from.addr)) {
+	p->from_is_value = True;
+	XtMemmove(&p->from.addr, from->addr, from->size);
+    } else {
+	p->from_is_value = False;
+	p->from.addr = (XPointer)_XtHeapAlloc(heap, from->size);
+	(void) memmove((char *)p->from.addr, (char *)from->addr, from->size);
+    }
+    p->num_args = num_args;
+    if (num_args) {
+	XrmValue *pargs = CARGS(p);
+	for (i = 0; i < num_args; i++) {
+	    pargs[i].size = args[i].size;
+	    pargs[i].addr = (XPointer)_XtHeapAlloc(heap, args[i].size);
+	    XtMemmove(pargs[i].addr, args[i].addr, args[i].size);
+	}
+    }
+    p->to.size = to->size;
+    if (!succeeded) {
+	p->to_is_value = False;
+	p->to.addr = NULL;
+    } else if (to->size <= sizeof(p->to.addr)) {
+	p->to_is_value = True;
+	XtMemmove(&p->to.addr, to->addr, to->size);
+    } else {
+	p->to_is_value = False;
+	p->to.addr = (XPointer)_XtHeapAlloc(heap, to->size);
+	(void) memmove((char *)p->to.addr, (char *)to->addr, to->size);
+    }
+    UNLOCK_PROCESS;
+    return p;
+}
+
+static void FreeCacheRec(
+    XtAppContext app,
+    CachePtr p,
+    CachePtr *prev)
+{
+    LOCK_PROCESS;
+    if (p->has_ext) {
+	if (CEXT(p)->destructor) {
+	    Cardinal num_args = p->num_args;
+	    XrmValue *args = NULL;
+	    XrmValue toc;
+	    if (num_args)
+		args = CARGS(p);
+	    toc.size = p->to.size;
+	    if (p->to_is_value)
+		toc.addr = (XPointer)&p->to.addr;
+	    else
+		toc.addr = p->to.addr;
+	    (*CEXT(p)->destructor) (app, &toc, CEXT(p)->closure, args,
+				    &num_args);
+	}
+	*(CEXT(p)->prev) = p->next;
+	if (p->next && p->next->has_ext)
+	    CEXT(p->next)->prev = CEXT(p)->prev;
+    } else {
+	*prev = p->next;
+	if (p->next && p->next->has_ext)
+	    CEXT(p->next)->prev = prev;
+    }
+    if (p->must_be_freed) {
+	register int i;
+	if (!p->from_is_value)
+	    XtFree(p->from.addr);
+	if ((i = p->num_args)) {
+	    XrmValue *pargs = CARGS(p);
+	    while (i--)
+		XtFree(pargs[i].addr);
+	}
+	if (!p->to_is_value)
+	    XtFree(p->to.addr);
+	XtFree((char*)p);
+    }
+    /* else on private heap; will free entire heap later */
+    UNLOCK_PROCESS;
+}
+
+
+void _XtCacheFlushTag(
+    XtAppContext app,
+    XtPointer	tag)
+{
+    int i;
+    register CachePtr *prev;
+    register CachePtr rec;
+
+    LOCK_PROCESS;
+    for (i = CACHEHASHSIZE; --i >= 0;) {
+	prev = &cacheHashTable[i];
+	while ((rec = *prev)) {
+	    if (rec->tag == tag)
+		FreeCacheRec(app, rec, prev);
+	    else
+		prev = &rec->next;
+	}
+    }
+    UNLOCK_PROCESS;
+}
+
+#ifdef DEBUG
+#include	<stdio.h>
+
+void _XtConverterCacheStats(void)
+{
+    register Cardinal i;
+    register CachePtr p;
+    register Cardinal entries;
+
+    LOCK_PROCESS;
+    for (i = 0; i < CACHEHASHSIZE; i++) {
+	p = cacheHashTable[i];
+	if (p) {
+	    for (entries = 0; p; p = p->next) {
+		entries++;
+	    }
+	    (void) fprintf(stdout, "Index: %4d  Entries: %d\n", i, entries);
+	    for (p = cacheHashTable[i]; p; p = p->next) {
+		(void) fprintf(stdout, "    Size: %3d  Refs: %3d  '",
+			       p->from.size,
+			       p->has_ext ? CEXT(p)->ref_count : 0);
+		(void) fprintf(stdout, "'\n");
+	    }
+	    (void) fprintf(stdout, "\n");
+	}
+    }
+    UNLOCK_PROCESS;
+}
+#endif /*DEBUG*/
+
+static Boolean ResourceQuarkToOffset(
+    WidgetClass widget_class,
+    XrmName     name,
+    Cardinal    *offset)
+{
+    register WidgetClass     wc;
+    register Cardinal        i;
+    register XrmResourceList res, *resources;
+
+    for (wc = widget_class; wc; wc = wc->core_class.superclass) {
+	resources = (XrmResourceList*) wc->core_class.resources;
+	for (i = 0; i < wc->core_class.num_resources; i++, resources++) {
+	    res = *resources;
+	    if (res->xrm_name == name) {
+		*offset = -res->xrm_offset - 1;
+		return True;
+	    }
+	} /* for i in resources */
+    } /* for wc in widget classes */
+    (*offset) = 0;
+    return False;
+}
+
+
+static void ComputeArgs(
+    Widget		widget,
+    XtConvertArgList    convert_args,
+    Cardinal		num_args,
+    XrmValuePtr		args)
+{
+    register Cardinal   i;
+    Cardinal		offset;
+    String              params[1];
+    Cardinal		num_params = 1;
+    Widget		ancestor = NULL;
+
+    for (i = 0; i < num_args; i++) {
+	args[i].size = convert_args[i].size;
+	switch (convert_args[i].address_mode) {
+	case XtAddress:
+	    args[i].addr = convert_args[i].address_id;
+	    break;
+
+	case XtBaseOffset:
+	    args[i].addr =
+		(XPointer)((char *)widget + (long)convert_args[i].address_id);
+	    break;
+
+	case XtWidgetBaseOffset:
+	    if (!ancestor) {
+		if (XtIsWidget(widget))
+		    ancestor = widget;
+		else
+		    ancestor = _XtWindowedAncestor(widget);
+	    }
+
+	    args[i].addr =
+		(XPointer)((char *)ancestor + (long)convert_args[i].address_id);
+	    break;
+
+	case XtImmediate:
+	    args[i].addr = (XPointer) &(convert_args[i].address_id);
+	    break;
+
+	case XtProcedureArg:
+	    (*(XtConvertArgProc)convert_args[i].address_id)
+		(widget, &convert_args[i].size, &args[i]);
+	    break;
+
+	case XtResourceString:
+	    /* Convert in place for next usage */
+	    convert_args[i].address_mode = XtResourceQuark;
+	    convert_args[i].address_id =
+	       (XtPointer)(long)XrmStringToQuark((String)convert_args[i].address_id);
+	    /* Fall through */
+
+	case XtResourceQuark:
+	    if (! ResourceQuarkToOffset(widget->core.widget_class,
+		    (XrmQuark)(long) convert_args[i].address_id, &offset)) {
+		params[0]=
+                  XrmQuarkToString((XrmQuark)(long) convert_args[i].address_id);
+               XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		    "invalidResourceName","computeArgs",XtCXtToolkitError,
+		    "Cannot find resource name %s as argument to conversion",
+                     params,&num_params);
+		offset = 0;
+	    }
+	    args[i].addr = (XPointer)((char *)widget + offset);
+	    break;
+	default:
+	    params[0] = XtName(widget);
+	    XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"invalidAddressMode", "computeArgs", XtCXtToolkitError,
+		"Conversion arguments for widget '%s' contain an unsupported address mode",
+			params,&num_params);
+	    args[i].addr = NULL;
+	    args[i].size = 0;
+	} /* switch */
+    } /* for */
+} /* ComputeArgs */
+
+void XtDirectConvert(
+    XtConverter     converter,
+    XrmValuePtr     args,
+    Cardinal	    num_args,
+    register XrmValuePtr from,
+    XrmValuePtr     to)
+{
+    register CachePtr   p;
+    register int	hash;
+    register Cardinal   i;
+
+    LOCK_PROCESS;
+    /* Try to find cache entry for conversion */
+    hash = ((long) converter >> 2) + from->size + *((char *) from->addr);
+    if (from->size > 1) hash += ((char *) from->addr)[1];
+
+    for (p = cacheHashTable[hash & CACHEHASHMASK]; p; p = p->next) {
+	if ((p->hash == hash)
+	 && (p->converter == (XtTypeConverter)converter)
+	 && (p->from.size == from->size)
+	 && !(p->from_is_value ?
+	      XtMemcmp(&p->from.addr, from->addr, from->size) :
+	      memcmp((char *)p->from.addr, (char *)from->addr, from->size))
+         && (p->num_args == num_args)) {
+	    if ((i = num_args)) {
+		XrmValue *pargs = CARGS(p);
+		/* Are all args the same data ? */
+		while (i) {
+		    i--; /* do not move to while test, broken compilers */
+		    if (pargs[i].size != args[i].size ||
+			XtMemcmp(pargs[i].addr, args[i].addr, args[i].size)) {
+			i++;
+			break;
+		    }
+		}
+	    }
+	    if (!i) {
+		/* Perfect match */
+		to->size = p->to.size;
+		if (p->to_is_value)
+		    to->addr = (XPointer)&p->to.addr;
+		else
+		    to->addr = p->to.addr;
+		UNLOCK_PROCESS;
+		return;
+	    }
+	}
+    }
+
+    /* Didn't find it, call converter procedure and entry result in cache */
+    (*to).size = 0;
+    (*to).addr = NULL;
+    (*converter)(args, &num_args, from, to);
+    /* This memory can never be freed since we don't know the Display
+     * or app context from which to compute the persistance */
+    {
+	CacheEnter(&globalHeap, (XtTypeConverter)converter, args, num_args,
+		   from, to, (to->addr != NULL), hash, False, False,
+		   (XtDestructor)NULL, NULL);
+    }
+    UNLOCK_PROCESS;
+}
+
+
+static ConverterPtr GetConverterEntry(
+    XtAppContext app,
+    XtTypeConverter converter)
+{
+    Cardinal entry;
+    register ConverterPtr cP;
+    ConverterTable converterTable;
+
+    LOCK_PROCESS;
+    converterTable = app->converterTable;
+    cP = NULL;
+    for (entry = 0; (entry < CONVERTHASHSIZE) && !cP; entry++) {
+	cP = converterTable[entry];
+	while (cP && (cP->converter != converter)) cP = cP->next;
+    }
+    UNLOCK_PROCESS;
+    return cP;
+}
+
+
+static Boolean
+CallConverter(
+    Display*	    dpy,
+    XtTypeConverter converter,
+    XrmValuePtr     args,
+    Cardinal	    num_args,
+    register XrmValuePtr from,
+    XrmValuePtr     to,
+    XtCacheRef	    *cache_ref_return,
+    register ConverterPtr cP)
+{
+    CachePtr p;
+    int	hash;
+    Cardinal i;
+    Boolean retval;
+
+    if (!cP || ((cP->cache_type == XtCacheNone) && !cP->destructor)) {
+	XtPointer closure;
+	if (cache_ref_return) *cache_ref_return = NULL;
+	retval = (*(XtTypeConverter)converter)
+	    (dpy, args, &num_args, from, to, &closure);
+	return retval;
+    }
+
+    LOCK_PROCESS;
+    /* Try to find cache entry for conversion */
+    hash = ((long)(converter) >> 2) + from->size + *((char *) from->addr);
+    if (from->size > 1) hash += ((char *) from->addr)[1];
+
+    if (cP->cache_type != XtCacheNone) {
+	for (p = cacheHashTable[hash & CACHEHASHMASK]; p; p = p->next){
+	    if ((p->hash == hash)
+	     && (p->converter == converter)
+	     && (p->from.size == from->size)
+	     && !(p->from_is_value ?
+		  XtMemcmp(&p->from.addr, from->addr, from->size) :
+		  memcmp((char *)p->from.addr, (char *)from->addr, from->size))
+	     && (p->num_args == num_args)) {
+		if ((i = num_args)) {
+		    XrmValue *pargs = CARGS(p);
+		    /* Are all args the same data ? */
+		    while (i) {
+			i--; /* do not move to while test, broken compilers */
+			if (pargs[i].size != args[i].size ||
+			    XtMemcmp(pargs[i].addr, args[i].addr, args[i].size)){
+			    i++;
+			    break;
+			}
+		    }
+		}
+		if (!i) {
+		    /* Perfect match */
+		    if (p->conversion_succeeded) {
+			if (to->addr) {	/* new-style call */
+			    if (to->size < p->to.size) {
+				to->size = p->to.size;
+				UNLOCK_PROCESS;
+				return False;
+			    }
+			    to->size = p->to.size;
+			    if (p->to_is_value) {
+				XtMemmove(to->addr, &p->to.addr,
+					  to->size);
+			    } else {
+				(void) memmove((char *)to->addr,
+					       (char *)p->to.addr, to->size);
+			    }
+			} else {	/* old-style call */
+			    to->size = p->to.size;
+			    if (p->to_is_value)
+				to->addr = (XPointer)&p->to.addr;
+			    else
+				to->addr = p->to.addr;
+			}
+		    }
+		    if (p->is_refcounted) {
+			CEXT(p)->ref_count++;
+			if (cache_ref_return)
+			    *cache_ref_return = (XtCacheRef)p;
+			else
+			    p->is_refcounted = False;
+		    }
+		    else {
+			if (cache_ref_return)
+			    *cache_ref_return = NULL;
+		    }
+		    retval = (p->conversion_succeeded);
+		    UNLOCK_PROCESS;
+		    return retval;
+		}
+	    }
+	}
+    }
+
+    /* No cache entry, call converter procedure and enter result in cache */
+    {
+	Heap *heap;
+	XtPointer closure = NULL;
+	unsigned int supplied_size = to->size;
+	Boolean do_ref = cP->do_ref_count && cache_ref_return;
+	Boolean do_free = False;
+	Boolean retval =
+	    (*(XtTypeConverter)converter)(dpy, args, &num_args, from, to, &closure);
+
+	if (retval == False && supplied_size < to->size) {
+	    /* programmer error: caller must allocate sufficient storage */
+	    if (cache_ref_return)
+		*cache_ref_return = NULL;
+	    UNLOCK_PROCESS;
+	    return False;
+	}
+
+	if ((cP->cache_type == XtCacheNone) || do_ref) {
+	    heap = NULL;
+	    do_free = True;
+	}
+	else if (cP->cache_type == XtCacheByDisplay)
+	    heap = &_XtGetPerDisplay(dpy)->heap;
+	else if (cP->global)
+	    heap = &globalHeap;
+	else
+	    heap = &XtDisplayToApplicationContext(dpy)->heap;
+
+	p = CacheEnter(heap, converter, args, num_args, from, to, retval,
+		       hash, do_ref, do_free, cP->destructor, closure);
+	if (do_ref)
+	    *cache_ref_return = (XtCacheRef)p;
+	else if (cache_ref_return)
+	    *cache_ref_return = NULL;
+	UNLOCK_PROCESS;
+	return retval;
+    }
+}
+
+Boolean
+XtCallConverter(
+    Display*	    dpy,
+    XtTypeConverter converter,
+    XrmValuePtr     args,
+    Cardinal	    num_args,
+    register XrmValuePtr from,
+    XrmValuePtr     to,
+    XtCacheRef	    *cache_ref_return)
+{
+    ConverterPtr cP;
+    Boolean retval;
+    XtAppContext app = XtDisplayToApplicationContext(dpy);
+
+    LOCK_APP(app);
+    if ((cP = GetConverterEntry(app, converter)) == NULL) {
+	XtAppSetTypeConverter(XtDisplayToApplicationContext(dpy),
+			      "_XtUnk1", "_XtUnk2",
+			      converter, NULL, 0,
+			      XtCacheAll, NULL);
+	cP = GetConverterEntry(app, converter);
+    }
+    retval = CallConverter(dpy, converter, args, num_args, from, to,
+			    cache_ref_return, cP);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+Boolean _XtConvert(
+             Widget		widget,
+    register XrmRepresentation	from_type,
+	     XrmValuePtr	from,
+    register XrmRepresentation	to_type,
+    register XrmValuePtr	to,
+    XtCacheRef			*cache_ref_return)
+{
+    XtAppContext	app = XtWidgetToApplicationContext(widget);
+    register ConverterPtr	p;
+    Cardinal		num_args;
+    XrmValue		*args;
+
+    /* Look for type converter */
+    LOCK_PROCESS;
+    p = app->converterTable[ProcHash(from_type, to_type) & CONVERTHASHMASK];
+    for (; p; p = p->next) {
+	if (from_type == p->from && to_type == p->to) {
+	    Boolean retval = False;
+	    /* Compute actual arguments from widget and arg descriptor */
+	    num_args = p->num_args;
+	    if (num_args != 0) {
+		args = (XrmValue*)
+		    ALLOCATE_LOCAL( num_args * sizeof (XrmValue) );
+		if (!args) _XtAllocError("alloca");
+		ComputeArgs(widget, ConvertArgs(p), num_args, args);
+	    } else args = NULL;
+	    if (p->new_style) {
+		retval =
+		    CallConverter(XtDisplayOfObject(widget),
+				     p->converter, args, num_args,
+				     from, to, cache_ref_return, p);
+	    }
+	    else { /* is old-style (non-display) converter */
+		XrmValue tempTo;
+		XtDirectConvert((XtConverter)p->converter, args, num_args,
+				from, &tempTo);
+		if (cache_ref_return)
+		    *cache_ref_return = NULL;
+		if (tempTo.addr) {
+		    if (to->addr) {	/* new-style caller */
+			if (to->size >= tempTo.size) {
+			    if (to_type == _XtQString)
+				*(String*)(to->addr) = tempTo.addr;
+			    else {
+				XtMemmove(to->addr, tempTo.addr,
+					  tempTo.size);
+			    }
+			    retval = True;
+			}
+			to->size = tempTo.size;
+		    } else {		/* old-style caller */
+			*to = tempTo;
+			retval = True;
+		    }
+		}
+	    }
+	    if (args) DEALLOCATE_LOCAL( (XtPointer)args );
+	    UNLOCK_PROCESS;
+	    return retval;
+	}
+    }
+
+    {
+	String params[2];
+	Cardinal num_params = 2;
+	params[0] = XrmRepresentationToString(from_type);
+	params[1] = XrmRepresentationToString(to_type);
+	XtAppWarningMsg(app, "typeConversionError", "noConverter", XtCXtToolkitError,
+	     "No type converter registered for '%s' to '%s' conversion.",
+             params, &num_params);
+    }
+    UNLOCK_PROCESS;
+    return False;
+}
+
+void XtConvert(
+    Widget	widget,
+    _Xconst char* from_type_str,
+    XrmValuePtr	from,
+    _Xconst char* to_type_str,
+    XrmValuePtr	to)
+{
+    XrmQuark    from_type, to_type;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    from_type = XrmStringToRepresentation(from_type_str);
+    to_type = XrmStringToRepresentation(to_type_str);
+    if (from_type != to_type) {
+	/*  It's not safe to ref count these resources, 'cause we
+	    don't know what older clients may have assumed about
+	    the resource lifetimes.
+	XtCacheRef ref;
+	*/
+	to->addr = NULL;
+	to->size = 0;
+	_XtConvert(widget, from_type, from, to_type, to, /*&ref*/ NULL);
+	/*
+	if (ref) {
+	    XtAddCallback( widget, XtNdestroyCallback,
+			   XtCallbackReleaseCacheRef, (XtPointer)ref );
+	}
+	*/
+    }
+    else
+	(*to) = *from;
+    UNLOCK_APP(app);
+}
+
+Boolean XtConvertAndStore(
+    Widget	object,
+    _Xconst char* from_type_str,
+    XrmValuePtr	from,
+    _Xconst char* to_type_str,
+    XrmValuePtr	to)
+{
+    XrmQuark    from_type, to_type;
+    WIDGET_TO_APPCON(object);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    from_type = XrmStringToRepresentation(from_type_str);
+    to_type = XrmStringToRepresentation(to_type_str);
+    if (from_type != to_type) {
+	static XtPointer local_valueP = NULL;
+	static Cardinal local_valueS = 128;
+	XtCacheRef ref;
+	Boolean local = False;
+	do {
+	    if (!to->addr) {
+		if (!local_valueP)
+		    local_valueP = _XtHeapAlloc(&globalHeap, local_valueS);
+		to->addr = local_valueP;
+		to->size = local_valueS;
+		local = True;
+	    }
+	    if (!_XtConvert(object, from_type, from, to_type, to, &ref)) {
+		if (local && (to->size > local_valueS)) {
+		    to->addr =
+			local_valueP = _XtHeapAlloc(&globalHeap, to->size);
+		    local_valueS = to->size;
+		    continue;
+		} else {
+		    if (local) {
+			to->addr = NULL;
+			to->size = 0;
+		    }
+		    UNLOCK_PROCESS;
+		    UNLOCK_APP(app);
+		    return False;
+		}
+	    }
+	    if (ref) {
+		XtAddCallback( object, XtNdestroyCallback,
+			       XtCallbackReleaseCacheRef, (XtPointer)ref );
+	    }
+	    UNLOCK_PROCESS;
+	    UNLOCK_APP(app);
+	    return True;
+	} while (local /* && local_valueS < to->size */);
+    }
+    if (to->addr) {
+	if (to->size < from->size) {
+	    to->size = from->size;
+	    UNLOCK_PROCESS;
+	    UNLOCK_APP(app);
+	    return False;
+	}
+	(void) memmove(to->addr, from->addr, from->size );
+	to->size = from->size;
+    } else			/* from_type == to_type */
+	*to = *from;
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return True;
+}
+
+void XtAppReleaseCacheRefs(
+    XtAppContext app,
+    XtCacheRef *refs)
+{
+    register CachePtr *r;
+    register CachePtr p;
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    for (r = (CachePtr*)refs; (p = *r); r++) {
+	if (p->is_refcounted && --(CEXT(p)->ref_count) == 0) {
+	    FreeCacheRec(app, p, NULL);
+	}
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+
+/* ARGSUSED */
+void XtCallbackReleaseCacheRefList(
+    Widget widget,		/* unused */
+    XtPointer closure,
+    XtPointer call_data)	/* unused */
+{
+    XtAppReleaseCacheRefs( XtWidgetToApplicationContext(widget),
+			   (XtCacheRef*)closure );
+    XtFree(closure);
+}
+
+
+/* ARGSUSED */
+void XtCallbackReleaseCacheRef(
+    Widget widget,		/* unused */
+    XtPointer closure,
+    XtPointer call_data)	/* unused */
+{
+    XtCacheRef cache_refs[2];
+    cache_refs[0] = (XtCacheRef)closure;
+    cache_refs[1] = NULL;
+    XtAppReleaseCacheRefs( XtWidgetToApplicationContext(widget), cache_refs );
+}
diff --git a/libXt/src/Converters.c b/libXt/src/Converters.c
new file mode 100644
index 000000000..a1f7f2b48
--- /dev/null
+++ b/libXt/src/Converters.c
@@ -0,0 +1,1864 @@
+/* $Xorg: Converters.c,v 1.5 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Converters.c,v 3.14tsi Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+/*LINTLIBRARY*/
+/* Conversion.c - implementations of resource type conversion procs */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include	"IntrinsicI.h"
+#include	"StringDefs.h"
+#include	"Shell.h"
+#include	<stdio.h>
+#include        <X11/cursorfont.h>
+#include	<X11/keysym.h>
+#include	<X11/Xlocale.h>
+#include	<errno.h>	/* for StringToDirectoryString */
+
+#ifdef __UNIXOS2__
+#define IsNewline(str) ((str) == '\n' || (str) == '\r')
+#define IsWhitespace(str) ((str)== ' ' || (str) == '\t' || (str) == '\r')
+#else
+#define IsNewline(str) ((str) == '\n')
+#define IsWhitespace(str) ((str)== ' ' || (str) == '\t')
+#endif
+
+static const String XtNwrongParameters = "wrongParameters";
+static const String XtNconversionError = "conversionError";
+static const String XtNmissingCharsetList = "missingCharsetList";
+
+/* Representation types */
+
+#define XtQAtom			XrmPermStringToQuark(XtRAtom)
+#define XtQCommandArgArray	XrmPermStringToQuark(XtRCommandArgArray)
+#define XtQCursor		XrmPermStringToQuark(XtRCursor)
+#define XtQDirectoryString	XrmPermStringToQuark(XtRDirectoryString)
+#define XtQDisplay		XrmPermStringToQuark(XtRDisplay)
+#define XtQFile			XrmPermStringToQuark(XtRFile)
+#define XtQFloat		XrmPermStringToQuark(XtRFloat)
+#define XtQInitialState		XrmPermStringToQuark(XtRInitialState)
+#define XtQPixmap		XrmPermStringToQuark(XtRPixmap)
+#define XtQRestartStyle 	XrmPermStringToQuark(XtRRestartStyle)
+#define XtQShort		XrmPermStringToQuark(XtRShort)
+#define XtQUnsignedChar		XrmPermStringToQuark(XtRUnsignedChar)
+#define XtQVisual		XrmPermStringToQuark(XtRVisual)
+
+static XrmQuark  XtQBool;
+static XrmQuark  XtQBoolean;
+static XrmQuark  XtQColor;
+static XrmQuark  XtQDimension;
+static XrmQuark  XtQFont;
+static XrmQuark  XtQFontSet;
+static XrmQuark  XtQFontStruct;
+static XrmQuark  XtQGravity;
+static XrmQuark  XtQInt;
+static XrmQuark  XtQPixel;
+static XrmQuark  XtQPosition;
+#ifdef __UNIXOS2__
+XrmQuark  _XtQString = 0;
+#else
+XrmQuark  _XtQString;
+#endif
+
+void _XtConvertInitialize(void)
+{
+    XtQBool		= XrmPermStringToQuark(XtRBool);
+    XtQBoolean		= XrmPermStringToQuark(XtRBoolean);
+    XtQColor		= XrmPermStringToQuark(XtRColor);
+    XtQDimension	= XrmPermStringToQuark(XtRDimension);
+    XtQFont		= XrmPermStringToQuark(XtRFont);
+    XtQFontSet		= XrmPermStringToQuark(XtRFontSet);
+    XtQFontStruct	= XrmPermStringToQuark(XtRFontStruct);
+    XtQGravity		= XrmPermStringToQuark(XtRGravity);
+    XtQInt		= XrmPermStringToQuark(XtRInt);
+    XtQPixel		= XrmPermStringToQuark(XtRPixel);
+    XtQPosition		= XrmPermStringToQuark(XtRPosition);
+    _XtQString		= XrmPermStringToQuark(XtRString);
+}
+
+#define	donestr(type, value, tstr) \
+	{							\
+	    if (toVal->addr != NULL) {				\
+		if (toVal->size < sizeof(type)) {		\
+		    toVal->size = sizeof(type);			\
+		    XtDisplayStringConversionWarning(dpy, 	\
+			(char*) fromVal->addr, tstr);		\
+		    return False;				\
+		}						\
+		*(type*)(toVal->addr) = (value);		\
+	    }							\
+	    else {						\
+		static type static_val;				\
+		static_val = (value);				\
+		toVal->addr = (XPointer)&static_val;		\
+	    }							\
+	    toVal->size = sizeof(type);				\
+	    return True;					\
+	}
+
+#define	done(type, value) \
+	{							\
+	    if (toVal->addr != NULL) {				\
+		if (toVal->size < sizeof(type)) {		\
+		    toVal->size = sizeof(type);			\
+		    return False;				\
+		}						\
+		*(type*)(toVal->addr) = (value);		\
+	    }							\
+	    else {						\
+		static type static_val;				\
+		static_val = (value);				\
+		toVal->addr = (XPointer)&static_val;		\
+	    }							\
+	    toVal->size = sizeof(type);				\
+	    return True;					\
+	}
+
+void XtDisplayStringConversionWarning(
+    Display* dpy,
+    _Xconst char* from,
+    _Xconst char* toType
+    )
+{
+#ifndef NO_MIT_HACKS
+    /* Allow suppression of conversion warnings. %%%  Not specified. */
+
+    static enum {Check, Report, Ignore} report_it = Check;
+    XtAppContext app = XtDisplayToApplicationContext(dpy);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    if (report_it == Check) {
+	XrmDatabase rdb = XtDatabase(dpy);
+	XrmName xrm_name[2];
+	XrmClass xrm_class[2];
+	XrmRepresentation rep_type;
+	XrmValue value;
+	xrm_name[0] = XrmPermStringToQuark( "stringConversionWarnings" );
+	xrm_name[1] = 0;
+	xrm_class[0] = XrmPermStringToQuark( "StringConversionWarnings" );
+	xrm_class[1] = 0;
+	if (XrmQGetResource( rdb, xrm_name, xrm_class,
+			     &rep_type, &value ))
+	{
+	    if (rep_type == XtQBoolean)
+		report_it = *(Boolean*)value.addr ? Report : Ignore;
+	    else if (rep_type == _XtQString) {
+		XrmValue toVal;
+		Boolean report;
+		toVal.addr = (XPointer)&report;
+		toVal.size = sizeof(Boolean);
+		if (XtCallConverter(dpy, XtCvtStringToBoolean, (XrmValuePtr)NULL,
+				    (Cardinal)0, &value, &toVal,
+				    (XtCacheRef*)NULL))
+		    report_it = report ? Report : Ignore;
+	    }
+	    else report_it = Report;
+	}
+	else report_it = Report;
+    }
+
+    if (report_it == Report) {
+#endif /* ifndef NO_MIT_HACKS */
+	String params[2];
+	Cardinal num_params = 2;
+	params[0] = (String)from;
+	params[1] = (String)toType;
+	XtAppWarningMsg(app,
+		   XtNconversionError,"string",XtCXtToolkitError,
+		   "Cannot convert string \"%s\" to type %s",
+		    params,&num_params);
+#ifndef NO_MIT_HACKS
+    }
+#endif /* ifndef NO_MIT_HACKS */
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void XtStringConversionWarning(
+    _Xconst char* from,
+    _Xconst char* toType
+    )
+{
+	String params[2];
+	Cardinal num_params = 2;
+	params[0] = (String)from;
+	params[1] = (String)toType;
+	XtWarningMsg(XtNconversionError,"string",XtCXtToolkitError,
+		   "Cannot convert string \"%s\" to type %s",
+		    params,&num_params);
+}
+
+static int CompareISOLatin1(char *, char *);
+
+
+static Boolean IsInteger(
+    String string,
+    int *value)
+{
+    Boolean foundDigit = False;
+    Boolean isNegative = False;
+    Boolean isPositive = False;
+    int val = 0;
+    char ch;
+    /* skip leading whitespace */
+#ifndef __UNIXOS2__
+    while ((ch = *string) == ' ' || ch == '\t') string++;
+#else
+    while ((ch = *string) == ' ' || ch == '\t' || ch == '\r') string++;
+#endif
+    while ((ch = *string++)) {
+	if (ch >= '0' && ch <= '9') {
+	    val *= 10;
+	    val += ch - '0';
+	    foundDigit = True;
+	    continue;
+	}
+	if (IsWhitespace(ch)) {
+	    if (!foundDigit) return False;
+	    /* make sure only trailing whitespace */
+	    while ((ch = *string++)) {
+		if (!IsWhitespace(ch))
+		    return False;
+	    }
+	    break;
+	}
+	if (ch == '-' && !foundDigit && !isNegative && !isPositive) {
+	    isNegative = True;
+	    continue;
+	}
+	if (ch == '+' && !foundDigit && !isNegative && !isPositive) {
+	    isPositive = True;
+	    continue;
+	}
+	return False;
+    }
+    if (ch == '\0') {
+	if (isNegative)
+	    *value = -val;
+	else
+	    *value = val;
+	return True;
+    }
+    return False;
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtIntToBoolean(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToBoolean",XtCXtToolkitError,
+                  "Integer to Boolean conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+    done(Boolean, (*(int *)fromVal->addr != 0));
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtIntToShort(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToShort",XtCXtToolkitError,
+                  "Integer to Short conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+    done(short, (*(int *)fromVal->addr));
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtStringToBoolean(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    String str = (String)fromVal->addr;
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToBoolean",XtCXtToolkitError,
+                  "String to Boolean conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+
+    if (   (CompareISOLatin1(str, "true") == 0)
+	|| (CompareISOLatin1(str, "yes") == 0)
+	|| (CompareISOLatin1(str, "on") == 0)
+	|| (CompareISOLatin1(str, "1") == 0))	donestr( Boolean, True, XtRBoolean );
+
+    if (   (CompareISOLatin1(str, "false") == 0)
+	|| (CompareISOLatin1(str, "no") == 0)
+	|| (CompareISOLatin1(str, "off") == 0)
+	|| (CompareISOLatin1(str, "0") == 0))	donestr( Boolean, False, XtRBoolean );
+
+    XtDisplayStringConversionWarning(dpy, str, XtRBoolean);
+    return False;
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtIntToBool(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToBool",XtCXtToolkitError,
+                  "Integer to Bool conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+    done(Bool, (*(int *)fromVal->addr != 0));
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtStringToBool(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    String str = (String)fromVal->addr;
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		XtNwrongParameters,"cvtStringToBool",
+		XtCXtToolkitError,
+                 "String to Bool conversion needs no extra arguments",
+                  (String *)NULL, (Cardinal *)NULL);
+
+    if (   (CompareISOLatin1(str, "true") == 0)
+	|| (CompareISOLatin1(str, "yes") == 0)
+	|| (CompareISOLatin1(str, "on") == 0)
+	|| (CompareISOLatin1(str, "1") == 0))	donestr( Bool, True, XtRBool );
+
+    if (   (CompareISOLatin1(str, "false") == 0)
+	|| (CompareISOLatin1(str, "no") == 0)
+	|| (CompareISOLatin1(str, "off") == 0)
+	|| (CompareISOLatin1(str, "0") == 0))	donestr( Bool, False, XtRBool );
+
+    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRBool);
+    return False;
+}
+
+XtConvertArgRec const colorConvertArgs[] = {
+    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen),
+     sizeof(Screen *)},
+    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.colormap),
+     sizeof(Colormap)}
+};
+
+
+/* ARGSUSED */
+Boolean XtCvtIntToColor(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    XColor	c;
+    Screen	*screen;
+    Colormap	colormap;
+
+    if (*num_args != 2) {
+      XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	 XtNwrongParameters,"cvtIntOrPixelToXColor",XtCXtToolkitError,
+         "Pixel to color conversion needs screen and colormap arguments",
+          (String *)NULL, (Cardinal *)NULL);
+      return False;
+    }
+    screen = *((Screen **) args[0].addr);
+    colormap = *((Colormap *) args[1].addr);
+    c.pixel = *(int *)fromVal->addr;
+
+    XQueryColor(DisplayOfScreen(screen), colormap, &c);
+    done(XColor, c);
+}
+
+
+Boolean XtCvtStringToPixel(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    String	    str = (String)fromVal->addr;
+    XColor	    screenColor;
+    XColor	    exactColor;
+    Screen	    *screen;
+    XtPerDisplay    pd = _XtGetPerDisplay(dpy);
+    Colormap	    colormap;
+    Status	    status;
+    String          params[1];
+    Cardinal	    num_params=1;
+
+    if (*num_args != 2) {
+     XtAppWarningMsg(pd->appContext, XtNwrongParameters, "cvtStringToPixel",
+		     XtCXtToolkitError,
+	"String to pixel conversion needs screen and colormap arguments",
+        (String *)NULL, (Cardinal *)NULL);
+     return False;
+    }
+
+    screen = *((Screen **) args[0].addr);
+    colormap = *((Colormap *) args[1].addr);
+
+    if (CompareISOLatin1(str, XtDefaultBackground) == 0) {
+	*closure_ret = NULL;
+	if (pd->rv) donestr(Pixel, BlackPixelOfScreen(screen), XtRPixel)
+	else	    donestr(Pixel, WhitePixelOfScreen(screen), XtRPixel);
+    }
+    if (CompareISOLatin1(str, XtDefaultForeground) == 0) {
+	*closure_ret = NULL;
+	if (pd->rv) donestr(Pixel, WhitePixelOfScreen(screen), XtRPixel)
+        else	    donestr(Pixel, BlackPixelOfScreen(screen), XtRPixel);
+    }
+
+    status = XAllocNamedColor(DisplayOfScreen(screen), colormap,
+			      (char*)str, &screenColor, &exactColor);
+    if (status == 0) {
+	String msg, type;
+	params[0] = str;
+	/* Server returns a specific error code but Xlib discards it.  Ugh */
+	if (XLookupColor(DisplayOfScreen(screen), colormap, (char*)str,
+			 &exactColor, &screenColor)) {
+	    type = "noColormap";
+	    msg = "Cannot allocate colormap entry for \"%s\"";
+	}
+	else {
+	    type = "badValue";
+	    msg = "Color name \"%s\" is not defined";
+	}
+
+	XtAppWarningMsg(pd->appContext, type, "cvtStringToPixel",
+			XtCXtToolkitError, msg, params, &num_params);
+	*closure_ret = NULL;
+	return False;
+    } else {
+	*closure_ret = (char*)True;
+        donestr(Pixel, screenColor.pixel, XtRPixel);
+    }
+}
+
+/* ARGSUSED */
+static void FreePixel(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    Screen	    *screen;
+    Colormap	    colormap;
+
+    if (*num_args != 2) {
+     XtAppWarningMsg(app, XtNwrongParameters,"freePixel",XtCXtToolkitError,
+	"Freeing a pixel requires screen and colormap arguments",
+        (String *)NULL, (Cardinal *)NULL);
+     return;
+    }
+
+    screen = *((Screen **) args[0].addr);
+    colormap = *((Colormap *) args[1].addr);
+
+    if (closure) {
+	XFreeColors( DisplayOfScreen(screen), colormap,
+		     (unsigned long*)toVal->addr, 1, (unsigned long)0
+		    );
+    }
+}
+
+
+/* no longer used by Xt, but it's in the spec */
+XtConvertArgRec const screenConvertArg[] = {
+    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen),
+     sizeof(Screen *)}
+};
+
+/*ARGSUSED*/
+static void FetchDisplayArg(
+    Widget widget,
+    Cardinal *size,
+    XrmValue* value)
+{
+    if (widget == NULL)
+	XtErrorMsg("missingWidget", "fetchDisplayArg", XtCXtToolkitError,
+		   "FetchDisplayArg called without a widget to reference",
+		   (String*)NULL, (Cardinal*)NULL);
+        /* can't return any useful Display and caller will de-ref NULL,
+	   so aborting is the only useful option */
+
+    value->size = sizeof(Display*);
+    value->addr = (XPointer)&DisplayOfScreen(XtScreenOfObject(widget));
+}
+
+static XtConvertArgRec const displayConvertArg[] = {
+    {XtProcedureArg, (XtPointer)FetchDisplayArg, 0},
+};
+
+/*ARGSUSED*/
+Boolean XtCvtStringToCursor(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    static const struct _CursorName {
+	const char	*name;
+	unsigned int	shape;
+    } cursor_names[] = {
+			{"X_cursor",		XC_X_cursor},
+			{"arrow",		XC_arrow},
+			{"based_arrow_down",	XC_based_arrow_down},
+			{"based_arrow_up",	XC_based_arrow_up},
+			{"boat",		XC_boat},
+			{"bogosity",		XC_bogosity},
+			{"bottom_left_corner",	XC_bottom_left_corner},
+			{"bottom_right_corner",	XC_bottom_right_corner},
+			{"bottom_side",		XC_bottom_side},
+			{"bottom_tee",		XC_bottom_tee},
+			{"box_spiral",		XC_box_spiral},
+			{"center_ptr",		XC_center_ptr},
+			{"circle",		XC_circle},
+			{"clock",		XC_clock},
+			{"coffee_mug",		XC_coffee_mug},
+			{"cross",		XC_cross},
+			{"cross_reverse",	XC_cross_reverse},
+			{"crosshair",		XC_crosshair},
+			{"diamond_cross",	XC_diamond_cross},
+			{"dot",			XC_dot},
+			{"dotbox",		XC_dotbox},
+			{"double_arrow",	XC_double_arrow},
+			{"draft_large",		XC_draft_large},
+			{"draft_small",		XC_draft_small},
+			{"draped_box",		XC_draped_box},
+			{"exchange",		XC_exchange},
+			{"fleur",		XC_fleur},
+			{"gobbler",		XC_gobbler},
+			{"gumby",		XC_gumby},
+			{"hand1",		XC_hand1},
+			{"hand2",		XC_hand2},
+			{"heart",		XC_heart},
+			{"icon",		XC_icon},
+			{"iron_cross",		XC_iron_cross},
+			{"left_ptr",		XC_left_ptr},
+			{"left_side",		XC_left_side},
+			{"left_tee",		XC_left_tee},
+			{"leftbutton",		XC_leftbutton},
+			{"ll_angle",		XC_ll_angle},
+			{"lr_angle",		XC_lr_angle},
+			{"man",			XC_man},
+			{"middlebutton",	XC_middlebutton},
+			{"mouse",		XC_mouse},
+			{"pencil",		XC_pencil},
+			{"pirate",		XC_pirate},
+			{"plus",		XC_plus},
+			{"question_arrow",	XC_question_arrow},
+			{"right_ptr",		XC_right_ptr},
+			{"right_side",		XC_right_side},
+			{"right_tee",		XC_right_tee},
+			{"rightbutton",		XC_rightbutton},
+			{"rtl_logo",		XC_rtl_logo},
+			{"sailboat",		XC_sailboat},
+			{"sb_down_arrow",	XC_sb_down_arrow},
+			{"sb_h_double_arrow",	XC_sb_h_double_arrow},
+			{"sb_left_arrow",	XC_sb_left_arrow},
+			{"sb_right_arrow",	XC_sb_right_arrow},
+			{"sb_up_arrow",		XC_sb_up_arrow},
+			{"sb_v_double_arrow",	XC_sb_v_double_arrow},
+			{"shuttle",		XC_shuttle},
+			{"sizing",		XC_sizing},
+			{"spider",		XC_spider},
+			{"spraycan",		XC_spraycan},
+			{"star",		XC_star},
+			{"target",		XC_target},
+			{"tcross",		XC_tcross},
+			{"top_left_arrow",	XC_top_left_arrow},
+			{"top_left_corner",	XC_top_left_corner},
+			{"top_right_corner",	XC_top_right_corner},
+			{"top_side",		XC_top_side},
+			{"top_tee",		XC_top_tee},
+			{"trek",		XC_trek},
+			{"ul_angle",		XC_ul_angle},
+			{"umbrella",		XC_umbrella},
+			{"ur_angle",		XC_ur_angle},
+			{"watch",		XC_watch},
+			{"xterm",		XC_xterm},
+    };
+    const struct _CursorName *nP;
+    char *name = (char *)fromVal->addr;
+    register Cardinal i;
+
+    if (*num_args != 1) {
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	     XtNwrongParameters,"cvtStringToCursor",XtCXtToolkitError,
+             "String to cursor conversion needs display argument",
+              (String *)NULL, (Cardinal *)NULL);
+	return False;
+    }
+
+    for (i=0, nP=cursor_names; i < XtNumber(cursor_names); i++, nP++ ) {
+	if (strcmp(name, nP->name) == 0) {
+	    Display *display = *(Display**)args[0].addr;
+	    Cursor cursor = XCreateFontCursor(display, nP->shape );
+	    donestr(Cursor, cursor, XtRCursor);
+	}
+    }
+    XtDisplayStringConversionWarning(dpy, name, XtRCursor);
+    return False;
+}
+
+/* ARGSUSED */
+static void FreeCursor(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,	/* unused */
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    Display*	display;
+
+    if (*num_args != 1) {
+     XtAppWarningMsg(app,
+	     XtNwrongParameters,"freeCursor",XtCXtToolkitError,
+             "Free Cursor requires display argument",
+              (String *)NULL, (Cardinal *)NULL);
+     return;
+    }
+
+    display = *(Display**)args[0].addr;
+    XFreeCursor( display, *(Cursor*)toVal->addr );
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToDisplay(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    Display	*d;
+
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToDisplay",XtCXtToolkitError,
+                  "String to Display conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+
+    d = XOpenDisplay((char *)fromVal->addr);
+    if (d != NULL)
+	donestr(Display*, d, XtRDisplay);
+
+    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRDisplay);
+    return False;
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtStringToFile(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    FILE *f;
+
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		 XtNwrongParameters,"cvtStringToFile",XtCXtToolkitError,
+                 "String to File conversion needs no extra arguments",
+                 (String *) NULL, (Cardinal *)NULL);
+
+    f = fopen((char *)fromVal->addr, "r");
+    if (f != NULL)
+	donestr(FILE*, f, XtRFile);
+
+    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRFile);
+    return False;
+}
+
+/* ARGSUSED */
+static void FreeFile(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,	/* unused */
+    XrmValuePtr	args,		/* unused */
+    Cardinal	*num_args)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(app,
+		 XtNwrongParameters,"freeFile",XtCXtToolkitError,
+                 "Free File requires no extra arguments",
+                 (String *) NULL, (Cardinal *)NULL);
+
+    fclose( *(FILE**)toVal->addr );
+}
+
+/*ARGSUSED*/
+Boolean XtCvtIntToFloat(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToFloat",XtCXtToolkitError,
+                  "Integer to Float conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+    done(float, (*(int *)fromVal->addr));
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToFloat(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    int ret;
+    float f, nan;
+
+#ifndef ISC /* On ISC this generates a core dump :-( at least with gs */
+    /* depending on the system this may or may not do anything useful */
+    (void) sscanf ("NaNS", "%g",
+		   toVal->addr != NULL ? (float*) toVal->addr : &nan);
+#endif
+
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		 XtNwrongParameters,"cvtStringToFloat",XtCXtToolkitError,
+                 "String to Float conversion needs no extra arguments",
+                 (String *) NULL, (Cardinal *)NULL);
+
+    ret = sscanf (fromVal->addr, "%g", &f);
+    if (ret == 0) {
+	if (toVal->addr != NULL && toVal->size == sizeof nan)
+	    *(float*)toVal->addr = nan;
+	XtDisplayStringConversionWarning (dpy, (char*) fromVal->addr, XtRFloat);
+	return False;
+    }
+    donestr(float, f, XtRFloat);
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToFont(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    Font	f;
+    Display*	display;
+
+    if (*num_args != 1) {
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	     XtNwrongParameters,"cvtStringToFont",XtCXtToolkitError,
+             "String to font conversion needs display argument",
+              (String *) NULL, (Cardinal *)NULL);
+	return False;
+    }
+
+    display = *(Display**)args[0].addr;
+
+    if (CompareISOLatin1((String)fromVal->addr, XtDefaultFont) != 0) {
+	f = XLoadFont(display, (char *)fromVal->addr);
+	if (f != 0) {
+  Done:	    donestr( Font, f, XtRFont );
+	}
+	XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRFont);
+    }
+    /* try and get the default font */
+
+    {
+	XrmName xrm_name[2];
+	XrmClass xrm_class[2];
+	XrmRepresentation rep_type;
+	XrmValue value;
+
+	xrm_name[0] = XrmPermStringToQuark ("xtDefaultFont");
+	xrm_name[1] = 0;
+	xrm_class[0] = XrmPermStringToQuark ("XtDefaultFont");
+	xrm_class[1] = 0;
+	if (XrmQGetResource(XtDatabase(display), xrm_name, xrm_class,
+			    &rep_type, &value)) {
+	    if (rep_type == _XtQString) {
+		f = XLoadFont(display, (char *)value.addr);
+		if (f != 0)
+		    goto Done;
+		else
+		    XtDisplayStringConversionWarning(dpy, (char *)value.addr,
+						     XtRFont);
+	    } else if (rep_type == XtQFont) {
+		f = *(Font*)value.addr;
+		goto Done;
+	    } else if (rep_type == XtQFontStruct) {
+		f = ((XFontStruct*)value.addr)->fid;
+		goto Done;
+	    }
+	}
+    }
+    /* Should really do XListFonts, but most servers support this */
+    f = XLoadFont(display, "-*-*-*-R-*-*-*-120-*-*-*-*-ISO8859-*");
+    if (f != 0)
+	goto Done;
+
+    XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		    "noFont","cvtStringToFont",XtCXtToolkitError,
+		    "Unable to load any usable ISO8859 font",
+		    (String *) NULL, (Cardinal *)NULL);
+
+    return False;
+}
+
+/* ARGSUSED */
+static void FreeFont(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,	/* unused */
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    Display *display;
+    if (*num_args != 1) {
+	XtAppWarningMsg(app,
+	     XtNwrongParameters,"freeFont",XtCXtToolkitError,
+             "Free Font needs display argument",
+              (String *) NULL, (Cardinal *)NULL);
+	return;
+    }
+
+    display = *(Display**)args[0].addr;
+    XUnloadFont( display, *(Font*)toVal->addr );
+}
+
+/*ARGSUSED*/
+Boolean XtCvtIntToFont(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	   XtNwrongParameters,"cvtIntToFont",XtCXtToolkitError,
+           "Integer to Font conversion needs no extra arguments",
+            (String *) NULL, (Cardinal *)NULL);
+    done(Font, *(int*)fromVal->addr);
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToFontSet(
+    Display*    dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer   *closure_ret)
+{
+    XFontSet  f;
+    Display*  display;
+    char**    missing_charset_list;
+    int       missing_charset_count;
+    char*     def_string;
+
+    if (*num_args != 2) {
+      XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+           XtNwrongParameters,"cvtStringToFontSet",XtCXtToolkitError,
+             "String to FontSet conversion needs display and locale arguments",
+              (String *) NULL, (Cardinal *)NULL);
+      return False;
+    }
+
+    display = *(Display**)args[0].addr;
+
+    if (CompareISOLatin1((String)fromVal->addr, XtDefaultFontSet) != 0) {
+      f = XCreateFontSet(display, (char *)fromVal->addr,
+              &missing_charset_list, &missing_charset_count, &def_string);
+        /* Free any returned missing charset list */
+      if (missing_charset_count) {
+          XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+                 XtNmissingCharsetList,"cvtStringToFontSet",XtCXtToolkitError,
+                 "Missing charsets in String to FontSet conversion",
+                 (String *) NULL, (Cardinal *)NULL);
+            XFreeStringList(missing_charset_list);
+      }
+      if (f != NULL) {
+  Done:           donestr( XFontSet, f, XtRFontSet );
+      }
+      XtDisplayStringConversionWarning(dpy, (char *)fromVal->addr, XtRFontSet);
+    }
+    /* try and get the default fontset */
+
+    {
+      XrmName xrm_name[2];
+      XrmClass xrm_class[2];
+      XrmRepresentation rep_type;
+      XrmValue value;
+
+      xrm_name[0] = XrmPermStringToQuark ("xtDefaultFontSet");
+      xrm_name[1] = 0;
+      xrm_class[0] = XrmPermStringToQuark ("XtDefaultFontSet");
+      xrm_class[1] = 0;
+      if (XrmQGetResource(XtDatabase(display), xrm_name, xrm_class,
+                          &rep_type, &value)) {
+          if (rep_type == _XtQString) {
+
+              f = XCreateFontSet(display, (char *)value.addr,
+				 &missing_charset_list, &missing_charset_count,
+				 &def_string);
+                /* Free any returned missing charset list */
+              if (missing_charset_count) {
+                  XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+			 XtNmissingCharsetList,"cvtStringToFontSet",
+			 XtCXtToolkitError,
+			 "Missing charsets in String to FontSet conversion",
+                         (String *) NULL, (Cardinal *)NULL);
+		  XFreeStringList(missing_charset_list);
+              }
+              if (f != NULL)
+                  goto Done;
+              else
+                  XtDisplayStringConversionWarning(dpy, (char *)value.addr,
+                                                   XtRFontSet);
+          } else if (rep_type == XtQFontSet) {
+              f = *(XFontSet*)value.addr;
+              goto Done;
+          }
+      }
+  }
+
+    /* Should really do XListFonts, but most servers support this */
+    f = XCreateFontSet(display, "-*-*-*-R-*-*-*-120-*-*-*-*,*",
+          &missing_charset_list, &missing_charset_count, &def_string);
+
+    /* Free any returned missing charset list */
+    if (missing_charset_count) {
+      XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+             XtNmissingCharsetList,"cvtStringToFontSet",XtCXtToolkitError,
+             "Missing charsets in String to FontSet conversion",
+             (String *) NULL, (Cardinal *)NULL);
+        XFreeStringList(missing_charset_list);
+    }
+    if (f != NULL)
+      goto Done;
+
+    XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+           "noFont","cvtStringToFontSet",XtCXtToolkitError,
+             "Unable to load any usable fontset",
+              (String *) NULL, (Cardinal *)NULL);
+
+    return False;
+}
+
+/*ARGSUSED*/
+static void FreeFontSet(
+    XtAppContext	app,
+    XrmValuePtr		toVal,
+    XtPointer		closure,        /* unused */
+    XrmValuePtr		args,
+    Cardinal		*num_args)
+{
+    Display *display;
+    if (*num_args != 2) {
+      XtAppWarningMsg(app,
+           XtNwrongParameters,"freeFontSet",XtCXtToolkitError,
+             "FreeFontSet needs display and locale arguments",
+              (String *) NULL, (Cardinal *)NULL);
+      return;
+    }
+
+    display = *(Display**)args[0].addr;
+    XFreeFontSet( display, *(XFontSet*)toVal->addr );
+}
+
+/*ARGSUSED*/
+static void FetchLocaleArg(
+    Widget widget,	/* unused */
+    Cardinal *size,	/* unused */
+    XrmValue *value)
+{
+    static XrmString locale;
+
+    locale = XrmQuarkToString(XrmStringToQuark
+			      (setlocale(LC_CTYPE, (char*)NULL)));
+    value->size = sizeof(XrmString);
+    value->addr = (XPointer)&locale;
+}
+
+static XtConvertArgRec const localeDisplayConvertArgs[] = {
+    {XtProcedureArg, (XtPointer)FetchDisplayArg, 0},
+    {XtProcedureArg, (XtPointer)FetchLocaleArg, 0},
+};
+
+
+/*ARGSUSED*/
+Boolean
+XtCvtStringToFontStruct(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    XFontStruct	    *f;
+    Display*	display;
+
+    if (*num_args != 1) {
+     XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	     XtNwrongParameters,"cvtStringToFontStruct",XtCXtToolkitError,
+             "String to font conversion needs display argument",
+              (String *) NULL, (Cardinal *)NULL);
+     return False;
+    }
+
+    display = *(Display**)args[0].addr;
+
+    if (CompareISOLatin1((String)fromVal->addr, XtDefaultFont) != 0) {
+	f = XLoadQueryFont(display, (char *)fromVal->addr);
+	if (f != NULL) {
+  Done:	    donestr( XFontStruct*, f, XtRFontStruct);
+	}
+
+	XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr,
+					 XtRFontStruct);
+    }
+
+    /* try and get the default font */
+
+    {
+	XrmName xrm_name[2];
+	XrmClass xrm_class[2];
+	XrmRepresentation rep_type;
+	XrmValue value;
+
+	xrm_name[0] = XrmPermStringToQuark ("xtDefaultFont");
+	xrm_name[1] = 0;
+	xrm_class[0] = XrmPermStringToQuark ("XtDefaultFont");
+	xrm_class[1] = 0;
+	if (XrmQGetResource(XtDatabase(display), xrm_name, xrm_class,
+			    &rep_type, &value)) {
+	    if (rep_type == _XtQString) {
+		f = XLoadQueryFont(display, (char*)value.addr);
+		if (f != NULL)
+		    goto Done;
+		else
+		    XtDisplayStringConversionWarning(dpy, (char*)value.addr,
+						     XtRFontStruct);
+	    } else if (rep_type == XtQFont) {
+		f = XQueryFont(display, *(Font*)value.addr );
+		if (f != NULL) goto Done;
+	    } else if (rep_type == XtQFontStruct) {
+		f = (XFontStruct*)value.addr;
+		goto Done;
+	    }
+	}
+    }
+    /* Should really do XListFonts, but most servers support this */
+    f = XLoadQueryFont(display, "-*-*-*-R-*-*-*-120-*-*-*-*-ISO8859-*");
+    if (f != NULL)
+	goto Done;
+
+    XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	     "noFont","cvtStringToFontStruct",XtCXtToolkitError,
+             "Unable to load any usable ISO8859 font",
+              (String *) NULL, (Cardinal *)NULL);
+
+    return False;
+}
+
+/* ARGSUSED */
+static void FreeFontStruct(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,	/* unused */
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    Display *display;
+    if (*num_args != 1) {
+     XtAppWarningMsg(app,
+	     XtNwrongParameters,"freeFontStruct",XtCXtToolkitError,
+             "Free FontStruct requires display argument",
+              (String *) NULL, (Cardinal *)NULL);
+     return;
+    }
+
+    display = *(Display**)args[0].addr;
+    XFreeFont( display, *(XFontStruct**)toVal->addr );
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToInt(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    int	i;
+
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToInt",XtCXtToolkitError,
+                  "String to Integer conversion needs no extra arguments",
+                  (String *) NULL, (Cardinal *)NULL);
+    if (IsInteger((String)fromVal->addr, &i))
+	donestr(int, i, XtRInt);
+
+    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRInt);
+    return False;
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToShort(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    int i;
+
+    if (*num_args != 0)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  XtNwrongParameters,"cvtStringToShort",XtCXtToolkitError,
+          "String to Integer conversion needs no extra arguments",
+           (String *) NULL, (Cardinal *)NULL);
+    if (IsInteger((String)fromVal->addr, &i))
+        donestr(short, (short)i, XtRShort);
+
+    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRShort);
+    return False;
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToDimension(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    int i;
+
+    if (*num_args != 0)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  XtNwrongParameters,"cvtStringToDimension",XtCXtToolkitError,
+          "String to Dimension conversion needs no extra arguments",
+           (String *) NULL, (Cardinal *)NULL);
+    if (IsInteger((String)fromVal->addr, &i)) {
+        if ( i < 0 )
+            XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr,
+					     XtRDimension);
+        donestr(Dimension, (Dimension)i, XtRDimension);
+    }
+    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRDimension);
+    return False;
+}
+
+/*ARGSUSED*/
+Boolean XtCvtIntToUnsignedChar(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToUnsignedChar",XtCXtToolkitError,
+                  "Integer to UnsignedChar conversion needs no extra arguments",
+                   (String *)NULL, (Cardinal *)NULL);
+    done(unsigned char, (*(int *)fromVal->addr));
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtStringToUnsignedChar(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    int i;
+
+    if (*num_args != 0)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToUnsignedChar",XtCXtToolkitError,
+                  "String to Integer conversion needs no extra arguments",
+                   (String *) NULL, (Cardinal *)NULL);
+    if (IsInteger((String)fromVal->addr, &i)) {
+        if ( i < 0 || i > 255 )
+            XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr,
+					     XtRUnsignedChar);
+        donestr(unsigned char, i, XtRUnsignedChar);
+    }
+    XtDisplayStringConversionWarning(dpy, (char*)fromVal->addr,
+				     XtRUnsignedChar);
+    return False;
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtColorToPixel(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtXColorToPixel",XtCXtToolkitError,
+                  "Color to Pixel conversion needs no extra arguments",
+                   (String *) NULL, (Cardinal *)NULL);
+    done(Pixel, ((XColor *)fromVal->addr)->pixel);
+}
+
+/*ARGSUSED*/
+Boolean XtCvtIntToPixel(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToPixel",XtCXtToolkitError,
+                  "Integer to Pixel conversion needs no extra arguments",
+                   (String *) NULL, (Cardinal *)NULL);
+    done(Pixel, *(int*)fromVal->addr);
+}
+
+/*ARGSUSED*/
+Boolean XtCvtIntToPixmap(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    if (*num_args != 0)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtIntToPixmap",XtCXtToolkitError,
+                  "Integer to Pixmap conversion needs no extra arguments",
+                   (String *) NULL, (Cardinal *)NULL);
+    done(Pixmap, *(Pixmap*)fromVal->addr);
+}
+
+#ifdef MOTIFBC
+void LowerCase(register char  *source, register *dest)
+{
+    register char ch;
+    int i;
+
+    for (i = 0; (ch = *source) != 0 && i < 999; source++, dest++, i++) {
+    	if ('A' <= ch && ch <= 'Z')
+	    *dest = ch - 'A' + 'a';
+	else
+	    *dest = ch;
+    }
+    *dest = 0;
+}
+#endif
+
+static int CompareISOLatin1 (char *first, char *second)
+{
+    register unsigned char *ap, *bp;
+
+    for (ap = (unsigned char *) first, bp = (unsigned char *) second;
+	 *ap && *bp; ap++, bp++) {
+	register unsigned char a, b;
+
+	if ((a = *ap) != (b = *bp)) {
+	    /* try lowercasing and try again */
+
+	    if ((a >= XK_A) && (a <= XK_Z))
+	      a += (XK_a - XK_A);
+	    else if ((a >= XK_Agrave) && (a <= XK_Odiaeresis))
+	      a += (XK_agrave - XK_Agrave);
+	    else if ((a >= XK_Ooblique) && (a <= XK_Thorn))
+	      a += (XK_oslash - XK_Ooblique);
+
+	    if ((b >= XK_A) && (b <= XK_Z))
+	      b += (XK_a - XK_A);
+	    else if ((b >= XK_Agrave) && (b <= XK_Odiaeresis))
+	      b += (XK_agrave - XK_Agrave);
+	    else if ((b >= XK_Ooblique) && (b <= XK_Thorn))
+	      b += (XK_oslash - XK_Ooblique);
+
+	    if (a != b) break;
+	}
+    }
+    return (((int) *bp) - ((int) *ap));
+}
+
+static void CopyISOLatin1Lowered(char *dst, char *src)
+{
+    unsigned char *dest, *source;
+
+    dest = (unsigned char *) dst; source = (unsigned char *) src;
+
+    for ( ; *source; source++, dest++) {
+	if (*source >= XK_A  && *source <= XK_Z)
+	    *dest = *source + (XK_a - XK_A);
+	else if (*source >= XK_Agrave && *source <= XK_Odiaeresis)
+	    *dest = *source + (XK_agrave - XK_Agrave);
+	else if (*source >= XK_Ooblique && *source <= XK_Thorn)
+	    *dest = *source + (XK_oslash - XK_Ooblique);
+	else
+	    *dest = *source;
+    }
+    *dest = '\0';
+}
+
+/*ARGSUSED*/
+Boolean
+XtCvtStringToInitialState(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    String str = (String)fromVal->addr;
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToInitialState",XtCXtToolkitError,
+                  "String to InitialState conversion needs no extra arguments",
+                   (String *) NULL, (Cardinal *)NULL);
+
+    if (CompareISOLatin1(str, "NormalState") == 0) donestr(int, NormalState, XtRInitialState);
+    if (CompareISOLatin1(str, "IconicState") == 0) donestr(int, IconicState, XtRInitialState);
+    {
+	int val;
+	if (IsInteger(str, &val)) donestr( int, val, XtRInitialState );
+    }
+    XtDisplayStringConversionWarning(dpy, str, XtRInitialState);
+    return False;
+}
+
+static XtConvertArgRec const visualConvertArgs[] = {
+    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen),
+     sizeof(Screen *)},
+    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.depth),
+     sizeof(Cardinal)}
+};
+
+/*ARGSUSED*/
+Boolean XtCvtStringToVisual(
+    Display*	dpy,
+    XrmValuePtr args,		/* Screen, depth */
+    Cardinal    *num_args,	/* 2 */
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)	/* unused */
+{
+    String str = (String)fromVal->addr;
+    int vc;
+    XVisualInfo vinfo;
+    if (*num_args != 2) {
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToVisual",XtCXtToolkitError,
+                  "String to Visual conversion needs screen and depth arguments",
+                   (String *) NULL, (Cardinal *)NULL);
+	return False;
+    }
+
+         if (CompareISOLatin1(str, "StaticGray") == 0)	vc = StaticGray;
+    else if (CompareISOLatin1(str, "StaticColor") == 0)	vc = StaticColor;
+    else if (CompareISOLatin1(str, "TrueColor") == 0)	vc = TrueColor;
+    else if (CompareISOLatin1(str, "GrayScale") == 0)	vc = GrayScale;
+    else if (CompareISOLatin1(str, "PseudoColor") == 0)	vc = PseudoColor;
+    else if (CompareISOLatin1(str, "DirectColor") == 0)	vc = DirectColor;
+    else if (!IsInteger(str, &vc)) {
+	XtDisplayStringConversionWarning(dpy, str, "Visual class name");
+	return False;
+    }
+
+    if (XMatchVisualInfo( XDisplayOfScreen((Screen*)*(Screen**)args[0].addr),
+		     XScreenNumberOfScreen((Screen*)*(Screen**)args[0].addr),
+		     (int)*(int*)args[1].addr,
+		     vc,
+		     &vinfo) ) {
+	donestr( Visual*, vinfo.visual, XtRVisual );
+    }
+    else {
+	String params[2];
+	Cardinal num_params = 2;
+	params[0] = str;
+	params[1] =
+	    DisplayString(XDisplayOfScreen((Screen*)*(Screen**)args[0].addr));
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNconversionError, "stringToVisual", XtCXtToolkitError,
+                  "Cannot find Visual of class %s for display %s",
+		  params, &num_params );
+	return False;
+    }
+}
+
+
+/*ARGSUSED*/
+Boolean XtCvtStringToAtom(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr	fromVal,
+    XrmValuePtr	toVal,
+    XtPointer	*closure_ret)
+{
+    Atom atom;
+    if (*num_args != 1) {
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		  XtNwrongParameters,"cvtStringToAtom",XtCXtToolkitError,
+                  "String to Atom conversion needs Display argument",
+                   (String *) NULL, (Cardinal *)NULL);
+	return False;
+    }
+
+    atom =  XInternAtom( *(Display**)args->addr, (char*)fromVal->addr, False );
+    donestr(Atom, atom, XtRAtom);
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToDirectoryString(
+    Display	*dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    String str;
+    char directory[PATH_MAX+1];
+
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+           XtNwrongParameters,"cvtStringToDirectoryString",XtCXtToolkitError,
+           "String to DirectoryString conversion needs no extra arguments",
+           (String *)NULL, (Cardinal *)NULL);
+
+    str = (String)fromVal->addr;
+    if (CompareISOLatin1(str, "XtCurrentDirectory") == 0) {
+	/* uglier, but does not depend on compiler knowing return type */
+#if !defined(X_NOT_POSIX) || defined(SYSV) || defined(WIN32)
+	if (getcwd(directory, PATH_MAX + 1))
+	    str = directory;
+#else
+	if (getwd(directory))
+	    str = directory;
+#endif
+	if (!str) {
+	    if (errno == EACCES)
+		errno = 0;	    /* reset errno */
+	    XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr,
+					     XtRDirectoryString);
+	    return False;
+	}
+    }
+
+    /* Since memory from the resource database or from static buffers of
+     * system libraries may be freed or overwritten, allocate memory.
+     * The memory is freed when all cache references are released.
+     */
+    str = XtNewString(str);
+    donestr(String, str, XtRDirectoryString);
+}
+
+/*ARGSUSED*/
+static void FreeDirectoryString(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,	/* unused */
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    if (*num_args != 0)
+	XtAppWarningMsg(app,
+		 XtNwrongParameters,"freeDirectoryString",XtCXtToolkitError,
+		 "Free Directory String requires no extra arguments",
+                 (String *) NULL, (Cardinal *) NULL);
+
+    XtFree((char *) toVal->addr);
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToRestartStyle(
+    Display	*dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    String str = (String)fromVal->addr;
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	      XtNwrongParameters,"cvtStringToRestartStyle",XtCXtToolkitError,
+              "String to RestartStyle conversion needs no extra arguments",
+              (String *)NULL, (Cardinal *)NULL);
+
+    if (CompareISOLatin1(str, "RestartIfRunning") == 0)
+	donestr(unsigned char, SmRestartIfRunning, XtRRestartStyle);
+    if (CompareISOLatin1(str, "RestartAnyway") == 0)
+	donestr(unsigned char, SmRestartAnyway, XtRRestartStyle);
+    if (CompareISOLatin1(str, "RestartImmediately") == 0)
+	donestr(unsigned char, SmRestartImmediately, XtRRestartStyle);
+    if (CompareISOLatin1(str, "RestartNever") == 0)
+	donestr(unsigned char, SmRestartNever, XtRRestartStyle);
+    XtDisplayStringConversionWarning(dpy, str, XtRRestartStyle);
+    return False;
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToCommandArgArray(
+    Display	*dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    String *strarray, *ptr;
+    char *src;
+    char *dst, *dst_str;
+    char *start;
+    int tokens, len;
+
+    if (*num_args != 0)
+	XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+            XtNwrongParameters,"cvtStringToCommandArgArray",XtCXtToolkitError,
+            "String to CommandArgArray conversion needs no extra arguments",
+            (String *)NULL, (Cardinal *)NULL);
+
+    src = fromVal->addr;
+    dst = dst_str = __XtMalloc((unsigned) strlen(src) + 1);
+    tokens = 0;
+
+    while (*src != '\0') {
+	/* skip whitespace */
+	while (IsWhitespace(*src) || IsNewline(*src))
+	    src++;
+	/* test for end of string */
+	if (*src == '\0')
+	    break;
+
+	/* start new token */
+	tokens++;
+	start = src;
+	while (*src != '\0' && !IsWhitespace(*src) && !IsNewline(*src)) {
+	    if (*src == '\\' &&
+		(IsWhitespace(*(src+1)) || IsNewline(*(src+1)))) {
+		len = src - start;
+		if (len) {
+		    /* copy preceeding part of token */
+		    memcpy(dst, start, len);
+		    dst += len;
+		}
+		/* skip backslash */
+		src++;
+		/* next part of token starts at whitespace */
+		start = src;
+	    }
+	    src++;
+	}
+	len = src - start;
+	if (len) {
+	    /* copy last part of token */
+	    memcpy(dst, start, len);
+	    dst += len;
+	}
+	*dst = '\0';
+	if (*src != '\0')
+	    dst++;
+    }
+
+    ptr = strarray = (String*) __XtMalloc((Cardinal)(tokens+1) * sizeof(String));
+    src = dst_str;
+    while (--tokens >= 0) {
+	*ptr = src;
+	ptr++;
+	if (tokens) {
+	    len = strlen(src);
+	    src = src + len + 1;
+	}
+    }
+    *ptr = NULL;
+
+    *closure_ret = (XtPointer) strarray;
+    donestr(char**, strarray, XtRCommandArgArray)
+}
+
+/*ARGSUSED*/
+static void ArgArrayDestructor(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    String *strarray;
+
+    if (closure) {
+	strarray = (String*) closure;
+	XtFree(*strarray);
+	XtFree((char *) strarray);
+    }
+}
+
+/*ARGSUSED*/
+Boolean XtCvtStringToGravity (
+    Display* dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr fromVal,
+    XrmValuePtr toVal,
+    XtPointer	*closure_ret)
+{
+    static struct _namepair {
+	XrmQuark quark;
+	char *name;
+	int gravity;
+    } names[] = {
+	{ NULLQUARK, "forget",		ForgetGravity },
+	{ NULLQUARK, "northwest",	NorthWestGravity },
+	{ NULLQUARK, "north",		NorthGravity },
+	{ NULLQUARK, "northeast",	NorthEastGravity },
+	{ NULLQUARK, "west",		WestGravity },
+	{ NULLQUARK, "center",		CenterGravity },
+	{ NULLQUARK, "east",		EastGravity },
+	{ NULLQUARK, "southwest",	SouthWestGravity },
+	{ NULLQUARK, "south",		SouthGravity },
+	{ NULLQUARK, "southeast",	SouthEastGravity },
+	{ NULLQUARK, "static",		StaticGravity },
+	{ NULLQUARK, "unmap",		UnmapGravity },
+	{ NULLQUARK, "0",		ForgetGravity },
+	{ NULLQUARK, "1",		NorthWestGravity },
+	{ NULLQUARK, "2",		NorthGravity },
+	{ NULLQUARK, "3",		NorthEastGravity },
+	{ NULLQUARK, "4",		WestGravity },
+	{ NULLQUARK, "5",		CenterGravity },
+	{ NULLQUARK, "6",		EastGravity },
+	{ NULLQUARK, "7",		SouthWestGravity },
+	{ NULLQUARK, "8",		SouthGravity },
+	{ NULLQUARK, "9",		SouthEastGravity },
+	{ NULLQUARK, "10",		StaticGravity },
+	{ NULLQUARK, NULL,		ForgetGravity }
+    };
+    static Boolean haveQuarks = FALSE;
+    char lowerName[40];
+    XrmQuark q;
+    char *s;
+    struct _namepair *np;
+
+    if (*num_args != 0) {
+        XtAppWarningMsg(XtDisplayToApplicationContext (dpy),
+			"wrongParameters","cvtStringToGravity","XtToolkitError",
+			"String to Gravity conversion needs no extra arguments",
+			(String *) NULL, (Cardinal *)NULL);
+	return False;
+    }
+    if (!haveQuarks) {
+	for (np = names; np->name; np++) {
+	    np->quark = XrmPermStringToQuark (np->name);
+	}
+	haveQuarks = TRUE;
+    }
+    s = (char *) fromVal->addr;
+    if (strlen(s) < sizeof lowerName) {
+	CopyISOLatin1Lowered (lowerName, s);
+	q = XrmStringToQuark (lowerName);
+	for (np = names; np->name; np++)
+	    if (np->quark == q) donestr(int, np->gravity, XtRGravity);
+    }
+    XtDisplayStringConversionWarning(dpy, (char *)fromVal->addr, XtRGravity);
+    return False;
+}
+
+void _XtAddDefaultConverters(
+    ConverterTable table)
+{
+#define Add(from, to, proc, convert_args, num_args, cache) \
+    _XtTableAddConverter(table, from, to, proc, \
+	    (XtConvertArgList) convert_args, (Cardinal)num_args, \
+	    True, cache, (XtDestructor)NULL, True)
+
+#define Add2(from, to, proc, convert_args, num_args, cache, destructor) \
+    _XtTableAddConverter(table, from, to, proc, \
+	    (XtConvertArgList) convert_args, (Cardinal)num_args, \
+	    True, cache, destructor, True)
+
+    Add(XtQColor, XtQPixel,       XtCvtColorToPixel,   NULL, 0, XtCacheNone);
+
+    Add(XtQInt,   XtQBool,	  XtCvtIntToBool,      NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQBoolean,     XtCvtIntToBoolean,   NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQColor,	  XtCvtIntToColor,
+	colorConvertArgs, XtNumber(colorConvertArgs), XtCacheByDisplay);
+    Add(XtQInt,   XtQDimension,   XtCvtIntToShort,     NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQFloat,       XtCvtIntToFloat,     NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQFont,        XtCvtIntToFont,      NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQPixel,       XtCvtIntToPixel,     NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQPixmap,      XtCvtIntToPixmap,    NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQPosition,    XtCvtIntToShort,     NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQShort,       XtCvtIntToShort,     NULL, 0, XtCacheNone);
+    Add(XtQInt,   XtQUnsignedChar,XtCvtIntToUnsignedChar,NULL, 0, XtCacheNone);
+
+    Add(XtQPixel, XtQColor,	  XtCvtIntToColor,
+	colorConvertArgs, XtNumber(colorConvertArgs), XtCacheByDisplay);
+
+    Add(_XtQString, XtQAtom,      XtCvtStringToAtom,
+	displayConvertArg, XtNumber(displayConvertArg), XtCacheNone);
+    Add(_XtQString, XtQBool,      XtCvtStringToBool,    NULL, 0, XtCacheNone);
+    Add(_XtQString, XtQBoolean,   XtCvtStringToBoolean, NULL, 0, XtCacheNone);
+   Add2(_XtQString, XtQCommandArgArray,  XtCvtStringToCommandArgArray,
+	NULL, 0, XtCacheNone | XtCacheRefCount, ArgArrayDestructor);
+   Add2(_XtQString, XtQCursor,    XtCvtStringToCursor,
+	displayConvertArg, XtNumber(displayConvertArg),
+	XtCacheByDisplay, FreeCursor);
+    Add(_XtQString, XtQDimension, XtCvtStringToDimension,NULL, 0, XtCacheNone);
+   Add2(_XtQString, XtQDirectoryString, XtCvtStringToDirectoryString, NULL, 0,
+	XtCacheNone | XtCacheRefCount, FreeDirectoryString);
+    Add(_XtQString, XtQDisplay,   XtCvtStringToDisplay, NULL, 0, XtCacheAll);
+   Add2(_XtQString, XtQFile,      XtCvtStringToFile,    NULL, 0,
+	XtCacheAll | XtCacheRefCount, FreeFile);
+    Add(_XtQString, XtQFloat,     XtCvtStringToFloat,   NULL, 0, XtCacheNone);
+
+   Add2(_XtQString, XtQFont,      XtCvtStringToFont,
+	displayConvertArg, XtNumber(displayConvertArg),
+	XtCacheByDisplay, FreeFont);
+   Add2(_XtQString, XtQFontSet,   XtCvtStringToFontSet,
+	localeDisplayConvertArgs, XtNumber(localeDisplayConvertArgs),
+	XtCacheByDisplay, FreeFontSet);
+   Add2(_XtQString, XtQFontStruct,XtCvtStringToFontStruct,
+	displayConvertArg, XtNumber(displayConvertArg),
+	XtCacheByDisplay, FreeFontStruct);
+
+    Add(_XtQString, XtQGravity,   XtCvtStringToGravity, NULL, 0, XtCacheNone);
+    Add(_XtQString, XtQInitialState, XtCvtStringToInitialState, NULL, 0,
+	XtCacheNone);
+    Add(_XtQString, XtQInt,	     XtCvtStringToInt,    NULL, 0, XtCacheAll);
+   Add2(_XtQString, XtQPixel,        XtCvtStringToPixel,
+	colorConvertArgs, XtNumber(colorConvertArgs),
+	XtCacheByDisplay, FreePixel);
+    Add(_XtQString, XtQPosition,     XtCvtStringToShort,  NULL, 0, XtCacheAll);
+    Add(_XtQString, XtQRestartStyle, XtCvtStringToRestartStyle, NULL, 0,
+	XtCacheNone);
+    Add(_XtQString, XtQShort,        XtCvtStringToShort,  NULL, 0, XtCacheAll);
+    Add(_XtQString, XtQUnsignedChar, XtCvtStringToUnsignedChar,
+	NULL, 0, XtCacheAll);
+   Add2(_XtQString, XtQVisual,       XtCvtStringToVisual,
+	visualConvertArgs, XtNumber(visualConvertArgs),
+	XtCacheByDisplay, NULL);
+
+   _XtAddTMConverters(table);
+}
diff --git a/libXt/src/Core.c b/libXt/src/Core.c
new file mode 100644
index 000000000..24b70444f
--- /dev/null
+++ b/libXt/src/Core.c
@@ -0,0 +1,398 @@
+/* $Xorg: Core.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicP.h"
+#include "EventI.h"
+#include "ConvertI.h"
+#include "TranslateI.h"
+#include "ResourceI.h"
+#include "RectObj.h"
+#include "RectObjP.h"
+#include "ThreadsI.h"
+#include "StringDefs.h"
+
+/******************************************************************
+ *
+ * CoreWidget Resources
+ *
+ ******************************************************************/
+
+externaldef(xtinherittranslations) int _XtInheritTranslations = 0;
+extern String XtCXtToolkitError; /* from IntrinsicI.h */
+static void XtCopyScreen(Widget, int, XrmValue *);
+
+static XtResource resources[] = {
+    {XtNscreen, XtCScreen, XtRScreen, sizeof(Screen*),
+      XtOffsetOf(CoreRec,core.screen), XtRCallProc, (XtPointer)XtCopyScreen},
+/*_XtCopyFromParent does not work for screen because the Display
+parameter is not passed through to the XtRCallProc routines */
+    {XtNdepth, XtCDepth, XtRInt,sizeof(int),
+         XtOffsetOf(CoreRec,core.depth),
+	 XtRCallProc, (XtPointer)_XtCopyFromParent},
+    {XtNcolormap, XtCColormap, XtRColormap, sizeof(Colormap),
+	 XtOffsetOf(CoreRec,core.colormap),
+	 XtRCallProc,(XtPointer)_XtCopyFromParent},
+    {XtNbackground, XtCBackground, XtRPixel,sizeof(Pixel),
+         XtOffsetOf(CoreRec,core.background_pixel),
+	 XtRString, (XtPointer)"XtDefaultBackground"},
+    {XtNbackgroundPixmap, XtCPixmap, XtRPixmap, sizeof(Pixmap),
+         XtOffsetOf(CoreRec,core.background_pixmap),
+	 XtRImmediate, (XtPointer)XtUnspecifiedPixmap},
+    {XtNborderColor, XtCBorderColor, XtRPixel,sizeof(Pixel),
+         XtOffsetOf(CoreRec,core.border_pixel),
+         XtRString,(XtPointer)"XtDefaultForeground"},
+    {XtNborderPixmap, XtCPixmap, XtRPixmap, sizeof(Pixmap),
+         XtOffsetOf(CoreRec,core.border_pixmap),
+	 XtRImmediate, (XtPointer)XtUnspecifiedPixmap},
+    {XtNmappedWhenManaged, XtCMappedWhenManaged, XtRBoolean, sizeof(Boolean),
+         XtOffsetOf(CoreRec,core.mapped_when_managed),
+	 XtRImmediate, (XtPointer)True},
+    {XtNtranslations, XtCTranslations, XtRTranslationTable,
+        sizeof(XtTranslations), XtOffsetOf(CoreRec,core.tm.translations),
+        XtRTranslationTable, (XtPointer)NULL},
+    {XtNaccelerators, XtCAccelerators, XtRAcceleratorTable,
+        sizeof(XtTranslations), XtOffsetOf(CoreRec,core.accelerators),
+        XtRTranslationTable, (XtPointer)NULL}
+    };
+
+static void CoreInitialize(Widget, Widget, ArgList, Cardinal *);
+static void CoreClassPartInitialize(WidgetClass);
+static void CoreDestroy(Widget);
+static void CoreRealize(Widget, XtValueMask *, XSetWindowAttributes *);
+static Boolean CoreSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+static void CoreSetValuesAlmost(Widget, Widget, XtWidgetGeometry *, XtWidgetGeometry *);
+
+static RectObjClassRec unNamedObjClassRec = {
+  {
+    /* superclass	  */	(WidgetClass)&rectObjClassRec,
+    /* class_name	  */	"UnNamedObj",
+    /* widget_size	  */	0,
+    /* class_initialize   */    NULL,
+    /* class_part_initialize*/	NULL,
+    /* class_inited       */	FALSE,
+    /* initialize	  */	NULL,
+    /* initialize_hook    */	NULL,
+    /* realize		  */	(XtProc)XtInheritRealize,
+    /* actions		  */	NULL,
+    /* num_actions	  */	0,
+    /* resources	  */	NULL,
+    /* num_resources	  */	0,
+    /* xrm_class	  */	NULLQUARK,
+    /* compress_motion	  */	FALSE,
+    /* compress_exposure  */	FALSE,
+    /* compress_enterleave*/ 	FALSE,
+    /* visible_interest	  */	FALSE,
+    /* destroy		  */	NULL,
+    /* resize		  */	NULL,
+    /* expose		  */	NULL,
+    /* set_values	  */	NULL,
+    /* set_values_hook    */	NULL,
+    /* set_values_almost  */	XtInheritSetValuesAlmost,
+    /* get_values_hook    */	NULL,
+    /* accept_focus	  */	NULL,
+    /* version		  */	XtVersion,
+    /* callback_offsets   */    NULL,
+    /* tm_table           */    NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */	NULL,
+    /* extension	    */  NULL
+  }
+};
+
+
+externaldef(widgetclassrec) WidgetClassRec widgetClassRec = {
+{
+    /* superclass         */    (WidgetClass)&unNamedObjClassRec,
+    /* class_name         */    "Core",
+    /* widget_size        */    sizeof(WidgetRec),
+    /* class_initialize   */    NULL,
+    /* class_part_initialize*/  CoreClassPartInitialize,
+    /* class_inited       */    FALSE,
+    /* initialize         */    CoreInitialize,
+    /* initialize_hook    */    NULL,
+    /* realize            */    CoreRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    resources,
+    /* num_resources      */    XtNumber(resources),
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/    FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    CoreDestroy,
+    /* resize             */    NULL,
+    /* expose             */    NULL,
+    /* set_values         */    CoreSetValues,
+    /* set_values_hook    */    NULL,
+    /* set_values_almost  */    CoreSetValuesAlmost,
+    /* get_values_hook    */    NULL,
+    /* accept_focus       */    NULL,
+    /* version            */    XtVersion,
+    /* callback_offsets   */    NULL,
+    /* tm_table           */    NULL,
+    /* query_geometry       */  NULL,
+    /* display_accelerator  */  NULL,
+    /* extension            */  NULL
+  }
+};
+externaldef (WidgetClass) WidgetClass widgetClass = &widgetClassRec;
+
+externaldef (WidgetClass) WidgetClass coreWidgetClass = &widgetClassRec;
+
+
+/*ARGSUSED*/
+static void XtCopyScreen(
+    Widget      widget,
+    int		offset,
+    XrmValue    *value)
+{
+    value->addr = (XPointer)(&widget->core.screen);
+}
+
+/*
+ * Start of Core methods
+ */
+
+static void CoreClassPartInitialize(
+    register WidgetClass wc)
+{
+    /* We don't need to check for null super since we'll get to object
+       eventually, and it had better define them!  */
+
+    register WidgetClass super = wc->core_class.superclass;
+
+    LOCK_PROCESS;
+    if (wc->core_class.realize == XtInheritRealize) {
+	wc->core_class.realize = super->core_class.realize;
+    }
+
+    if (wc->core_class.accept_focus == XtInheritAcceptFocus) {
+	wc->core_class.accept_focus = super->core_class.accept_focus;
+    }
+
+    if (wc->core_class.display_accelerator == XtInheritDisplayAccelerator) {
+	wc->core_class.display_accelerator =
+		super->core_class.display_accelerator;
+    }
+
+    if (wc->core_class.tm_table == (char *) XtInheritTranslations) {
+	wc->core_class.tm_table =
+		wc->core_class.superclass->core_class.tm_table;
+    } else if (wc->core_class.tm_table != NULL) {
+	wc->core_class.tm_table =
+	      (String)XtParseTranslationTable(wc->core_class.tm_table);
+    }
+
+    if (wc->core_class.actions != NULL) {
+	Boolean inPlace;
+
+	if (wc->core_class.version == XtVersionDontCheck)
+	    inPlace = True;
+	else
+	    inPlace = (wc->core_class.version < XtVersion) ? False : True;
+
+	/* Compile the action table into a more efficient form */
+        wc->core_class.actions = (XtActionList) _XtInitializeActionData(
+	    wc->core_class.actions, wc->core_class.num_actions, inPlace);
+    }
+    UNLOCK_PROCESS;
+}
+/* ARGSUSED */
+static void CoreInitialize(
+    Widget   requested_widget,
+    register Widget new_widget,
+    ArgList args,
+    Cardinal *num_args)
+{
+    XtTranslations save1, save2;
+    new_widget->core.event_table = NULL;
+    new_widget->core.tm.proc_table = NULL;
+    new_widget->core.tm.lastEventTime = 0;
+    /* magic semi-resource fetched by GetResources */
+    save1 = (XtTranslations)new_widget->core.tm.current_state;
+    new_widget->core.tm.current_state = NULL;
+    save2 = new_widget->core.tm.translations;
+    LOCK_PROCESS;
+    new_widget->core.tm.translations =
+	(XtTranslations)new_widget->core.widget_class->core_class.tm_table;
+    UNLOCK_PROCESS;
+    if (save1)
+	_XtMergeTranslations(new_widget, save1, save1->operation);
+    if (save2)
+	_XtMergeTranslations(new_widget, save2, save2->operation);
+}
+
+static void CoreRealize(
+    Widget		 widget,
+    XtValueMask		 *value_mask,
+    XSetWindowAttributes *attributes)
+{
+    XtCreateWindow(widget, (unsigned int) InputOutput,
+	(Visual *) CopyFromParent, *value_mask, attributes);
+} /* CoreRealize */
+
+static void CoreDestroy (
+     Widget    widget)
+{
+    _XtFreeEventTable(&widget->core.event_table);
+    _XtDestroyTMData(widget);
+    XtUnregisterDrawable(XtDisplay(widget), widget->core.window);
+
+    if (widget->core.popup_list != NULL)
+        XtFree((char *)widget->core.popup_list);
+
+} /* CoreDestroy */
+
+/* ARGSUSED */
+static Boolean CoreSetValues(
+    Widget old, Widget reference, Widget new,
+    ArgList args,
+    Cardinal *num_args)
+{
+    Boolean redisplay;
+    Mask    window_mask;
+    XSetWindowAttributes attributes;
+    XtTranslations save;
+
+    redisplay = FALSE;
+    if  (old->core.tm.translations != new->core.tm.translations) {
+	save = new->core.tm.translations;
+	new->core.tm.translations = old->core.tm.translations;
+	_XtMergeTranslations(new, save, XtTableReplace);
+    }
+
+    /* Check everything that depends upon window being realized */
+    if (XtIsRealized(old)) {
+	window_mask = 0;
+	/* Check window attributes */
+	if (old->core.background_pixel != new->core.background_pixel
+	    && new->core.background_pixmap == XtUnspecifiedPixmap) {
+	   attributes.background_pixel  = new->core.background_pixel;
+	   window_mask |= CWBackPixel;
+	   redisplay = TRUE;
+	}
+	if (old->core.background_pixmap != new->core.background_pixmap) {
+	   if (new->core.background_pixmap == XtUnspecifiedPixmap) {
+	       window_mask |= CWBackPixel;
+	       attributes.background_pixel  = new->core.background_pixel;
+	   }
+	   else {
+	       attributes.background_pixmap = new->core.background_pixmap;
+	       window_mask &= ~CWBackPixel;
+	       window_mask |= CWBackPixmap;
+	   }
+	   redisplay = TRUE;
+	}
+	if (old->core.border_pixel != new->core.border_pixel
+	    && new->core.border_pixmap == XtUnspecifiedPixmap) {
+	   attributes.border_pixel  = new->core.border_pixel;
+	   window_mask |= CWBorderPixel;
+       }
+	if (old->core.border_pixmap != new->core.border_pixmap) {
+	   if (new->core.border_pixmap == XtUnspecifiedPixmap) {
+	       window_mask |= CWBorderPixel;
+	       attributes.border_pixel  = new->core.border_pixel;
+	   }
+	   else {
+	       attributes.border_pixmap = new->core.border_pixmap;
+	       window_mask &= ~CWBorderPixel;
+	       window_mask |= CWBorderPixmap;
+	   }
+       }
+	if (old->core.depth != new->core.depth) {
+	   XtAppWarningMsg(XtWidgetToApplicationContext(old),
+		    "invalidDepth","setValues",XtCXtToolkitError,
+               "Can't change widget depth", (String *)NULL, (Cardinal *)NULL);
+	   new->core.depth = old->core.depth;
+	}
+	if (old->core.colormap != new->core.colormap) {
+	    window_mask |= CWColormap;
+	    attributes.colormap = new->core.colormap;
+	}
+	if (window_mask != 0) {
+	    /* Actually change X window attributes */
+	    XChangeWindowAttributes(
+		XtDisplay(new), XtWindow(new), window_mask, &attributes);
+	}
+
+	if (old->core.mapped_when_managed != new->core.mapped_when_managed) {
+	    Boolean mapped_when_managed = new->core.mapped_when_managed;
+	    new->core.mapped_when_managed = !mapped_when_managed;
+	    XtSetMappedWhenManaged(new, mapped_when_managed);
+	}
+    } /* if realized */
+
+    return redisplay;
+} /* CoreSetValues */
+
+/*ARGSUSED*/
+static void CoreSetValuesAlmost(
+    Widget		old,
+    Widget		new,
+    XtWidgetGeometry    *request,
+    XtWidgetGeometry    *reply)
+{
+    *request = *reply;
+}
diff --git a/libXt/src/Create.c b/libXt/src/Create.c
new file mode 100644
index 000000000..ab98c3d4e
--- /dev/null
+++ b/libXt/src/Create.c
@@ -0,0 +1,778 @@
+/* $Xorg: Create.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Create.c,v 3.10 2002/12/17 04:50:58 dawes Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "VarargsI.h"
+#include "ShellP.h"
+#include "CreateI.h"
+#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
+#include "ResConfigP.h"
+#endif
+#include <stdio.h>
+
+static String XtNxtCreateWidget = "xtCreateWidget";
+static String XtNxtCreatePopupShell = "xtCreatePopupShell";
+
+static void
+CallClassPartInit(WidgetClass ancestor, WidgetClass wc)
+{
+    if (ancestor->core_class.superclass != NULL) {
+	CallClassPartInit(ancestor->core_class.superclass, wc);
+    }
+    if (ancestor->core_class.class_part_initialize != NULL) {
+	(*(ancestor->core_class.class_part_initialize)) (wc);
+    }
+}
+
+void
+XtInitializeWidgetClass(WidgetClass wc)
+{
+    XtEnum inited;
+    LOCK_PROCESS;
+    if (wc->core_class.class_inited) {
+	UNLOCK_PROCESS;
+	return;
+    }
+    inited = 0x01;
+    {
+	WidgetClass pc;
+#define LeaveIfClass(c, d) if (pc == c) { inited = d; break; }
+	for (pc = wc; pc; pc = pc->core_class.superclass) {
+	    LeaveIfClass(rectObjClass, 0x01 |
+			 RectObjClassFlag);
+	    LeaveIfClass(coreWidgetClass, 0x01 |
+			 RectObjClassFlag |
+			 WidgetClassFlag);
+	    LeaveIfClass(compositeWidgetClass, 0x01 |
+			 RectObjClassFlag |
+			 WidgetClassFlag |
+			 CompositeClassFlag);
+	    LeaveIfClass(constraintWidgetClass, 0x01 |
+			 RectObjClassFlag |
+			 WidgetClassFlag |
+			 CompositeClassFlag |
+			 ConstraintClassFlag);
+	    LeaveIfClass(shellWidgetClass, 0x01 |
+			 RectObjClassFlag |
+			 WidgetClassFlag |
+			 CompositeClassFlag |
+			 ShellClassFlag);
+	    LeaveIfClass(wmShellWidgetClass, 0x01 |
+			 RectObjClassFlag |
+			 WidgetClassFlag |
+			 CompositeClassFlag |
+			 ShellClassFlag |
+			 WMShellClassFlag);
+	    LeaveIfClass(topLevelShellWidgetClass, 0x01 |
+			 RectObjClassFlag |
+			 WidgetClassFlag |
+			 CompositeClassFlag |
+			 ShellClassFlag |
+			 WMShellClassFlag |
+			 TopLevelClassFlag);
+	}
+#undef LeaveIfClass
+    }
+    if (wc->core_class.version != XtVersion &&
+	wc->core_class.version != XtVersionDontCheck) {
+	String param[3];
+	String mismatch = "Widget class %s version mismatch (recompilation needed):\n  widget %d vs. intrinsics %d.";
+	String recompile = "Widget class %s must be re-compiled.";
+	Cardinal num_params;
+
+	param[0] = wc->core_class.class_name;
+	param[1] = (String) wc->core_class.version;
+	param[2] = (String) XtVersion;
+
+	if (wc->core_class.version == (11 * 1000 + 5) || /* MIT X11R5 */
+	    wc->core_class.version == (11 * 1000 + 4)) { /* MIT X11R4 */
+	    if ((inited & WMShellClassFlag) &&
+		(sizeof(Boolean) != sizeof(char) ||
+		 sizeof(Atom) != sizeof(Widget) ||
+		 sizeof(Atom) != sizeof(String))) {
+		num_params=3;
+		XtWarningMsg("versionMismatch","widget",XtCXtToolkitError,
+			     mismatch, param, &num_params);
+		num_params=1;
+		XtErrorMsg("R4orR5versionMismatch","widget",XtCXtToolkitError,
+			   recompile, param, &num_params);
+
+	    }
+	}
+	else if (wc->core_class.version == (11 * 1000 + 3)) { /* MIT X11R3 */
+	    if (inited & ShellClassFlag) {
+		num_params=1;
+		XtWarningMsg("r3versionMismatch","widget",XtCXtToolkitError,
+			     "Shell Widget class %s binary compiled for R3",
+			     param,&num_params);
+		XtErrorMsg("R3versionMismatch","widget",XtCXtToolkitError,
+			   recompile, param, &num_params);
+	    }
+	}
+	else {
+	    num_params=3;
+	    XtWarningMsg("versionMismatch","widget",XtCXtToolkitError,
+			 mismatch, param, &num_params);
+	    if (wc->core_class.version == (2 * 1000 + 2)) /* MIT X11R2 */ {
+		num_params=1;
+		XtErrorMsg("r2versionMismatch","widget",XtCXtToolkitError,
+			   recompile, param, &num_params);
+	    }
+	}
+    }
+
+    if ((wc->core_class.superclass != NULL)
+	    && (!(wc->core_class.superclass->core_class.class_inited)))
+ 	XtInitializeWidgetClass(wc->core_class.superclass);
+
+    if (wc->core_class.class_initialize != NULL)
+	(*(wc->core_class.class_initialize))();
+    CallClassPartInit(wc, wc);
+    wc->core_class.class_inited = inited;
+    UNLOCK_PROCESS;
+}
+
+static void
+CallInitialize (
+    WidgetClass class,
+    Widget      req_widget,
+    Widget      new_widget,
+    ArgList     args,
+    Cardinal    num_args)
+{
+    WidgetClass superclass;
+    XtInitProc initialize;
+    XtArgsProc initialize_hook;
+
+    LOCK_PROCESS;
+    superclass = class->core_class.superclass;
+    UNLOCK_PROCESS;
+    if (superclass)
+        CallInitialize (superclass, req_widget, new_widget, args, num_args);
+    LOCK_PROCESS;
+    initialize = class->core_class.initialize;
+    UNLOCK_PROCESS;
+    if (initialize)
+	(*initialize) (req_widget, new_widget, args, &num_args);
+    LOCK_PROCESS;
+    initialize_hook = class->core_class.initialize_hook;
+    UNLOCK_PROCESS;
+    if (initialize_hook)
+	(*initialize_hook) (new_widget, args, &num_args);
+}
+
+static void
+CallConstraintInitialize (
+    ConstraintWidgetClass class,
+    Widget	req_widget,
+    Widget	new_widget,
+    ArgList	args,
+    Cardinal	num_args)
+{
+    WidgetClass superclass;
+    XtInitProc initialize;
+
+    LOCK_PROCESS;
+    superclass = class->core_class.superclass;
+    UNLOCK_PROCESS;
+    if (superclass != constraintWidgetClass)
+	CallConstraintInitialize((ConstraintWidgetClass) superclass,
+		req_widget, new_widget, args, num_args);
+    LOCK_PROCESS;
+    initialize = class->constraint_class.initialize;
+    UNLOCK_PROCESS;
+    if (initialize)
+        (*initialize) (req_widget, new_widget, args, &num_args);
+}
+
+static Widget
+xtWidgetAlloc(
+    WidgetClass widget_class,
+    ConstraintWidgetClass parent_constraint_class,
+    Widget parent,
+    String name,
+    ArgList     args,		/* must be NULL if typed_args is non-NULL */
+    Cardinal    num_args,
+    XtTypedArgList typed_args,	/* must be NULL if args is non-NULL */
+    Cardinal	num_typed_args)
+{
+    Widget widget;
+    Cardinal                wsize, csize = 0;
+    ObjectClassExtension    ext;
+
+    LOCK_PROCESS;
+    if (! (widget_class->core_class.class_inited))
+	XtInitializeWidgetClass(widget_class);
+    ext = (ObjectClassExtension)
+	XtGetClassExtension(widget_class,
+			    XtOffsetOf(ObjectClassRec, object_class.extension),
+			    NULLQUARK, XtObjectExtensionVersion,
+			    sizeof(ObjectClassExtensionRec));
+    if (parent_constraint_class)
+	csize = parent_constraint_class->constraint_class.constraint_size;
+    if (ext && ext->allocate) {
+	XtAllocateProc allocate;
+	Cardinal extra = 0;
+	Cardinal nargs = num_args;
+	Cardinal ntyped = num_typed_args;
+	allocate = ext->allocate;
+	UNLOCK_PROCESS;
+	(*allocate)(widget_class, &csize, &extra, args, &nargs,
+		    typed_args, &ntyped, &widget, NULL);
+    } else {
+	wsize = widget_class->core_class.widget_size;
+	UNLOCK_PROCESS;
+	if (csize) {
+	    if (sizeof(struct {char a; double b;}) !=
+		(sizeof(struct {char a; unsigned long b;}) -
+		 sizeof(unsigned long) + sizeof(double))) {
+		if (csize && !(csize & (sizeof(double) - 1)))
+		    wsize = (wsize + sizeof(double) - 1) & ~(sizeof(double)-1);
+	    }
+	}
+	widget = (Widget) __XtMalloc((unsigned)(wsize + csize));
+	bzero(widget, wsize + csize);
+	widget->core.constraints =
+	    (csize ? (XtPointer)((char *)widget + wsize) : NULL);
+    }
+    widget->core.self = widget;
+    widget->core.parent = parent;
+    widget->core.widget_class = widget_class;
+    widget->core.xrm_name = StringToName((name != NULL) ? name : "");
+    widget->core.being_destroyed =
+	(parent != NULL ? parent->core.being_destroyed : FALSE);
+    return widget;
+}
+
+static void
+CompileCallbacks(
+    Widget widget)
+{
+    CallbackTable offsets;
+    InternalCallbackList* cl;
+    int i;
+
+    LOCK_PROCESS;
+    offsets = (CallbackTable)
+	widget->core.widget_class->core_class.callback_private;
+
+    for (i = (int)(long) *(offsets++); --i >= 0; offsets++) {
+	cl = (InternalCallbackList *)
+	    ((char *) widget - (*offsets)->xrm_offset - 1);
+	if (*cl)
+	    *cl = _XtCompileCallbackList((XtCallbackList) *cl);
+    }
+    UNLOCK_PROCESS;
+}
+
+static Widget
+xtCreate(
+    char        *name,
+    char        *class,
+    WidgetClass widget_class,
+    Widget      parent,
+    Screen*     default_screen, /* undefined when creating a nonwidget */
+    ArgList     args,		/* must be NULL if typed_args is non-NULL */
+    Cardinal    num_args,
+    XtTypedArgList typed_args,	/* must be NULL if args is non-NULL */
+    Cardinal	num_typed_args,
+    ConstraintWidgetClass parent_constraint_class,
+        /* NULL if not a subclass of Constraint or if child is popup shell */
+    XtWidgetProc post_proc)
+{
+    /* need to use strictest alignment rules possible in next two decls. */
+    double                  widget_cache[100];
+    double                  constraint_cache[20];
+    Widget                  req_widget;
+    XtPointer               req_constraints = NULL;
+    Cardinal                wsize, csize;
+    Widget	    	    widget;
+    XtCacheRef		    *cache_refs;
+    Cardinal		    i;
+    XtCreateHookDataRec     call_data;
+
+    widget = xtWidgetAlloc(widget_class, parent_constraint_class, parent,
+		name, args, num_args, typed_args, num_typed_args);
+
+    if (XtIsRectObj(widget)) {
+	widget->core.managed = FALSE;
+    }
+    if (XtIsWidget(widget)) {
+	widget->core.name = XrmNameToString(widget->core.xrm_name);
+        widget->core.screen = default_screen;
+        widget->core.tm.translations = NULL;
+	widget->core.window = (Window) 0;
+	widget->core.visible = TRUE;
+	widget->core.popup_list = NULL;
+	widget->core.num_popups = 0;
+    };
+    LOCK_PROCESS;
+    if (XtIsApplicationShell(widget)) {
+	ApplicationShellWidget a = (ApplicationShellWidget) widget;
+	if (class != NULL)
+	    a->application.xrm_class = StringToClass(class);
+	else
+	    a->application.xrm_class = widget_class->core_class.xrm_class;
+	a->application.class = XrmQuarkToString(a->application.xrm_class);
+    }
+    UNLOCK_PROCESS;
+
+    /* fetch resources */
+    cache_refs = _XtGetResources(widget, args, num_args,
+		typed_args, &num_typed_args);
+
+    /* Convert typed arg list to arg list */
+    if (typed_args != NULL && num_typed_args > 0) {
+	args = (ArgList)ALLOCATE_LOCAL(sizeof(Arg) * num_typed_args);
+	if (args == NULL) _XtAllocError(NULL);
+	for (i = 0; i < num_typed_args; i++) {
+	    args[i].name = typed_args[i].name;
+	    args[i].value = typed_args[i].value;
+	}
+	num_args = num_typed_args;
+    }
+
+    CompileCallbacks(widget);
+
+    if (cache_refs != NULL) {
+	XtAddCallback(widget, XtNdestroyCallback,
+		XtCallbackReleaseCacheRefList, (XtPointer)cache_refs );
+    }
+
+    wsize = widget_class->core_class.widget_size;
+    csize = 0;
+    req_widget = (Widget) XtStackAlloc(wsize, widget_cache);
+    (void) memmove ((char *) req_widget, (char *) widget, (int) wsize);
+    CallInitialize (XtClass(widget), req_widget, widget, args, num_args);
+    if (parent_constraint_class != NULL) {
+        csize = parent_constraint_class->constraint_class.constraint_size;
+	if (csize) {
+	    req_constraints = XtStackAlloc(csize, constraint_cache);
+	    (void) memmove((char*)req_constraints, widget->core.constraints,
+			(int)csize);
+	    req_widget->core.constraints = req_constraints;
+	} else req_widget->core.constraints = NULL;
+	CallConstraintInitialize(parent_constraint_class, req_widget, widget,
+		args, num_args);
+	if (csize) {
+	    XtStackFree(req_constraints, constraint_cache);
+	}
+    }
+    XtStackFree((XtPointer)req_widget, widget_cache);
+    if (post_proc != (XtWidgetProc) NULL) {
+	Widget hookobj;
+	(*post_proc)(widget);
+	hookobj = XtHooksOfDisplay((default_screen != (Screen*) NULL) ?
+		default_screen->display :
+		XtDisplayOfObject(parent));
+	if (XtHasCallbacks(hookobj, XtNcreateHook) == XtCallbackHasSome) {
+
+	    call_data.type = XtHcreate;
+	    call_data.widget = widget;
+	    call_data.args = args;
+	    call_data.num_args = num_args;
+	    XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.createhook_callbacks,
+		(XtPointer)&call_data);
+	}
+    }
+    if (typed_args != NULL) {
+	while (num_typed_args-- > 0) {
+
+	    /* In GetResources we may have dynamically alloc'd store to hold */
+	    /* a copy of a resource which was larger then sizeof(XtArgVal). */
+	    /* We must free this store now in order to prevent a memory leak */
+	    /* A typed arg that has a converted value in dynamic store has a */
+	    /* negated size field. */
+
+	    if (typed_args->type != NULL && typed_args->size < 0) {
+		XtFree((char*)typed_args->value);
+		typed_args->size = -(typed_args->size);
+	    }
+	    typed_args++;
+	}
+	DEALLOCATE_LOCAL((char*)args);
+    }
+    return (widget);
+}
+
+static void
+widgetPostProc(Widget w)
+{
+    XtWidgetProc insert_child;
+    Widget parent = XtParent(w);
+    String param = XtName(w);
+    Cardinal num_params = 1;
+
+    if (XtIsComposite(parent)) {
+	LOCK_PROCESS;
+	insert_child = ((CompositeWidgetClass) parent->core.widget_class)->
+	    composite_class.insert_child;
+	UNLOCK_PROCESS;
+    } else {
+	return;
+    }
+    if (insert_child == NULL) {
+	XtAppErrorMsg(XtWidgetToApplicationContext(parent),
+		"nullProc","insertChild",XtCXtToolkitError,
+		"\"%s\" parent has NULL insert_child method",
+		&param, &num_params);
+    } else {
+	(*insert_child) (w);
+    }
+}
+
+Widget
+_XtCreateWidget(
+    String      name,
+    WidgetClass widget_class,
+    Widget      parent,
+    ArgList     args,
+    Cardinal    num_args,
+    XtTypedArgList typed_args,
+    Cardinal	num_typed_args)
+{
+    register Widget	    widget;
+    ConstraintWidgetClass   cwc;
+    Screen*                 default_screen;
+    XtEnum		    class_inited;
+    String		    params[3];
+    Cardinal		    num_params;
+
+    params[0] = name;
+    num_params = 1;
+
+    if (parent == NULL) {
+	XtErrorMsg("invalidParent", XtNxtCreateWidget, XtCXtToolkitError,
+		   "XtCreateWidget \"%s\" requires non-NULL parent",
+		   params, &num_params);
+    } else if (widget_class == NULL) {
+	XtAppErrorMsg(XtWidgetToApplicationContext(parent),
+		      "invalidClass", XtNxtCreateWidget, XtCXtToolkitError,
+		      "XtCreateWidget \"%s\" requires non-NULL widget class",
+		      params, &num_params);
+    }
+    LOCK_PROCESS;
+    if (!widget_class->core_class.class_inited)
+	XtInitializeWidgetClass(widget_class);
+    class_inited = widget_class->core_class.class_inited;
+    UNLOCK_PROCESS;
+    if ((class_inited & WidgetClassFlag) == 0) {
+	/* not a widget */
+	default_screen = NULL;
+	if (XtIsComposite(parent)) {
+	    CompositeClassExtension ext;
+	    ext = (CompositeClassExtension)
+		XtGetClassExtension(XtClass(parent),
+		      XtOffsetOf(CompositeClassRec, composite_class.extension),
+		      NULLQUARK, 1L, (Cardinal) 0);
+	    LOCK_PROCESS;
+	    if (ext &&
+		(ext->version > XtCompositeExtensionVersion ||
+		 ext->record_size > sizeof(CompositeClassExtensionRec))) {
+		params[1] = XtClass(parent)->core_class.class_name;
+		num_params = 2;
+		XtAppWarningMsg(XtWidgetToApplicationContext(parent),
+				"invalidExtension", XtNxtCreateWidget,
+				XtCXtToolkitError,
+	   "widget \"%s\" class %s has invalid CompositeClassExtension record",
+				params, &num_params);
+	    }
+	    if (!ext || !ext->accepts_objects) {
+		params[1] = XtName(parent);
+		num_params = 2;
+		XtAppErrorMsg(XtWidgetToApplicationContext(parent),
+			      "nonWidget", XtNxtCreateWidget,XtCXtToolkitError,
+"attempt to add non-widget child \"%s\" to parent \"%s\" which supports only widgets",
+			      params, &num_params);
+	    }
+	    UNLOCK_PROCESS;
+	}
+    } else {
+	default_screen = parent->core.screen;
+    }
+
+    if (XtIsConstraint(parent)) {
+	cwc = (ConstraintWidgetClass) parent->core.widget_class;
+    } else {
+	cwc = NULL;
+    }
+    widget = xtCreate(name, (char *)NULL, widget_class, parent,
+		default_screen, args, num_args,
+		typed_args, num_typed_args, cwc, widgetPostProc);
+    return (widget);
+}
+
+Widget
+XtCreateWidget(
+    _Xconst char* name,
+    WidgetClass widget_class,
+    Widget   	parent,
+    ArgList 	args,
+    Cardinal    num_args
+    )
+{
+    Widget retval;
+    WIDGET_TO_APPCON(parent);
+
+    LOCK_APP(app);
+    retval = _XtCreateWidget((String)name, widget_class, parent, args, num_args,
+		(XtTypedArgList)NULL, (Cardinal)0);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+
+Widget
+XtCreateManagedWidget(
+    _Xconst char* name,
+    WidgetClass widget_class,
+    Widget      parent,
+    ArgList     args,
+    Cardinal    num_args
+    )
+{
+    register Widget	    widget;
+    WIDGET_TO_APPCON(parent);
+
+    LOCK_APP(app);
+    XtCheckSubclass(parent, compositeWidgetClass, "in XtCreateManagedWidget");
+    widget = _XtCreateWidget((String)name, widget_class, parent, args,
+		num_args, (XtTypedArgList)NULL, (Cardinal) 0);
+    XtManageChild(widget);
+    UNLOCK_APP(app);
+    return widget;
+}
+
+static void
+popupPostProc(Widget w)
+{
+    Widget parent = XtParent(w);
+
+    parent->core.popup_list =
+	(WidgetList) XtRealloc((char*) parent->core.popup_list,
+		(unsigned) (parent->core.num_popups+1) * sizeof(Widget));
+    parent->core.popup_list[parent->core.num_popups++] = w;
+}
+
+Widget
+_XtCreatePopupShell(
+    String      name,
+    WidgetClass widget_class,
+    Widget      parent,
+    ArgList     args,
+    Cardinal    num_args,
+    XtTypedArgList      typed_args,
+    Cardinal            num_typed_args)
+{
+    register Widget widget;
+    Screen* default_screen;
+
+    if (parent == NULL) {
+	XtErrorMsg("invalidParent",XtNxtCreatePopupShell,XtCXtToolkitError,
+		"XtCreatePopupShell requires non-NULL parent",
+		(String *)NULL, (Cardinal *)NULL);
+    } else if (widget_class == NULL) {
+	XtAppErrorMsg(XtWidgetToApplicationContext(parent),
+		"invalidClass",XtNxtCreatePopupShell,XtCXtToolkitError,
+		"XtCreatePopupShell requires non-NULL widget class",
+		(String *)NULL, (Cardinal *)NULL);
+    }
+    XtCheckSubclass(parent, coreWidgetClass, "in XtCreatePopupShell");
+    default_screen = parent->core.screen;
+    widget = xtCreate(name, (char *)NULL, widget_class, parent,
+		default_screen, args, num_args, typed_args,
+		num_typed_args, (ConstraintWidgetClass)NULL,
+		popupPostProc);
+
+#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
+    XtAddEventHandler (widget, (EventMask) PropertyChangeMask, FALSE,
+		(XtEventHandler) _XtResourceConfigurationEH, NULL);
+#endif
+    return(widget);
+}
+
+Widget
+XtCreatePopupShell(
+    _Xconst char* name,
+    WidgetClass widget_class,
+    Widget      parent,
+    ArgList     args,
+    Cardinal    num_args
+    )
+{
+    Widget retval;
+    WIDGET_TO_APPCON(parent);
+
+    LOCK_APP(app);
+    retval = _XtCreatePopupShell((String)name, widget_class, parent, args,
+		num_args, (XtTypedArgList)NULL, (Cardinal)0);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+Widget
+_XtAppCreateShell(
+    String      name,
+    String      class,
+    WidgetClass widget_class,
+    Display*    display,
+    ArgList     args,
+    Cardinal    num_args,
+    XtTypedArgList typed_args,
+    Cardinal	num_typed_args)
+{
+    Widget shell;
+
+    if (widget_class == NULL) {
+	XtAppErrorMsg(XtDisplayToApplicationContext(display),
+		"invalidClass","xtAppCreateShell",XtCXtToolkitError,
+		"XtAppCreateShell requires non-NULL widget class",
+		(String *)NULL, (Cardinal *)NULL);
+    }
+    if (name == NULL)
+	name = XrmNameToString(_XtGetPerDisplay(display)->name);
+    shell = xtCreate(name, class, widget_class, (Widget)NULL,
+		(Screen*)DefaultScreenOfDisplay(display),
+		args, num_args, typed_args, num_typed_args,
+		(ConstraintWidgetClass) NULL, _XtAddShellToHookObj);
+
+#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
+    XtAddEventHandler (shell, (EventMask) PropertyChangeMask, FALSE,
+		(XtEventHandler) _XtResourceConfigurationEH, NULL);
+#endif
+
+    return shell;
+}
+
+Widget
+XtAppCreateShell(
+    _Xconst char*       name,
+    _Xconst char*       class,
+    WidgetClass         widget_class,
+    Display             *display,
+    ArgList             args,
+    Cardinal            num_args
+    )
+{
+    Widget retval;
+    DPY_TO_APPCON(display);
+
+    LOCK_APP(app);
+    retval = _XtAppCreateShell((String)name, (String)class, widget_class,
+		display, args, num_args, (XtTypedArgList)NULL, (Cardinal)0);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+/* ARGSUSED */
+Widget
+XtCreateApplicationShell(
+    _Xconst char* name,		/* unused in R3 and later */
+    WidgetClass widget_class,
+    ArgList     args,
+    Cardinal    num_args
+    )
+{
+    Widget retval;
+    Display* dpy;
+    XrmClass class;
+    XtAppContext app = _XtDefaultAppContext();
+
+    LOCK_APP(app);
+    dpy = app->list[0];
+    class = _XtGetPerDisplay(dpy)->class;
+
+    retval = _XtAppCreateShell((String)NULL, XrmQuarkToString((XrmQuark)class),
+		widget_class, dpy, args, num_args,
+		(XtTypedArgList)NULL, (Cardinal)0);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+Widget
+_XtCreateHookObj(Screen* screen)
+{
+    Widget req_widget;
+    double widget_cache[100];
+    Cardinal wsize = 0;
+    Widget hookobj = xtWidgetAlloc(hookObjectClass,
+		(ConstraintWidgetClass)NULL,
+		(Widget)NULL, "hooks",
+		(ArgList)NULL, (Cardinal)0,
+		(XtTypedArgList)NULL, (Cardinal)0);
+
+    ((HookObject)hookobj)->hooks.screen = screen;
+    (void) _XtGetResources(hookobj, (ArgList)NULL, 0,
+		(XtTypedArgList)NULL, &wsize);
+    CompileCallbacks(hookobj);
+    wsize = hookObjectClass->core_class.widget_size;
+    req_widget = (Widget) XtStackAlloc(wsize, widget_cache);
+    (void) memmove ((char *) req_widget, (char *) hookobj, (int) wsize);
+    CallInitialize (hookObjectClass, req_widget, hookobj,
+		(ArgList)NULL, (Cardinal) 0);
+    XtStackFree((XtPointer)req_widget, widget_cache);
+    return hookobj;
+}
diff --git a/libXt/src/Destroy.c b/libXt/src/Destroy.c
new file mode 100644
index 000000000..60f1b277f
--- /dev/null
+++ b/libXt/src/Destroy.c
@@ -0,0 +1,374 @@
+/* $Xorg: Destroy.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Destroy.c,v 1.2 2001/08/22 22:52:18 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+struct _DestroyRec {
+    int dispatch_level;
+    Widget widget;
+};
+
+static void Recursive(Widget widget, XtWidgetProc proc)
+{
+    register Cardinal i;
+    CompositePart   *cwp;
+
+    /* Recurse down normal children */
+    if (XtIsComposite(widget)) {
+	cwp = &(((CompositeWidget) widget)->composite);
+	for (i = 0; i < cwp->num_children; i++) {
+	    Recursive(cwp->children[i], proc);
+	}
+    }
+
+    /* Recurse down popup children */
+    if (XtIsWidget(widget)) {
+	for (i = 0; i < widget->core.num_popups; i++) {
+	    Recursive(widget->core.popup_list[i], proc);
+	}
+    }
+
+    /* Finally, apply procedure to this widget */
+    (*proc) (widget);
+} /* Recursive */
+
+static void Phase1Destroy (Widget widget)
+{
+    Widget hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+
+    widget->core.being_destroyed = TRUE;
+    if (XtHasCallbacks(hookobj, XtNdestroyHook) == XtCallbackHasSome) {
+	XtDestroyHookDataRec call_data;
+
+	call_data.type = XtHdestroy;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.destroyhook_callbacks,
+		(XtPointer) &call_data);
+    }
+} /* Phase1Destroy */
+
+static void Phase2Callbacks(Widget widget)
+{
+    if (widget->core.destroy_callbacks != NULL) {
+	XtCallCallbackList(widget,
+			   widget->core.destroy_callbacks, (XtPointer) NULL);
+    }
+} /* Phase2Callbacks */
+
+static void Phase2Destroy(register Widget widget)
+{
+    register WidgetClass	    class;
+    register ConstraintWidgetClass  cwClass;
+    ObjectClassExtension	    ext;
+
+    /* Call constraint destroy procedures */
+    if (XtParent(widget) != NULL && !XtIsShell(widget) && XtIsConstraint(XtParent(widget))) {
+	LOCK_PROCESS;
+	cwClass = (ConstraintWidgetClass)XtParent(widget)->core.widget_class;
+	UNLOCK_PROCESS;
+	for (;;) {
+	    XtWidgetProc destroy;
+
+	    LOCK_PROCESS;
+	    destroy = cwClass->constraint_class.destroy;
+	    UNLOCK_PROCESS;
+	    if (destroy)
+		(*destroy) (widget);
+            if (cwClass == (ConstraintWidgetClass)constraintWidgetClass) break;
+	    LOCK_PROCESS;
+	    cwClass = (ConstraintWidgetClass) cwClass->core_class.superclass;
+	    UNLOCK_PROCESS;
+	}
+    }
+
+    /* Call widget destroy procedures */
+    LOCK_PROCESS;
+    for (class = widget->core.widget_class;
+	 class != NULL;
+	 class = class->core_class.superclass) {
+	XtWidgetProc destroy;
+
+	destroy = class->core_class.destroy;
+	UNLOCK_PROCESS;
+	if (destroy)
+	    (*destroy) (widget);
+	LOCK_PROCESS;
+    }
+
+    /* Call widget deallocate procedure */
+    ext = (ObjectClassExtension)
+	XtGetClassExtension(widget->core.widget_class,
+			    XtOffsetOf(CoreClassPart, extension),
+			    NULLQUARK, XtObjectExtensionVersion,
+			    sizeof(ObjectClassExtensionRec));
+    if (ext && ext->deallocate) {
+	XtDeallocateProc deallocate;
+	deallocate = ext->deallocate;
+	UNLOCK_PROCESS;
+	(*deallocate)(widget, NULL);
+    } else {
+	UNLOCK_PROCESS;
+	XtFree((char *)widget);
+    }
+} /* Phase2Destroy */
+
+static Boolean IsDescendant(Widget widget, Widget root)
+{
+    while ((widget = XtParent(widget)) != root) {
+	if (widget == NULL) return False;
+    }
+    return True;
+}
+
+static void XtPhase2Destroy (Widget widget)
+{
+    Display	    *display = NULL;
+    Window	    window;
+    Widget          parent;
+    XtAppContext    app = XtWidgetToApplicationContext(widget);
+    Widget	    outerInPhase2Destroy = app->in_phase2_destroy;
+    int		    starting_count = app->destroy_count;
+    Boolean	    isPopup = False;
+
+    /* invalidate focus trace cache for this display */
+    _XtGetPerDisplay(XtDisplayOfObject(widget))->pdi.traceDepth = 0;
+
+    parent = widget->core.parent;
+
+    if (parent && XtIsWidget(parent) && parent->core.num_popups) {
+	Cardinal i;
+	for (i = 0; i < parent->core.num_popups; i++) {
+	    if (parent->core.popup_list[i] == widget) {
+		isPopup = True;
+		break;
+	    }
+	}
+    }
+
+    if (!isPopup && parent && XtIsComposite(parent)) {
+	XtWidgetProc delete_child;
+
+	LOCK_PROCESS;
+	delete_child =
+	    ((CompositeWidgetClass) parent->core.widget_class)->
+		composite_class.delete_child;
+	UNLOCK_PROCESS;
+        if (XtIsRectObj(widget)) {
+       	    XtUnmanageChild(widget);
+        }
+	if (delete_child == NULL) {
+	    String param;
+	    Cardinal num_params = 1;
+
+	    LOCK_PROCESS;
+	    param = parent->core.widget_class->core_class.class_name;
+	    UNLOCK_PROCESS;
+	    XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"invalidProcedure","deleteChild",XtCXtToolkitError,
+		"null delete_child procedure for class %s in XtDestroy",
+		&param, &num_params);
+	} else {
+	    (*delete_child) (widget);
+	}
+    }
+
+    /* widget is freed in Phase2Destroy, so retrieve window now.
+     * Shells destroy their own windows, to prevent window leaks in
+     * popups; this test is practical only when XtIsShell() is cheap.
+     */
+    if (XtIsShell(widget) || !XtIsWidget(widget)) {
+	window = 0;
+    }
+    else {
+	display = XtDisplay(widget);
+	window = widget->core.window;
+    }
+
+    Recursive(widget, Phase2Callbacks);
+    if (app->destroy_count > starting_count) {
+	int i = starting_count;
+	while (i < app->destroy_count) {
+
+	    DestroyRec * dr = app->destroy_list + i;
+	    if (IsDescendant(dr->widget, widget)) {
+		Widget descendant = dr->widget;
+		register int j;
+		app->destroy_count--;
+		for (j = app->destroy_count - i; --j >= 0; dr++)
+		    *dr = *(dr + 1);
+		XtPhase2Destroy(descendant);
+	    }
+	    else i++;
+	}
+    }
+
+    app->in_phase2_destroy = widget;
+    Recursive(widget, Phase2Destroy);
+    app->in_phase2_destroy = outerInPhase2Destroy;
+
+    if (isPopup) {
+	Cardinal i;
+	for (i = 0; i < parent->core.num_popups; i++)
+	    if (parent->core.popup_list[i] == widget) {
+		parent->core.num_popups--;
+		while (i < parent->core.num_popups) {
+		    parent->core.popup_list[i] = parent->core.popup_list[i+1];
+		    i++;
+		}
+		break;
+	    }
+    }
+
+    /* %%% the following parent test hides a more serious problem,
+       but it avoids breaking those who depended on the old bug
+       until we have time to fix it properly. */
+
+    if (window && (parent == NULL || !parent->core.being_destroyed))
+	XDestroyWindow(display, window);
+} /* XtPhase2Destroy */
+
+
+void _XtDoPhase2Destroy(XtAppContext app, int dispatch_level)
+{
+    /* Phase 2 must occur in fifo order.  List is not necessarily
+     * contiguous in dispatch_level.
+     */
+
+    int i = 0;
+    while (i < app->destroy_count) {
+
+	/* XtPhase2Destroy can result in calls to XtDestroyWidget,
+	 * and these could cause app->destroy_list to be reallocated.
+	 */
+
+	DestroyRec* dr = app->destroy_list + i;
+	if (dr->dispatch_level >= dispatch_level)  {
+	    Widget w = dr->widget;
+	    register int j;
+	    app->destroy_count--;
+	    for (j = app->destroy_count - i; --j >=0; dr++)
+		*dr = *(dr + 1);
+	    XtPhase2Destroy(w);
+	}
+	else i++;
+    }
+}
+
+
+void XtDestroyWidget (Widget widget)
+{
+    XtAppContext app;
+    DestroyRec *dr, *dr2;
+
+    app = XtWidgetToApplicationContext(widget);
+    LOCK_APP(app);
+    if (widget->core.being_destroyed) {
+	UNLOCK_APP(app);
+	return;
+    }
+    Recursive(widget, Phase1Destroy);
+
+    if (app->in_phase2_destroy &&
+	IsDescendant(widget, app->in_phase2_destroy))
+    {
+	XtPhase2Destroy(widget);
+	UNLOCK_APP(app);
+	return;
+    }
+
+    if (app->destroy_count == app->destroy_list_size) {
+	app->destroy_list_size += 10;
+	app->destroy_list = (DestroyRec*)
+	    XtRealloc( (char*)app->destroy_list,
+		       (unsigned)sizeof(DestroyRec)*app->destroy_list_size
+		      );
+    }
+    dr = app->destroy_list + app->destroy_count++;
+    dr->dispatch_level = app->dispatch_level;
+    dr->widget = widget;
+
+    if (app->dispatch_level > 1) {
+	int i;
+	for (i = app->destroy_count - 1; i;) {
+	    /* this handles only one case of nesting difficulties */
+ 	    dr = app->destroy_list + (--i);
+ 	    if (dr->dispatch_level < app->dispatch_level &&
+ 		IsDescendant(dr->widget, widget)) {
+ 	        dr2 = app->destroy_list + (app->destroy_count-1);
+ 		dr2->dispatch_level = dr->dispatch_level;
+  		break;
+  	    }
+  	}
+    }
+
+    if (_XtSafeToDestroy(app)) {
+	app->dispatch_level = 1; /* avoid nested _XtDoPhase2Destroy */
+	_XtDoPhase2Destroy(app, 0);
+	app->dispatch_level = 0;
+    }
+    UNLOCK_APP(app);
+
+} /* XtDestroyWidget */
diff --git a/libXt/src/Display.c b/libXt/src/Display.c
new file mode 100644
index 000000000..de57a6bf2
--- /dev/null
+++ b/libXt/src/Display.c
@@ -0,0 +1,763 @@
+/* $Xorg: Display.c,v 1.6 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Display.c,v 3.15 2002/09/18 01:25:01 dawes Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
+#include "ResConfigP.h"
+#endif
+
+#include <stdlib.h>
+
+#ifdef XTHREADS
+void (*_XtProcessLock)(void) = NULL;
+void (*_XtProcessUnlock)(void) = NULL;
+void (*_XtInitAppLock)(XtAppContext) = NULL;
+#endif
+
+static String XtNnoPerDisplay = "noPerDisplay";
+
+ProcessContext _XtGetProcessContext(void)
+{
+    static ProcessContextRec processContextRec = {
+	(XtAppContext)NULL,
+	(XtAppContext)NULL,
+	(ConverterTable)NULL,
+	{(XtLanguageProc)NULL, (XtPointer)NULL}
+    };
+
+    return &processContextRec;
+}
+
+
+XtAppContext _XtDefaultAppContext(void)
+{
+    ProcessContext process = _XtGetProcessContext();
+    XtAppContext app;
+
+    LOCK_PROCESS;
+    if (process->defaultAppContext == NULL) {
+	process->defaultAppContext = XtCreateApplicationContext();
+    }
+    app = process->defaultAppContext;
+    UNLOCK_PROCESS;
+    return app;
+}
+
+static void AddToAppContext(
+	Display *d,
+	XtAppContext app)
+{
+#define DISPLAYS_TO_ADD 4
+
+	if (app->count >= app->max) {
+	    app->max += DISPLAYS_TO_ADD;
+	    app->list = (Display **) XtRealloc((char *)app->list,
+		    (unsigned) app->max * sizeof(Display *));
+	}
+
+	app->list[app->count++] = d;
+	app->rebuild_fdlist = TRUE;
+#ifndef USE_POLL
+	if (ConnectionNumber(d) + 1 > app->fds.nfds) {
+	    app->fds.nfds = ConnectionNumber(d) + 1;
+	}
+#else
+	app->fds.nfds++;
+#endif
+#undef DISPLAYS_TO_ADD
+}
+
+static void XtDeleteFromAppContext(
+	Display *d,
+	register XtAppContext app)
+{
+	register int i;
+
+	for (i = 0; i < app->count; i++) if (app->list[i] == d) break;
+
+	if (i < app->count) {
+	    if (i <= app->last && app->last > 0) app->last--;
+	    for (i++; i < app->count; i++) app->list[i-1] = app->list[i];
+	    app->count--;
+	}
+	app->rebuild_fdlist = TRUE;
+#ifndef USE_POLL
+	if ((ConnectionNumber(d) + 1) == app->fds.nfds)
+	    app->fds.nfds--;
+	else			/* Unnecessary, just to be fool-proof */
+	    FD_CLR(ConnectionNumber(d), &app->fds.rmask);
+#else
+	app->fds.nfds--;
+#endif
+}
+
+static XtPerDisplay NewPerDisplay(
+	Display *dpy)
+{
+	PerDisplayTablePtr pd;
+
+	pd = XtNew(PerDisplayTable);
+	LOCK_PROCESS;
+	pd->dpy = dpy;
+	pd->next = _XtperDisplayList;
+	_XtperDisplayList = pd;
+	UNLOCK_PROCESS;
+	return &(pd->perDpy);
+}
+
+static XtPerDisplay InitPerDisplay(
+    Display *dpy,
+    XtAppContext app,
+    _Xconst char * name,
+    _Xconst char * classname)
+{
+    XtPerDisplay pd;
+
+    AddToAppContext(dpy, app);
+
+    pd = NewPerDisplay(dpy);
+    _XtHeapInit(&pd->heap);
+    pd->destroy_callbacks = NULL;
+    pd->region = XCreateRegion();
+    pd->case_cvt = NULL;
+    pd->defaultKeycodeTranslator = XtTranslateKey;
+    pd->keysyms_serial = 0;
+    pd->keysyms = NULL;
+    XDisplayKeycodes(dpy, &pd->min_keycode, &pd->max_keycode);
+    pd->modKeysyms = NULL;
+    pd->modsToKeysyms = NULL;
+    pd->appContext = app;
+    pd->name = XrmStringToName(name);
+    pd->class = XrmStringToClass(classname);
+    pd->being_destroyed = False;
+    pd->GClist = NULL;
+    pd->pixmap_tab = NULL;
+    pd->language = NULL;
+    pd->rv = False;
+    pd->last_event.xany.serial = 0;
+    pd->last_timestamp = 0;
+    _XtAllocTMContext(pd);
+    pd->mapping_callbacks = NULL;
+
+    pd->pdi.grabList = NULL;
+    pd->pdi.trace = NULL;
+    pd->pdi.traceDepth = 0;
+    pd->pdi.traceMax = 0;
+    pd->pdi.focusWidget = NULL;
+    pd->pdi.activatingKey = 0;
+    pd->pdi.keyboard.grabType = XtNoServerGrab;
+    pd->pdi.pointer.grabType  = XtNoServerGrab;
+    _XtAllocWWTable(pd);
+    pd->per_screen_db = (XrmDatabase *)__XtCalloc(ScreenCount(dpy),
+						sizeof(XrmDatabase));
+    pd->cmd_db = (XrmDatabase)NULL;
+    pd->server_db = (XrmDatabase)NULL;
+    pd->dispatcher_list = NULL;
+    pd->ext_select_list = NULL;
+    pd->ext_select_count = 0;
+    pd->hook_object = NULL;
+#if 0
+    pd->hook_object = _XtCreate("hooks", "Hooks", hookObjectClass,
+	(Widget)NULL, (Screen*)DefaultScreenOfDisplay(dpy),
+	(ArgList)NULL, 0, (XtTypedArgList)NULL, 0,
+	(ConstraintWidgetClass)NULL);
+#endif
+
+#ifndef X_NO_RESOURCE_CONFIGURATION_MANAGEMENT
+    pd->rcm_init = XInternAtom (dpy, RCM_INIT, 0);
+    pd->rcm_data = XInternAtom (dpy, RCM_DATA, 0);
+#endif
+
+    return pd;
+}
+
+Display *XtOpenDisplay(
+	XtAppContext app,
+	_Xconst char* displayName,
+	_Xconst char* applName,
+	_Xconst char* className,
+	XrmOptionDescRec *urlist,
+	Cardinal num_urs,
+	int *argc,
+	String *argv)
+{
+	Display *d;
+	XrmDatabase db = NULL;
+	XtPerDisplay pd;
+	String language = NULL;
+
+	LOCK_APP(app);
+	LOCK_PROCESS;
+	/* parse the command line for name, display, and/or language */
+	db = _XtPreparseCommandLine(urlist, num_urs, *argc, argv,
+				(String *)&applName,
+				(String *)(displayName ? NULL : &displayName),
+				(app->process->globalLangProcRec.proc ?
+				&language : NULL));
+	UNLOCK_PROCESS;
+	d = XOpenDisplay(displayName);
+
+	if (! applName && !(applName = getenv("RESOURCE_NAME"))) {
+	    if (*argc > 0 && argv[0] && *argv[0]) {
+#ifdef WIN32
+		char *ptr = strrchr(argv[0], '\\');
+#else
+		char *ptr = strrchr(argv[0], '/');
+#endif
+#ifdef __UNIXOS2__
+		char *dot_ptr,*ptr2;
+		ptr2 = strrchr(argv[0],'\\');
+		if (ptr2 > ptr) ptr = ptr2;
+		dot_ptr = strrchr(argv[0],'.');
+		if (dot_ptr && (dot_ptr > ptr)) *dot_ptr='\0';
+#endif  /* This will remove the .exe suffix under OS/2 */
+
+		if (ptr) applName = ++ptr;
+		else applName = argv[0];
+	    } else
+		applName = "main";
+	}
+
+	if (d) {
+	    pd = InitPerDisplay(d, app, applName, className);
+	    pd->language = language;
+	    _XtDisplayInitialize(d, pd, applName, urlist, num_urs, argc, argv);
+	} else {
+	    int len;
+	    displayName = XDisplayName(displayName);
+	    len = strlen (displayName);
+	    app->display_name_tried = (String) __XtMalloc (len + 1);
+	    strncpy ((char*) app->display_name_tried, displayName, len + 1);
+	    app->display_name_tried[len] = '\0';
+	}
+	if (db) XrmDestroyDatabase(db);
+	UNLOCK_APP(app);
+	return d;
+}
+
+Display *
+_XtAppInit(
+	XtAppContext * app_context_return,
+	String application_class,
+	XrmOptionDescRec *options,
+	Cardinal num_options,
+	int *argc_in_out,
+	String **argv_in_out,
+	String * fallback_resources)
+{
+    String *saved_argv;
+    int i;
+    Display *dpy;
+
+/*
+ * Save away argv and argc so we can set the properties later
+ */
+
+    saved_argv = (String *)
+	__XtMalloc( (Cardinal)((*argc_in_out + 1) * sizeof(String)) );
+
+    for (i = 0 ; i < *argc_in_out ; i++) saved_argv[i] = (*argv_in_out)[i];
+    saved_argv[i] = NULL;	/* NULL terminate that sucker. */
+
+
+    *app_context_return = XtCreateApplicationContext();
+
+    LOCK_APP((*app_context_return));
+    if (fallback_resources) /* save a procedure call */
+	XtAppSetFallbackResources(*app_context_return, fallback_resources);
+
+    dpy = XtOpenDisplay(*app_context_return, (String) NULL, NULL,
+			application_class,
+			options, num_options, argc_in_out, *argv_in_out);
+
+    if (!dpy) {
+	String param = (*app_context_return)->display_name_tried;
+	Cardinal param_count = 1;
+	XtErrorMsg("invalidDisplay","xtInitialize",XtCXtToolkitError,
+                   "Can't open display: %s", &param, &param_count);
+	XtFree((char *) (*app_context_return)->display_name_tried);
+    }
+    *argv_in_out = saved_argv;
+    UNLOCK_APP((*app_context_return));
+    return dpy;
+}
+
+void
+XtDisplayInitialize(
+	XtAppContext app,
+	Display *dpy,
+	_Xconst char* name,
+	_Xconst char* classname,
+	XrmOptionDescRec *urlist,
+	Cardinal num_urs,
+	int *argc,
+	String *argv
+	)
+{
+    XtPerDisplay pd;
+    XrmDatabase db = NULL;
+
+    LOCK_APP(app);
+    pd = InitPerDisplay(dpy, app, name, classname);
+    LOCK_PROCESS;
+    if (app->process->globalLangProcRec.proc)
+	/* pre-parse the command line for the language resource */
+	db = _XtPreparseCommandLine(urlist, num_urs, *argc, argv, NULL, NULL,
+				    &pd->language);
+    UNLOCK_PROCESS;
+    _XtDisplayInitialize(dpy, pd, name, urlist, num_urs, argc, argv);
+    if (db) XrmDestroyDatabase(db);
+    UNLOCK_APP(app);
+}
+
+XtAppContext XtCreateApplicationContext(void)
+{
+	XtAppContext app = XtNew(XtAppStruct);
+#ifdef XTHREADS
+	app->lock_info = NULL;
+	app->lock = NULL;
+	app->unlock = NULL;
+	app->yield_lock = NULL;
+	app->restore_lock = NULL;
+	app->free_lock = NULL;
+#endif
+	INIT_APP_LOCK(app);
+	LOCK_APP(app);
+	LOCK_PROCESS;
+	app->process = _XtGetProcessContext();
+	app->next = app->process->appContextList;
+	app->process->appContextList = app;
+	app->langProcRec.proc = app->process->globalLangProcRec.proc;
+	app->langProcRec.closure = app->process->globalLangProcRec.closure;
+	app->destroy_callbacks = NULL;
+	app->list = NULL;
+	app->count = app->max = app->last = 0;
+	app->timerQueue = NULL;
+	app->workQueue = NULL;
+	app->signalQueue = NULL;
+	app->input_list = NULL;
+	app->outstandingQueue = NULL;
+	app->errorDB = NULL;
+	_XtSetDefaultErrorHandlers(&app->errorMsgHandler,
+		&app->warningMsgHandler, &app->errorHandler,
+		&app->warningHandler);
+	app->action_table = NULL;
+	_XtSetDefaultSelectionTimeout(&app->selectionTimeout);
+	_XtSetDefaultConverterTable(&app->converterTable);
+	app->sync = app->being_destroyed = app->error_inited = FALSE;
+	app->in_phase2_destroy = NULL;
+#ifndef USE_POLL
+	FD_ZERO(&app->fds.rmask);
+	FD_ZERO(&app->fds.wmask);
+	FD_ZERO(&app->fds.emask);
+#endif
+	app->fds.nfds = 0;
+	app->input_count = app->input_max = 0;
+	_XtHeapInit(&app->heap);
+	app->fallback_resources = NULL;
+	_XtPopupInitialize(app);
+	app->action_hook_list = NULL;
+	app->block_hook_list = NULL;
+	app->destroy_list_size = app->destroy_count = app->dispatch_level = 0;
+	app->destroy_list = NULL;
+#ifndef NO_IDENTIFY_WINDOWS
+	app->identify_windows = False;
+#endif
+	app->free_bindings = NULL;
+	app->display_name_tried = NULL;
+	app->dpy_destroy_count = 0;
+	app->dpy_destroy_list = NULL;
+	app->exit_flag = FALSE;
+	app->rebuild_fdlist = TRUE;
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+	return app;
+}
+
+void XtAppSetExitFlag (
+    XtAppContext app)
+{
+    LOCK_APP(app);
+    app->exit_flag = TRUE;
+    UNLOCK_APP(app);
+}
+
+Boolean XtAppGetExitFlag (
+    XtAppContext app)
+{
+    Boolean retval;
+    LOCK_APP(app);
+    retval = app->exit_flag;
+    UNLOCK_APP(app);
+    return retval;
+}
+
+static void DestroyAppContext(XtAppContext app)
+{
+	XtAppContext* prev_app;
+
+	prev_app = &app->process->appContextList;
+	while (app->count-- > 0) XtCloseDisplay(app->list[app->count]);
+	if (app->list != NULL) XtFree((char *)app->list);
+	_XtFreeConverterTable(app->converterTable);
+	_XtCacheFlushTag(app, (XtPointer)&app->heap);
+	_XtFreeActions(app->action_table);
+	if (app->destroy_callbacks != NULL) {
+	    XtCallCallbackList((Widget) NULL,
+			       (XtCallbackList)app->destroy_callbacks,
+			       (XtPointer)app);
+	    _XtRemoveAllCallbacks(&app->destroy_callbacks);
+	}
+	while (app->timerQueue) XtRemoveTimeOut((XtIntervalId)app->timerQueue);
+	while (app->workQueue) XtRemoveWorkProc((XtWorkProcId)app->workQueue);
+	while (app->signalQueue) XtRemoveSignal((XtSignalId)app->signalQueue);
+	if (app->input_list) _XtRemoveAllInputs(app);
+	XtFree((char*)app->destroy_list);
+	_XtHeapFree(&app->heap);
+	while (*prev_app != app) prev_app = &(*prev_app)->next;
+	*prev_app = app->next;
+	if (app->process->defaultAppContext == app)
+	    app->process->defaultAppContext = NULL;
+	if (app->free_bindings) _XtDoFreeBindings (app);
+	FREE_APP_LOCK(app);
+	XtFree((char *)app);
+}
+
+static XtAppContext* appDestroyList = NULL;
+int _XtAppDestroyCount = 0;
+
+void XtDestroyApplicationContext(XtAppContext app)
+{
+	LOCK_APP(app);
+	if (app->being_destroyed) {
+	    UNLOCK_APP(app);
+	    return;
+	}
+
+	if (_XtSafeToDestroy(app)) {
+	    LOCK_PROCESS;
+	    DestroyAppContext(app);
+	    UNLOCK_PROCESS;
+	} else {
+	    app->being_destroyed = TRUE;
+	    LOCK_PROCESS;
+	    _XtAppDestroyCount++;
+	    appDestroyList =
+		    (XtAppContext *) XtRealloc((char *) appDestroyList,
+		    (unsigned) (_XtAppDestroyCount * sizeof(XtAppContext)));
+	    appDestroyList[_XtAppDestroyCount-1] = app;
+	    UNLOCK_PROCESS;
+	    UNLOCK_APP(app);
+	}
+}
+
+void _XtDestroyAppContexts(void)
+{
+	int i,ii;
+	XtAppContext apps[8];
+	XtAppContext* pApps;
+
+	pApps = XtStackAlloc (sizeof (XtAppContext) * _XtAppDestroyCount, apps);
+
+	for (i = ii = 0; i < _XtAppDestroyCount; i++) {
+	    if (_XtSafeToDestroy(appDestroyList[i]))
+		DestroyAppContext(appDestroyList[i]);
+	    else
+		pApps[ii++] = appDestroyList[i];
+	}
+	_XtAppDestroyCount = ii;
+	if (_XtAppDestroyCount == 0) {
+	    XtFree((char *) appDestroyList);
+	    appDestroyList = NULL;
+	} else {
+	    for (i = 0; i < ii; i++)
+		appDestroyList[i] = pApps[i];
+	}
+	XtStackFree ((XtPointer) pApps, apps);
+}
+
+XrmDatabase XtDatabase(Display *dpy)
+{
+    XrmDatabase retval;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    retval = XrmGetDatabase(dpy);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+PerDisplayTablePtr _XtperDisplayList = NULL;
+
+XtPerDisplay _XtSortPerDisplayList(Display *dpy)
+{
+	register PerDisplayTablePtr pd, opd = NULL;
+
+	LOCK_PROCESS;
+	for (pd = _XtperDisplayList;
+	     pd != NULL && pd->dpy != dpy;
+	     pd = pd->next) {
+	    opd = pd;
+	}
+
+	if (pd == NULL) {
+	    XtErrorMsg(XtNnoPerDisplay, "getPerDisplay", XtCXtToolkitError,
+		    "Couldn't find per display information",
+		    (String *) NULL, (Cardinal *)NULL);
+	}
+
+	if (pd != _XtperDisplayList) {	/* move it to the front */
+	    /* opd points to the previous one... */
+
+	    opd->next = pd->next;
+	    pd->next = _XtperDisplayList;
+	    _XtperDisplayList = pd;
+	}
+	UNLOCK_PROCESS;
+	return &(pd->perDpy);
+}
+
+XtAppContext XtDisplayToApplicationContext(Display *dpy)
+{
+	XtAppContext retval;
+
+	retval = _XtGetPerDisplay(dpy)->appContext;
+	return retval;
+}
+
+static void CloseDisplay(Display *dpy)
+{
+        register XtPerDisplay xtpd;
+	register PerDisplayTablePtr pd, opd = NULL;
+	XrmDatabase db;
+	int i;
+
+	XtDestroyWidget(XtHooksOfDisplay(dpy));
+
+	LOCK_PROCESS;
+	for (pd = _XtperDisplayList;
+	     pd != NULL && pd->dpy != dpy;
+	     pd = pd->next){
+	    opd = pd;
+	}
+
+	if (pd == NULL) {
+	    XtErrorMsg(XtNnoPerDisplay, "closeDisplay", XtCXtToolkitError,
+		    "Couldn't find per display information",
+		    (String *) NULL, (Cardinal *)NULL);
+	}
+
+	if (pd == _XtperDisplayList) _XtperDisplayList = pd->next;
+	else opd->next = pd->next;
+
+	xtpd = &(pd->perDpy);
+
+        if (xtpd != NULL) {
+	    if (xtpd->destroy_callbacks != NULL) {
+		XtCallCallbackList((Widget) NULL,
+				   (XtCallbackList)xtpd->destroy_callbacks,
+				   (XtPointer)xtpd);
+		_XtRemoveAllCallbacks(&xtpd->destroy_callbacks);
+	    }
+	    if (xtpd->mapping_callbacks != NULL)
+		_XtRemoveAllCallbacks(&xtpd->mapping_callbacks);
+	    XtDeleteFromAppContext(dpy, xtpd->appContext);
+	    if (xtpd->keysyms)
+		XFree((char *) xtpd->keysyms);
+            XtFree((char *) xtpd->modKeysyms);
+            XtFree((char *) xtpd->modsToKeysyms);
+            xtpd->keysyms_per_keycode = 0;
+            xtpd->being_destroyed = FALSE;
+            xtpd->keysyms = NULL;
+            xtpd->modKeysyms = NULL;
+            xtpd->modsToKeysyms = NULL;
+	    XDestroyRegion(xtpd->region);
+	    _XtCacheFlushTag(xtpd->appContext, (XtPointer)&xtpd->heap);
+	    _XtGClistFree(dpy, xtpd);
+	    XtFree((char*)xtpd->pdi.trace);
+	    _XtHeapFree(&xtpd->heap);
+	    _XtFreeWWTable(xtpd);
+	    xtpd->per_screen_db[DefaultScreen(dpy)] = (XrmDatabase)NULL;
+	    for (i = ScreenCount(dpy); --i >= 0; ) {
+		db = xtpd->per_screen_db[i];
+		if (db)
+		    XrmDestroyDatabase(db);
+	    }
+	    XtFree((char *)xtpd->per_screen_db);
+	    if ((db = XrmGetDatabase(dpy)))
+		XrmDestroyDatabase(db);
+	    if (xtpd->cmd_db)
+		XrmDestroyDatabase(xtpd->cmd_db);
+	    if (xtpd->server_db)
+		XrmDestroyDatabase(xtpd->server_db);
+	    XtFree(xtpd->language);
+	    if (xtpd->dispatcher_list != NULL)
+		XtFree((char *) xtpd->dispatcher_list);
+	    if (xtpd->ext_select_list != NULL)
+		XtFree((char *) xtpd->ext_select_list);
+        }
+	XtFree((char*)pd);
+	XrmSetDatabase(dpy, (XrmDatabase)NULL);
+	XCloseDisplay(dpy);
+	UNLOCK_PROCESS;
+}
+
+void XtCloseDisplay(Display *dpy)
+{
+	XtPerDisplay pd;
+	XtAppContext app = XtDisplayToApplicationContext(dpy);
+
+	LOCK_APP(app);
+	pd = _XtGetPerDisplay(dpy);
+	if (pd->being_destroyed) {
+	    UNLOCK_APP(app);
+	    return;
+	}
+
+	if (_XtSafeToDestroy(app)) CloseDisplay(dpy);
+	else {
+	    pd->being_destroyed = TRUE;
+	    app->dpy_destroy_count++;
+	    app->dpy_destroy_list = (Display **)
+		XtRealloc((char *) app->dpy_destroy_list,
+		    (unsigned) (app->dpy_destroy_count * sizeof(Display *)));
+	    app->dpy_destroy_list[app->dpy_destroy_count-1] = dpy;
+	}
+	UNLOCK_APP(app);
+}
+
+void _XtCloseDisplays(XtAppContext app)
+{
+	int i;
+
+	LOCK_APP(app);
+	for (i = 0; i < app->dpy_destroy_count; i++) {
+	    CloseDisplay(app->dpy_destroy_list[i]);
+	}
+	app->dpy_destroy_count = 0;
+	XtFree((char *) app->dpy_destroy_list);
+	app->dpy_destroy_list = NULL;
+	UNLOCK_APP(app);
+}
+
+XtAppContext XtWidgetToApplicationContext(Widget w)
+{
+	XtAppContext retval;
+
+	retval = _XtGetPerDisplay(XtDisplayOfObject(w))->appContext;
+	return retval;
+}
+
+
+void XtGetApplicationNameAndClass(
+    Display *dpy,
+    String *name_return,
+    String *class_return)
+{
+    XtPerDisplay pd;
+
+    pd = _XtGetPerDisplay(dpy);
+    *name_return = XrmQuarkToString(pd->name);
+    *class_return = XrmQuarkToString(pd->class);
+}
+
+XtPerDisplay _XtGetPerDisplay (Display* display)
+{
+    XtPerDisplay retval;
+
+    LOCK_PROCESS;
+    retval = ((_XtperDisplayList != NULL &&
+	      _XtperDisplayList->dpy == display)
+	      ? &_XtperDisplayList->perDpy
+	      : _XtSortPerDisplayList(display));
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+XtPerDisplayInputRec* _XtGetPerDisplayInput(Display* display)
+{
+    XtPerDisplayInputRec* retval;
+    LOCK_PROCESS;
+    retval = ((_XtperDisplayList != NULL &&
+	      _XtperDisplayList->dpy == display)
+	      ? &_XtperDisplayList->perDpy.pdi
+	      : &_XtSortPerDisplayList(display)->pdi);
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+void XtGetDisplays(
+    XtAppContext app_context,
+    Display*** dpy_return,
+    Cardinal* num_dpy_return)
+{
+    int ii;
+    LOCK_APP(app_context);
+    *num_dpy_return = app_context->count;
+    *dpy_return = (Display**)__XtMalloc(app_context->count * sizeof(Display*));
+    for (ii = 0; ii < app_context->count; ii++)
+	(*dpy_return)[ii] = app_context->list[ii];
+    UNLOCK_APP(app_context);
+}
diff --git a/libXt/src/Error.c b/libXt/src/Error.c
new file mode 100644
index 000000000..b1badc970
--- /dev/null
+++ b/libXt/src/Error.c
@@ -0,0 +1,636 @@
+/* $Xorg: Error.c,v 1.5 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Error.c,v 3.13tsi Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+/* The error handlers in the application context aren't used since we can't
+   come up with a uniform way of using them.  If you can, define
+   GLOBALERRORS to be FALSE (or 0). */
+
+#ifndef GLOBALERRORS
+#define GLOBALERRORS 1
+#endif
+
+static void InitErrorHandling(XrmDatabase *);
+#if GLOBALERRORS
+static XrmDatabase errorDB = NULL;
+static Boolean error_inited = FALSE;
+void _XtDefaultErrorMsg(String, String, String, String, String*, Cardinal*);
+void _XtDefaultWarningMsg(String, String, String, String, String*, Cardinal*);
+void _XtDefaultError(String);
+void _XtDefaultWarning(String);
+static XtErrorMsgHandler errorMsgHandler = _XtDefaultErrorMsg;
+static XtErrorMsgHandler warningMsgHandler = _XtDefaultWarningMsg;
+static XtErrorHandler errorHandler = _XtDefaultError;
+static XtErrorHandler warningHandler = _XtDefaultWarning;
+#endif /* GLOBALERRORS */
+
+XrmDatabase *XtGetErrorDatabase(void)
+{
+    XrmDatabase* retval;
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    retval = &errorDB;
+    UNLOCK_PROCESS;
+#else
+    retval = XtAppGetErrorDatabase(_XtDefaultAppContext());
+#endif /* GLOBALERRORS */
+    return retval;
+}
+
+XrmDatabase *XtAppGetErrorDatabase(
+	XtAppContext app)
+{
+    XrmDatabase* retval;
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    retval = &errorDB;
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    retval= &app->errorDB;
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+    return retval;
+}
+
+void XtGetErrorDatabaseText(
+    register _Xconst char* name,
+    register _Xconst char* type,
+    register _Xconst char* class,
+    _Xconst char* defaultp,
+    String buffer,
+    int nbytes)
+{
+#if GLOBALERRORS
+    XtAppGetErrorDatabaseText(NULL,
+	    name,type,class,defaultp, buffer, nbytes, NULL);
+#else
+    XtAppGetErrorDatabaseText(_XtDefaultAppContext(),
+	    name,type,class,defaultp, buffer, nbytes, NULL);
+#endif /* GLOBALERRORS */
+}
+
+void XtAppGetErrorDatabaseText(
+    XtAppContext app,
+    register _Xconst char* name,
+    register _Xconst char* type,
+    register _Xconst char* class,
+    _Xconst char* defaultp,
+    String buffer,
+    int nbytes,
+    XrmDatabase db)
+{
+    String str_class;
+    String type_str;
+    XrmValue result;
+    char *str_name = NULL;
+    char *temp = NULL;
+
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    if (error_inited == FALSE) {
+        InitErrorHandling (&errorDB);
+        error_inited = TRUE;
+    }
+#else
+    LOCK_APP(app);
+    if (app->error_inited == FALSE) {
+        InitErrorHandling (&app->errorDB);
+        app->error_inited = TRUE;
+    }
+#endif /* GLOBALERRORS */
+    if (!(str_name = ALLOCATE_LOCAL(strlen(name) + strlen(type) + 2)))
+	_XtAllocError(NULL);
+    (void) sprintf(str_name, "%s.%s", name, type);
+    /* XrmGetResource requires the name and class to be fully qualified
+     * and to have the same number of components. */
+    str_class = (char *)class;
+    if (! strchr(class, '.')) {
+	if (!(temp = ALLOCATE_LOCAL(2 * strlen(class) + 2)))
+	    _XtAllocError(NULL);
+	(void) sprintf(temp, "%s.%s", class, class);
+	str_class = temp;
+    }
+    if (db == NULL) {
+#if GLOBALERRORS
+	(void) XrmGetResource(errorDB, str_name, str_class, &type_str,
+			      &result);
+#else
+	(void) XrmGetResource(app->errorDB, str_name, str_class, &type_str,
+			      &result);
+#endif /* GLOBALERRORS */
+    } else (void) XrmGetResource(db, str_name, str_class, &type_str, &result);
+    if (result.addr) {
+        (void) strncpy (buffer, result.addr, nbytes);
+        if (result.size > (unsigned) nbytes) buffer[nbytes-1] = 0;
+    } else {
+	int len = strlen(defaultp);
+	if (len >= nbytes) len = nbytes-1;
+	(void) memmove(buffer, defaultp, len);
+	buffer[len] = '\0';
+    }
+    if (str_name)
+	DEALLOCATE_LOCAL(str_name);
+    if (temp)
+	DEALLOCATE_LOCAL(temp);
+#if GLOBALERRORS
+    UNLOCK_PROCESS;
+#else
+    UNLOCK_APP(app);
+#endif
+}
+
+static void InitErrorHandling (
+    XrmDatabase *db)
+{
+    XrmDatabase errordb;
+
+    errordb = XrmGetFileDatabase(ERRORDB);
+    XrmMergeDatabases(errordb, db);
+}
+
+static void DefaultMsg (
+    String name,
+    String type,
+    String class,
+    String defaultp,
+    String* params,
+    Cardinal* num_params,
+    Bool error,
+    void (*fn)(_Xconst _XtString))
+{
+#define BIGBUF 1024
+#ifdef notyet /* older versions don't, might want to wait until more do */
+#if defined(__linux__)  || defined(CSRG_BASED) /* everyone else needs to get with the program */
+#define USE_SNPRINTF
+#endif
+#endif
+    char buffer[BIGBUF];
+    char* message;
+    XtGetErrorDatabaseText(name,type,class,defaultp, buffer, BIGBUF);
+/*need better solution here, perhaps use lower level printf primitives? */
+    if (params == NULL || num_params == NULL || *num_params == 0)
+	(*fn)(buffer);
+#ifndef WIN32 /* and OS/2 */
+    else if ((getuid () != geteuid ()) || getuid() == 0) {
+	if ((error && errorHandler == _XtDefaultError) ||
+	    (!error && warningHandler == _XtDefaultWarning)) {
+	    /*
+	     * if it's just going to go to stderr anyway, then we'll
+	     * fprintf to stderr ourselves and skip the insecure sprintf.
+	     */
+	    Cardinal i = *num_params;
+	    String par[10];
+	    if (i > 10) i = 10;
+	    (void) memmove((char*)par, (char*)params, i * sizeof(String) );
+	    bzero( &par[i], (10-i) * sizeof(String) );
+	    (void) fprintf (stderr, "%s%s",
+			    error ? XTERROR_PREFIX : XTWARNING_PREFIX,
+			    error ? "Error: " : "Warning: ");
+	    (void) fprintf (stderr, buffer,
+			    par[0], par[1], par[2], par[3], par[4],
+			    par[5], par[6], par[7], par[8], par[9]);
+	    (void) fprintf (stderr, "%c", '\n');
+	    if (i != *num_params)
+		(*fn) ( "Some arguments in previous message were lost" );
+	    else if (error) exit (1);
+	} else {
+	    /*
+	     * can't tell what it might do, so we'll play it safe
+	     */
+	    XtWarning ("\
+This program is an suid-root program or is being run by the root user.\n\
+The full text of the error or warning message cannot be safely formatted\n\
+in this environment. You may get a more descriptive message by running the\n\
+program as a non-root user or by removing the suid bit on the executable.");
+	    (*fn)(buffer); /* if *fn is an ErrorHandler it should exit */
+	}
+    }
+#endif
+    else {
+	/*
+	 * If you have snprintf the worst thing that could happen is you'd
+	 * lose some information. Without snprintf you're probably going to
+	 * scramble your heap and perhaps SEGV -- sooner or later.
+	 * If it hurts when you go like this then don't go like this! :-)
+	 */
+	Cardinal i = *num_params;
+	String par[10];
+	if (i > 10) i = 10;
+	(void) memmove((char*)par, (char*)params, i * sizeof(String) );
+	bzero( &par[i], (10-i) * sizeof(String) );
+	if (i != *num_params)
+	    XtWarning( "Some arguments in following message were lost" );
+	/*
+	 * resist any temptation you might have to make `message' a
+	 * local buffer on the stack. Doing so is a security hole
+	 * in programs executing as root. Error and Warning
+	 * messages shouldn't be called frequently enough for this
+	 * to be a performance issue.
+	 */
+	if ((message = __XtMalloc (BIGBUF))) {
+#ifndef USE_SNPRINTF
+	    message[BIGBUF-1] = 0;
+	    (void) sprintf (message, buffer,
+#else
+	    (void) snprintf (message, BIGBUF, buffer,
+#endif
+			    par[0], par[1], par[2], par[3], par[4],
+			    par[5], par[6], par[7], par[8], par[9]);
+#ifndef USE_SNPRINTF
+	    if (message[BIGBUF-1] != '\0')
+		XtWarning ("Possible heap corruption in Xt{Error,Warning}MsgHandler");
+#endif
+	    (*fn)(message);
+	    XtFree(message);
+	} else {
+	    XtWarning ("Memory allocation failed, arguments in the following message were lost");
+	    (*fn)(buffer);
+	}
+    }
+}
+
+void _XtDefaultErrorMsg (
+    String name,
+    String type,
+    String class,
+    String defaultp,
+    String* params,
+    Cardinal* num_params)
+{
+    DefaultMsg (name,type,class,defaultp,params,num_params,True,XtError);
+}
+
+void _XtDefaultWarningMsg (
+    String name,
+    String type,
+    String class,
+    String defaultp,
+    String* params,
+    Cardinal* num_params)
+{
+    DefaultMsg (name,type,class,defaultp,params,num_params,False,XtWarning);
+}
+
+void XtErrorMsg(
+    _Xconst char* name,
+    _Xconst char* type,
+    _Xconst char* class,
+    _Xconst char* defaultp,
+    String* params,
+    Cardinal* num_params)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*errorMsgHandler)((String)name,(String)type,(String)class,
+		       (String)defaultp,params,num_params);
+    UNLOCK_PROCESS;
+#else
+    XtAppErrorMsg(_XtDefaultAppContext(),name,type,class,
+	    defaultp,params,num_params);
+#endif /* GLOBALERRORS */
+}
+
+void XtAppErrorMsg(
+    XtAppContext app,
+    _Xconst char* name,
+    _Xconst char* type,
+    _Xconst char* class,
+    _Xconst char* defaultp,
+    String* params,
+    Cardinal* num_params)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*errorMsgHandler)((String)name,(String)type,(String)class,
+		       (String)defaultp,params,num_params);
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    (*app->errorMsgHandler)(name,type,class,defaultp,params,num_params);
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+}
+
+void XtWarningMsg(
+    _Xconst char* name,
+    _Xconst char* type,
+    _Xconst char* class,
+    _Xconst char* defaultp,
+    String* params,
+    Cardinal* num_params)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*warningMsgHandler)((String)name,(String)type,(String)class,
+			 (String)defaultp,params,num_params);
+    UNLOCK_PROCESS;
+#else
+    XtAppWarningMsg(_XtDefaultAppContext(),name,type,class,
+	    defaultp,params,num_params);
+#endif /* GLOBALERRORS */
+}
+
+void XtAppWarningMsg(
+    XtAppContext app,
+    _Xconst char* name,
+    _Xconst char* type,
+    _Xconst char* class,
+    _Xconst char* defaultp,
+    String* params,
+    Cardinal* num_params)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*warningMsgHandler)((String)name,(String)type,(String)class,
+			 (String)defaultp,params,num_params);
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    (*app->warningMsgHandler)(name,type,class,defaultp,params,num_params);
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+}
+
+void XtSetErrorMsgHandler(
+    XtErrorMsgHandler handler)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    if (handler != NULL) errorMsgHandler = handler;
+    else errorMsgHandler  = _XtDefaultErrorMsg;
+    UNLOCK_PROCESS;
+#else
+    XtAppSetErrorMsgHandler(_XtDefaultAppContext(), handler);
+#endif /* GLOBALERRORS */
+}
+
+XtErrorMsgHandler XtAppSetErrorMsgHandler(
+    XtAppContext app,
+    XtErrorMsgHandler handler)
+{
+    XtErrorMsgHandler old;
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    old = errorMsgHandler;
+    if (handler != NULL) errorMsgHandler = handler;
+    else errorMsgHandler  = _XtDefaultErrorMsg;
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    old = app->errorMsgHandler;
+    if (handler != NULL) app->errorMsgHandler = handler;
+    else app->errorMsgHandler  = _XtDefaultErrorMsg;
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+    return old;
+}
+
+void XtSetWarningMsgHandler(
+    XtErrorMsgHandler handler)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    if (handler != NULL) warningMsgHandler  = handler;
+    else warningMsgHandler = _XtDefaultWarningMsg;
+    UNLOCK_PROCESS;
+#else
+    XtAppSetWarningMsgHandler(_XtDefaultAppContext(),handler);
+#endif /* GLOBALERRORS */
+}
+
+XtErrorMsgHandler XtAppSetWarningMsgHandler(
+    XtAppContext app,
+    XtErrorMsgHandler handler)
+{
+    XtErrorMsgHandler old;
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    old = warningMsgHandler;
+    if (handler != NULL) warningMsgHandler  = handler;
+    else warningMsgHandler = _XtDefaultWarningMsg;
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    old = app->warningMsgHandler;
+    if (handler != NULL) app->warningMsgHandler  = handler;
+    else app->warningMsgHandler = _XtDefaultWarningMsg;
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+    return old;
+}
+
+void _XtDefaultError(String message)
+{
+    if (message && *message)
+	(void)fprintf(stderr, "%sError: %s\n", XTERROR_PREFIX, message);
+    exit(1);
+}
+
+void _XtDefaultWarning(String message)
+{
+    if (message && *message)
+       (void)fprintf(stderr, "%sWarning: %s\n", XTWARNING_PREFIX, message);
+    return;
+}
+
+void XtError(
+    _Xconst char* message)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*errorHandler)((String)message);
+    UNLOCK_PROCESS;
+#else
+    XtAppError(_XtDefaultAppContext(),message);
+#endif /* GLOBALERRORS */
+}
+
+void XtAppError(
+    XtAppContext app,
+    _Xconst char* message)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*errorHandler)((String)message);
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    (*app->errorHandler)(message);
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+}
+
+void XtWarning(
+    _Xconst char* message)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*warningHandler)((String)message);
+    UNLOCK_PROCESS;
+#else
+    XtAppWarning(_XtDefaultAppContext(),message);
+#endif /* GLOBALERRORS */
+}
+
+void XtAppWarning(
+    XtAppContext app,
+    _Xconst char* message)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    (*warningHandler)((String)message);
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    (*app->warningHandler)(message);
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+}
+
+void XtSetErrorHandler(XtErrorHandler handler)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    if (handler != NULL) errorHandler = handler;
+    else errorHandler  = _XtDefaultError;
+    UNLOCK_PROCESS;
+#else
+    XtAppSetErrorHandler(_XtDefaultAppContext(),handler);
+#endif /* GLOBALERRORS */
+}
+
+XtErrorHandler XtAppSetErrorHandler(
+    XtAppContext app,
+    XtErrorHandler handler)
+{
+    XtErrorHandler old;
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    old = errorHandler;
+    if (handler != NULL) errorHandler = handler;
+    else errorHandler  = _XtDefaultError;
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    old = app->errorHandler;
+    if (handler != NULL) app->errorHandler = handler;
+    else app->errorHandler  = _XtDefaultError;
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+    return old;
+}
+
+void XtSetWarningHandler(XtErrorHandler handler)
+{
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    if (handler != NULL) warningHandler = handler;
+    else warningHandler = _XtDefaultWarning;
+    UNLOCK_PROCESS;
+#else
+    XtAppSetWarningHandler(_XtDefaultAppContext(),handler);
+#endif /* GLOBALERRORS */
+}
+
+XtErrorHandler XtAppSetWarningHandler(
+    XtAppContext app,
+    XtErrorHandler handler)
+{
+    XtErrorHandler old;
+#if GLOBALERRORS
+    LOCK_PROCESS;
+    old = warningHandler;
+    if (handler != NULL) warningHandler  = handler;
+    else warningHandler = _XtDefaultWarning;
+    UNLOCK_PROCESS;
+#else
+    LOCK_APP(app);
+    old = app->warningHandler;
+    if (handler != NULL) app->warningHandler  = handler;
+    else app->warningHandler = _XtDefaultWarning;
+    UNLOCK_APP(app);
+#endif /* GLOBALERRORS */
+    return old;
+}
+
+void _XtSetDefaultErrorHandlers(
+    XtErrorMsgHandler *errMsg,
+    XtErrorMsgHandler *warnMsg,
+    XtErrorHandler *err,
+    XtErrorHandler *warn)
+{
+#ifndef GLOBALERRORS
+    LOCK_PROCESS;
+    *errMsg = _XtDefaultErrorMsg;
+    *warnMsg = _XtDefaultWarningMsg;
+    *err = _XtDefaultError;
+    *warn = _XtDefaultWarning;
+    UNLOCK_PROCESS;
+#endif /* GLOBALERRORS */
+}
diff --git a/libXt/src/Event.c b/libXt/src/Event.c
new file mode 100644
index 000000000..1d564f970
--- /dev/null
+++ b/libXt/src/Event.c
@@ -0,0 +1,1731 @@
+/* $Xorg: Event.c,v 1.5 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Event.c,v 3.10 2001/12/14 19:56:11 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "Shell.h"
+#include "StringDefs.h"
+
+typedef struct _XtEventRecExt {
+    int type;
+    XtPointer select_data[1]; /* actual dimension is [mask] */
+} XtEventRecExt;
+
+#define EXT_TYPE(p) (((XtEventRecExt*) ((p)+1))->type)
+#define EXT_SELECT_DATA(p,n) (((XtEventRecExt*) ((p)+1))->select_data[n])
+
+#define NonMaskableMask ((EventMask)0x80000000L)
+
+/*
+ * These are definitions to make the code that handles exposure compresssion
+ * easier to read.
+ *
+ * COMP_EXPOSE      - The compression exposure field of "widget"
+ * COMP_EXPOSE_TYPE - The type of compression (lower 4 bits of COMP_EXPOSE.
+ * GRAPHICS_EXPOSE  - TRUE if the widget wants graphics expose events
+ *                    dispatched.
+ * NO_EXPOSE        - TRUE if the widget wants No expose events dispatched.
+ */
+
+#define COMP_EXPOSE   (widget->core.widget_class->core_class.compress_exposure)
+#define COMP_EXPOSE_TYPE (COMP_EXPOSE & 0x0f)
+#define GRAPHICS_EXPOSE  ((XtExposeGraphicsExpose & COMP_EXPOSE) || \
+			  (XtExposeGraphicsExposeMerged & COMP_EXPOSE))
+#define NO_EXPOSE        (XtExposeNoExpose & COMP_EXPOSE)
+
+EventMask XtBuildEventMask(
+    Widget widget)
+{
+    XtEventTable ev;
+    EventMask	mask = 0L;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    for (ev = widget->core.event_table; ev != NULL; ev = ev->next)
+	if (ev->select) {
+	    if (!ev->has_type_specifier)
+		mask |= ev->mask;
+	    else {
+		if (EXT_TYPE(ev) < LASTEvent) {
+		    Cardinal i;
+		    for (i = 0; i < ev->mask; i++)
+			if (EXT_SELECT_DATA(ev, i))
+			    mask |= *(EventMask*)EXT_SELECT_DATA(ev, i);
+		}
+	    }
+	}
+    LOCK_PROCESS;
+    if (widget->core.widget_class->core_class.expose != NULL)
+	mask |= ExposureMask;
+    if (widget->core.widget_class->core_class.visible_interest)
+	mask |= VisibilityChangeMask;
+    UNLOCK_PROCESS;
+    if (widget->core.tm.translations)
+	mask |= widget->core.tm.translations->eventMask;
+
+    mask =  mask & ~NonMaskableMask;
+    UNLOCK_APP(app);
+    return mask;
+}
+
+static void CallExtensionSelector(
+    Widget widget,
+    ExtSelectRec* rec,
+    Boolean forceCall)
+{
+    XtEventRec* p;
+    XtPointer* data;
+    int* types;
+    Cardinal i, count = 0;
+
+    for (p = widget->core.event_table; p != NULL; p = p->next)
+	if (p->has_type_specifier &&
+	    EXT_TYPE(p) >= rec->min && EXT_TYPE(p) <= rec->max)
+	    count += p->mask;
+
+    if (count == 0 && !forceCall) return;
+
+    data = (XtPointer *) ALLOCATE_LOCAL(count * sizeof (XtPointer));
+    types = (int *) ALLOCATE_LOCAL(count * sizeof (int));
+    count = 0;
+
+    for (p = widget->core.event_table; p != NULL; p = p->next)
+	if (p->has_type_specifier &&
+	    EXT_TYPE(p) >= rec->min && EXT_TYPE(p) <= rec->max)
+	    for (i =0; i < p->mask; i++) {
+		types[count] = EXT_TYPE(p);
+		data[count++] = EXT_SELECT_DATA(p, i);
+	    }
+
+    (*rec->proc)(widget, types, data, count, rec->client_data);
+    DEALLOCATE_LOCAL((char*) types);
+    DEALLOCATE_LOCAL((char*) data);
+}
+
+static void
+RemoveEventHandler(
+    Widget widget,
+    XtPointer select_data,
+    int type,
+    Boolean has_type_specifier,
+    Boolean other,
+    XtEventHandler proc,
+    XtPointer closure,
+    Boolean raw)
+{
+    XtEventRec *p, **pp;
+    EventMask eventMask, oldMask = XtBuildEventMask(widget);
+
+    if (raw) raw = 1;
+    pp = &widget->core.event_table;
+    while ((p = *pp) &&
+	   (p->proc != proc || p->closure != closure || p->select == raw ||
+	    has_type_specifier != p->has_type_specifier ||
+	    (has_type_specifier && EXT_TYPE(p) != type)))
+	pp = &p->next;
+    if (!p) return;
+
+    /* un-register it */
+    if (!has_type_specifier) {
+	eventMask = *(EventMask*)select_data;
+	eventMask &= ~NonMaskableMask;
+	if (other)
+	    eventMask |= NonMaskableMask;
+	p->mask &= ~eventMask;
+    } else {
+	Cardinal i;
+	/* p->mask specifies count of EXT_SELECT_DATA(p,i)
+	 * search through the list of selection data, if not found
+	 * dont remove this handler
+	 */
+	for (i = 0; i < p->mask && select_data != EXT_SELECT_DATA(p,i);) i++;
+	if (i == p->mask) return;
+	if (p->mask == 1) p->mask = 0;
+	else {
+	    p->mask--;
+	    while (i < p->mask) {
+		EXT_SELECT_DATA(p,i) = EXT_SELECT_DATA(p, i+1);
+		i++;
+	    }
+	}
+    }
+
+    if (!p->mask) {        /* delete it entirely */
+        *pp = p->next;
+	XtFree((char *)p);
+    }
+
+    /* Reset select mask if realized and not raw. */
+    if ( !raw && XtIsRealized(widget) && !widget->core.being_destroyed) {
+	EventMask mask = XtBuildEventMask(widget);
+	Display* dpy = XtDisplay (widget);
+
+	if (oldMask != mask)
+	    XSelectInput(dpy, XtWindow(widget), mask);
+
+	if (has_type_specifier) {
+	    XtPerDisplay pd = _XtGetPerDisplay(dpy);
+	    int i;
+	    for (i = 0; i < pd->ext_select_count; i++) {
+		if (type >= pd->ext_select_list[i].min &&
+		    type <= pd->ext_select_list[i].max) {
+		    CallExtensionSelector(widget, pd->ext_select_list+i, TRUE);
+		    break;
+		}
+		if (type < pd->ext_select_list[i].min) break;
+	    }
+	}
+    }
+}
+
+/*	Function Name: AddEventHandler
+ *	Description: An Internal routine that does the actual work of
+ *                   adding the event handlers.
+ *	Arguments: widget - widget to register an event handler for.
+ *                 eventMask - events to mask for.
+ *                 other - pass non maskable events to this proceedure.
+ *                 proc - proceedure to register.
+ *                 closure - data to pass to the event hander.
+ *                 position - where to add this event handler.
+ *                 force_new_position - If the element is already in the
+ *                                      list, this will force it to the
+ *                                      beginning or end depending on position.
+ *                 raw - If FALSE call XSelectInput for events in mask.
+ *	Returns: none
+ */
+
+static void
+AddEventHandler(
+    Widget widget,
+    XtPointer select_data,
+    int type,
+    Boolean         has_type_specifier,
+    Boolean         other,
+    XtEventHandler  proc,
+    XtPointer	closure,
+    XtListPosition  position,
+    Boolean         force_new_position,
+    Boolean         raw)
+{
+    register XtEventRec *p, **pp;
+    EventMask oldMask = 0, eventMask = 0;
+
+    if (!has_type_specifier) {
+	eventMask = *(EventMask*)select_data & ~NonMaskableMask;
+	if (other) eventMask |= NonMaskableMask;
+	if (!eventMask) return;
+    } else if (!type) return;
+
+    if (XtIsRealized(widget) && !raw) oldMask = XtBuildEventMask(widget);
+
+    if (raw) raw = 1;
+    pp = &widget->core.event_table;
+    while ((p = *pp) &&
+	   (p->proc != proc || p->closure != closure || p->select == raw ||
+	    has_type_specifier != p->has_type_specifier ||
+	    (has_type_specifier && EXT_TYPE(p) != type)))
+	pp = &p->next;
+
+    if (!p) {		                /* New proc to add to list */
+	if (has_type_specifier) {
+	    p = (XtEventRec*) __XtMalloc(sizeof(XtEventRec) +
+				       sizeof(XtEventRecExt));
+	    EXT_TYPE(p) = type;
+	    EXT_SELECT_DATA(p,0) = select_data;
+	    p->mask = 1;
+	    p->has_type_specifier = True;
+	} else {
+	    p = (XtEventRec*) __XtMalloc(sizeof(XtEventRec));
+	    p->mask = eventMask;
+	    p->has_type_specifier = False;
+	}
+	p->proc = proc;
+	p->closure = closure;
+	p->select = ! raw;
+
+	if (position == XtListHead) {
+	    p->next = widget->core.event_table;
+	    widget->core.event_table = p;
+	    pp = &widget->core.event_table;
+	} else {
+	    *pp = p;
+	    p->next = NULL;
+	}
+    }
+    else {
+	if (force_new_position) {
+	    *pp = p->next;
+
+	    if (position == XtListHead) {
+		p->next = widget->core.event_table;
+		widget->core.event_table = p;
+	    } else {
+	       	/*
+		 * Find the last element in the list.
+		 */
+		while (*pp)
+		    pp = &(*pp)->next;
+		*pp = p;
+		p->next = NULL;
+	    }
+	}
+
+	if (!has_type_specifier)
+	    p->mask |= eventMask;
+	else {
+	    Cardinal i;
+	    /* p->mask specifies count of EXT_SELECT_DATA(p,i) */
+	    for (i = 0; i < p->mask && select_data != EXT_SELECT_DATA(p,i); )
+		i++;
+	    if (i == p->mask) {
+		p = (XtEventRec*) XtRealloc((char*)p,
+					    sizeof(XtEventRec) +
+					    sizeof(XtEventRecExt) +
+					    p->mask * sizeof(XtPointer));
+		EXT_SELECT_DATA(p,i) = select_data;
+		p->mask++;
+		*pp = p;
+	    }
+	}
+    }
+
+    if (XtIsRealized(widget) && !raw) {
+	EventMask mask = XtBuildEventMask(widget);
+	Display* dpy = XtDisplay (widget);
+
+	if (oldMask != mask)
+	    XSelectInput(dpy, XtWindow(widget), mask);
+
+	if (has_type_specifier) {
+	    XtPerDisplay pd = _XtGetPerDisplay (dpy);
+	    int i;
+	    for (i = 0; i < pd->ext_select_count; i++) {
+		if (type >= pd->ext_select_list[i].min &&
+		    type <= pd->ext_select_list[i].max) {
+		    CallExtensionSelector(widget, pd->ext_select_list+i, FALSE);
+		    break;
+		}
+		if (type < pd->ext_select_list[i].min) break;
+	    }
+	}
+    }
+}
+
+void XtRemoveEventHandler(
+    Widget	    widget,
+    EventMask       eventMask,
+    _XtBoolean	    other,
+    XtEventHandler  proc,
+    XtPointer	    closure)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    RemoveEventHandler(widget, (XtPointer) &eventMask, 0, FALSE,
+		       other, proc, closure, FALSE);
+    UNLOCK_APP(app);
+}
+
+void XtAddEventHandler(
+    Widget	    widget,
+    EventMask       eventMask,
+    _XtBoolean      other,
+    XtEventHandler  proc,
+    XtPointer	    closure)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    AddEventHandler(widget, (XtPointer) &eventMask, 0, FALSE, other,
+		    proc, closure, XtListTail, FALSE, FALSE);
+    UNLOCK_APP(app);
+}
+
+void XtInsertEventHandler(
+    Widget	    widget,
+    EventMask       eventMask,
+    _XtBoolean      other,
+    XtEventHandler  proc,
+    XtPointer	    closure,
+    XtListPosition  position)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    AddEventHandler(widget, (XtPointer) &eventMask, 0, FALSE, other,
+		    proc, closure, position, TRUE, FALSE);
+    UNLOCK_APP(app);
+}
+
+void XtRemoveRawEventHandler(
+    Widget	    widget,
+    EventMask       eventMask,
+    _XtBoolean	    other,
+    XtEventHandler  proc,
+    XtPointer	    closure)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    RemoveEventHandler(widget, (XtPointer) &eventMask, 0, FALSE,
+		       other, proc, closure, TRUE);
+    UNLOCK_APP(app);
+}
+
+void XtInsertRawEventHandler(
+    Widget	    widget,
+    EventMask       eventMask,
+    _XtBoolean	    other,
+    XtEventHandler  proc,
+    XtPointer	    closure,
+    XtListPosition  position)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    AddEventHandler(widget, (XtPointer) &eventMask, 0, FALSE, other,
+		    proc, closure, position, TRUE, TRUE);
+    UNLOCK_APP(app);
+}
+
+void XtAddRawEventHandler(
+    Widget	    widget,
+    EventMask       eventMask,
+    _XtBoolean      other,
+    XtEventHandler  proc,
+    XtPointer	    closure)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    AddEventHandler(widget, (XtPointer) &eventMask, 0, FALSE, other,
+		    proc, closure, XtListTail, FALSE, TRUE);
+    UNLOCK_APP(app);
+}
+
+void XtRemoveEventTypeHandler(
+    Widget	    widget,
+    int		    type,
+    XtPointer	    select_data,
+    XtEventHandler  proc,
+    XtPointer	    closure)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    RemoveEventHandler(widget, select_data, type, TRUE,
+		       FALSE, proc, closure, FALSE);
+    UNLOCK_APP(app);
+}
+
+void XtInsertEventTypeHandler(
+    Widget	    widget,
+    int		    type,
+    XtPointer	    select_data,
+    XtEventHandler  proc,
+    XtPointer	    closure,
+    XtListPosition  position)
+{
+    WIDGET_TO_APPCON(widget);
+    LOCK_APP(app);
+    AddEventHandler(widget, select_data, type, TRUE, FALSE,
+		    proc, closure, position, TRUE, FALSE);
+    UNLOCK_APP(app);
+}
+
+typedef struct _WWPair {
+    struct _WWPair *next;
+    Window window;
+    Widget widget;
+} *WWPair;
+
+typedef struct _WWTable {
+    unsigned int mask;		/* size of hash table - 1 */
+    unsigned int rehash;	/* mask - 2 */
+    unsigned int occupied;	/* number of occupied entries */
+    unsigned int fakes;		/* number occupied by WWfake */
+    Widget *entries;		/* the entries */
+    WWPair pairs;		/* bogus entries */
+} *WWTable;
+
+static const WidgetRec WWfake;	/* placeholder for deletions */
+
+#define WWHASH(tab,win) ((win) & tab->mask)
+#define WWREHASHVAL(tab,win) ((((win) % tab->rehash) + 2) | 1)
+#define WWREHASH(tab,idx,rehash) ((idx + rehash) & tab->mask)
+#define WWTABLE(display) (_XtGetPerDisplay(display)->WWtable)
+
+static void ExpandWWTable(WWTable);
+
+void XtRegisterDrawable(
+    Display* display,
+    Drawable drawable,
+    Widget widget)
+{
+    WWTable tab;
+    int idx, rehash;
+    Widget entry;
+    Window window = (Window) drawable;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    tab = WWTABLE(display);
+    if (window != XtWindow(widget)) {
+	WWPair pair;
+	pair = XtNew(struct _WWPair);
+	pair->next = tab->pairs;
+	pair->window = window;
+	pair->widget = widget;
+	tab->pairs = pair;
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+	return;
+    }
+    if ((tab->occupied + (tab->occupied >> 2)) > tab->mask)
+	ExpandWWTable(tab);
+
+    idx = WWHASH(tab, window);
+    if ((entry = tab->entries[idx]) && entry != &WWfake) {
+	rehash = WWREHASHVAL(tab, window);
+	do {
+	    idx = WWREHASH(tab, idx, rehash);
+	} while ((entry = tab->entries[idx]) && entry != &WWfake);
+    }
+    if (!entry)
+	tab->occupied++;
+    else if (entry == &WWfake)
+	tab->fakes--;
+    tab->entries[idx] = widget;
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void XtUnregisterDrawable(
+    Display* display,
+    Drawable drawable)
+{
+    WWTable tab;
+    int idx, rehash;
+    Widget entry;
+    Window window = (Window) drawable;
+    Widget widget = XtWindowToWidget (display, window);
+    DPY_TO_APPCON(display);
+
+    if (widget == NULL) return;
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    tab = WWTABLE(display);
+    if (window != XtWindow(widget)) {
+	WWPair *prev, pair;
+
+	prev = &tab->pairs;
+	while ((pair = *prev) && pair->window != window)
+	    prev = &pair->next;
+	if (pair) {
+	    *prev = pair->next;
+	    XtFree((char *)pair);
+	}
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+	return;
+    }
+    idx = WWHASH(tab, window);
+    if ((entry = tab->entries[idx])) {
+	if (entry != widget) {
+	    rehash = WWREHASHVAL(tab, window);
+	    do {
+		idx = WWREHASH(tab, idx, rehash);
+		if (!(entry = tab->entries[idx])) {
+		    UNLOCK_PROCESS;
+		    UNLOCK_APP(app);
+		    return;
+		}
+	    } while (entry != widget);
+	}
+	tab->entries[idx] = (Widget)&WWfake;
+	tab->fakes++;
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+static void ExpandWWTable(
+    register WWTable tab)
+{
+    unsigned int oldmask;
+    register Widget *oldentries, *entries;
+    register Cardinal oldidx, newidx, rehash;
+    register Widget entry;
+
+    LOCK_PROCESS;
+    oldmask = tab->mask;
+    oldentries = tab->entries;
+    tab->occupied -= tab->fakes;
+    tab->fakes = 0;
+    if ((tab->occupied + (tab->occupied >> 2)) > tab->mask) {
+	tab->mask = (tab->mask << 1) + 1;
+	tab->rehash = tab->mask - 2;
+    }
+    entries = tab->entries = (Widget *) __XtCalloc(tab->mask+1, sizeof(Widget));
+    for (oldidx = 0; oldidx <= oldmask; oldidx++) {
+	if ((entry = oldentries[oldidx]) && entry != &WWfake) {
+	    newidx = WWHASH(tab, XtWindow(entry));
+	    if (entries[newidx]) {
+		rehash = WWREHASHVAL(tab, XtWindow(entry));
+		do {
+		    newidx = WWREHASH(tab, newidx, rehash);
+		} while (entries[newidx]);
+	    }
+	    entries[newidx] = entry;
+	}
+    }
+    XtFree((char *)oldentries);
+    UNLOCK_PROCESS;
+}
+
+Widget XtWindowToWidget(
+    register Display *display,
+    register Window window)
+{
+    register WWTable tab;
+    register int idx, rehash;
+    register Widget entry;
+    WWPair pair;
+    DPY_TO_APPCON(display);
+
+    if (!window) return NULL;
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    tab = WWTABLE(display);
+    idx = WWHASH(tab, window);
+    if ((entry = tab->entries[idx]) && XtWindow(entry) != window) {
+	rehash = WWREHASHVAL(tab, window);
+	do {
+	    idx = WWREHASH(tab, idx, rehash);
+	} while ((entry = tab->entries[idx]) && XtWindow(entry) != window);
+    }
+    if (entry) {
+    	UNLOCK_PROCESS;
+    	UNLOCK_APP(app);
+	return entry;
+    }
+    for (pair = tab->pairs; pair; pair = pair->next) {
+	if (pair->window == window) {
+	    entry = pair->widget;
+	    UNLOCK_PROCESS;
+    	    UNLOCK_APP(app);
+	    return entry;
+	}
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return NULL;
+}
+
+void _XtAllocWWTable(
+    XtPerDisplay pd)
+{
+    register WWTable tab;
+
+    tab = (WWTable) __XtMalloc(sizeof(struct _WWTable));
+    tab->mask = 0x7f;
+    tab->rehash = tab->mask - 2;
+    tab->entries = (Widget *) __XtCalloc(tab->mask+1, sizeof(Widget));
+    tab->occupied = 0;
+    tab->fakes = 0;
+    tab->pairs = NULL;
+    pd->WWtable = tab;
+}
+
+void _XtFreeWWTable(
+    register XtPerDisplay pd)
+{
+    register WWPair pair, next;
+
+    for (pair = pd->WWtable->pairs; pair; pair = next) {
+	next = pair->next;
+	XtFree((char *)pair);
+    }
+    XtFree((char *)pd->WWtable->entries);
+    XtFree((char *)pd->WWtable);
+}
+
+#define EHMAXSIZE 25 /* do not make whopping big */
+
+static Boolean CallEventHandlers(
+    Widget     widget,
+    XEvent    *event,
+    EventMask  mask)
+{
+    register XtEventRec *p;
+    XtEventHandler *proc;
+    XtPointer *closure;
+    XtEventHandler procs[EHMAXSIZE];
+    XtPointer closures[EHMAXSIZE];
+    Boolean cont_to_disp = True;
+    int i, numprocs;
+
+    /* Have to copy the procs into an array, because one of them might
+     * call XtRemoveEventHandler, which would break our linked list. */
+
+    numprocs = 0;
+    for (p=widget->core.event_table; p; p = p->next) {
+	if ((!p->has_type_specifier && (mask & p->mask)) ||
+	    (p->has_type_specifier && event->type == EXT_TYPE(p)))
+	    numprocs++;
+    }
+    if (numprocs > EHMAXSIZE) {
+	proc = (XtEventHandler *)__XtMalloc(numprocs * (sizeof(XtEventHandler) +
+						      sizeof(XtPointer)));
+	closure = (XtPointer *)(proc + numprocs);
+    } else {
+	proc = procs;
+	closure = closures;
+    }
+    numprocs = 0;
+    for (p=widget->core.event_table; p; p = p->next) {
+	if ((!p->has_type_specifier && (mask & p->mask)) ||
+	    (p->has_type_specifier && event->type == EXT_TYPE(p))) {
+	    proc[numprocs] = p->proc;
+	    closure[numprocs] = p->closure;
+	    numprocs++;
+	}
+    }
+/* FUNCTIONS CALLED THROUGH POINTER proc:
+		Selection.c:ReqCleanup,
+		"Shell.c":EventHandler,
+		PassivGrab.c:ActiveHandler,
+		PassivGrab.c:RealizeHandler,
+		Keyboard.c:QueryEventMask,
+		_XtHandleFocus,
+		Selection.c:HandleSelectionReplies,
+		Selection.c:HandleGetIncrement,
+		Selection.c:HandleIncremental,
+		Selection.c:HandlePropertyGone,
+		Selection.c:HandleSelectionEvents
+		*/
+    for (i = 0; i < numprocs && cont_to_disp; i++)
+	(*(proc[i]))(widget, closure[i], event, &cont_to_disp);
+    if (numprocs > EHMAXSIZE)
+	XtFree((char *)proc);
+    return cont_to_disp;
+}
+
+static void CompressExposures(XEvent *, Widget);
+
+#define KnownButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
+		      Button4MotionMask|Button5MotionMask)
+
+/* keep this SMALL to avoid blowing stack cache! */
+/* because some compilers allocate all local locals on procedure entry */
+#define EHSIZE 4
+
+Boolean XtDispatchEventToWidget(
+    Widget widget,
+    XEvent* event)
+{
+    register XtEventRec *p;
+    Boolean was_dispatched = False;
+    Boolean call_tm = False;
+    Boolean cont_to_disp;
+    EventMask mask;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+
+    mask = _XtConvertTypeToMask(event->type);
+    if (event->type == MotionNotify)
+	mask |= (event->xmotion.state & KnownButtons);
+
+    LOCK_PROCESS;
+    if ( (mask == ExposureMask) ||
+	 ((event->type == NoExpose) && NO_EXPOSE) ||
+	 ((event->type == GraphicsExpose) && GRAPHICS_EXPOSE) ) {
+
+	if (widget->core.widget_class->core_class.expose != NULL ) {
+
+	    /* We need to mask off the bits that could contain the information
+	     * about whether or not we desire Graphics and NoExpose events.  */
+
+	    if ( (COMP_EXPOSE_TYPE == XtExposeNoCompress) ||
+		 (event->type == NoExpose) )
+
+		(*widget->core.widget_class->core_class.expose)
+		    (widget, event, (Region)NULL);
+	    else {
+		CompressExposures(event, widget);
+	    }
+	    was_dispatched = True;
+	}
+    }
+
+    if ((mask == VisibilityChangeMask) &&
+        XtClass(widget)->core_class.visible_interest) {
+	    was_dispatched = True;
+	    /* our visibility just changed... */
+	    switch (((XVisibilityEvent *)event)->state) {
+		case VisibilityUnobscured:
+		    widget->core.visible = TRUE;
+		    break;
+
+		case VisibilityPartiallyObscured:
+		    /* what do we want to say here? */
+		    /* well... some of us is visible */
+		    widget->core.visible = TRUE;
+		    break;
+
+		case VisibilityFullyObscured:
+		    widget->core.visible = FALSE;
+		    /* do we want to mark our children obscured? */
+		    break;
+	    }
+	}
+    UNLOCK_PROCESS;
+
+    /* to maintain "copy" semantics we check TM now but call later */
+    if (widget->core.tm.translations &&
+	(mask & widget->core.tm.translations->eventMask))
+	call_tm = True;
+
+    cont_to_disp = True;
+    p=widget->core.event_table;
+    if (p) {
+	if (p->next) {
+	    XtEventHandler proc[EHSIZE];
+	    XtPointer closure[EHSIZE];
+	    int numprocs = 0;
+
+	    /* Have to copy the procs into an array, because one of them might
+	     * call XtRemoveEventHandler, which would break our linked list. */
+
+	    for (; p; p = p->next) {
+		if ((!p->has_type_specifier && (mask & p->mask)) ||
+		    (p->has_type_specifier && event->type == EXT_TYPE(p))) {
+		    if (numprocs >= EHSIZE)
+			break;
+		    proc[numprocs] = p->proc;
+		    closure[numprocs] = p->closure;
+		    numprocs++;
+		}
+	    }
+	    if (numprocs) {
+		if (p) {
+		    cont_to_disp = CallEventHandlers(widget, event, mask);
+		} else {
+		    int i;
+		    for (i = 0; i < numprocs && cont_to_disp; i++)
+			(*(proc[i]))(widget, closure[i], event, &cont_to_disp);
+/* FUNCTIONS CALLED THROUGH POINTER proc:
+		Selection.c:ReqCleanup,
+		"Shell.c":EventHandler,
+		PassivGrab.c:ActiveHandler,
+		PassivGrab.c:RealizeHandler,
+		Keyboard.c:QueryEventMask,
+		_XtHandleFocus,
+		Selection.c:HandleSelectionReplies,
+		Selection.c:HandleGetIncrement,
+		Selection.c:HandleIncremental,
+		Selection.c:HandlePropertyGone,
+		Selection.c:HandleSelectionEvents
+		*/
+		}
+		was_dispatched = True;
+	    }
+	} else if ((!p->has_type_specifier && (mask & p->mask)) ||
+		   (p->has_type_specifier && event->type == EXT_TYPE(p))) {
+	    (*p->proc)(widget, p->closure, event, &cont_to_disp);
+	    was_dispatched = True;
+	}
+    }
+    if (call_tm && cont_to_disp)
+	_XtTranslateEvent(widget, event);
+    UNLOCK_APP(app);
+    return (was_dispatched|call_tm);
+}
+
+/*
+ * This structure is passed into the check exposure proc.
+ */
+
+typedef struct _CheckExposeInfo {
+    int type1, type2;		/* Types of events to check for. */
+    Boolean maximal;		/* Ignore non-exposure events? */
+    Boolean non_matching;	/* Was there an event that did not
+				   match either type? */
+    Window window;		/* Window to match. */
+} CheckExposeInfo;
+
+#define GetCount(ev) (((XExposeEvent *)(ev))->count)
+
+static void SendExposureEvent(XEvent *, Widget, XtPerDisplay);
+static Bool CheckExposureEvent(Display *, XEvent *, char *);
+static void AddExposureToRectangularRegion(XEvent *, Region);
+
+/*	Function Name: CompressExposures
+ *	Description: Handles all exposure compression
+ *	Arguments: event - the xevent that is to be dispatched
+ *                 widget - the widget that this event occured in.
+ *	Returns: none.
+ *
+ *      NOTE: Event must be of type Expose or GraphicsExpose.
+ */
+
+static void
+CompressExposures(
+XEvent * event,
+Widget widget)
+{
+    CheckExposeInfo info;
+    int count;
+    Display* dpy = XtDisplay (widget);
+    XtPerDisplay pd = _XtGetPerDisplay(dpy);
+    XtEnum comp_expose;
+    XtEnum comp_expose_type;
+    Boolean no_region;
+
+    LOCK_PROCESS;
+    comp_expose = COMP_EXPOSE;
+    UNLOCK_PROCESS;
+    comp_expose_type = comp_expose & 0x0f;
+    no_region = ((comp_expose & XtExposeNoRegion) ? True : False);
+
+    if (no_region)
+	AddExposureToRectangularRegion(event, pd->region);
+    else
+	XtAddExposureToRegion(event, pd->region);
+
+    if ( GetCount(event) != 0 )
+ 	return;
+
+    if ((comp_expose_type == XtExposeCompressSeries) ||
+	(XEventsQueued(dpy, QueuedAfterReading) == 0)) {
+	SendExposureEvent(event, widget, pd);
+	return;
+    }
+
+    if (comp_expose & XtExposeGraphicsExposeMerged) {
+	info.type1 = Expose;
+	info.type2 = GraphicsExpose;
+    }
+    else {
+	info.type1 = event->type;
+	info.type2 = 0;
+    }
+    info.maximal = (comp_expose_type == XtExposeCompressMaximal);
+    info.non_matching = FALSE;
+    info.window = XtWindow(widget);
+
+/*
+ * We have to be very careful here not to hose down the processor
+ * when blocking until count gets to zero.
+ *
+ * First, check to see if there are any events in the queue for this
+ * widget, and of the correct type.
+ *
+ * Once we cannot find any more events, check to see that count is zero.
+ * If it is not then block until we get another exposure event.
+ *
+ * If we find no more events, and count on the last one we saw was zero we
+ * we can be sure that all events have been processed.
+ *
+ * Unfortunately, we wind up having to look at the entire queue
+ * event if we're not doing Maximal compression, due to the
+ * semantics of XCheckIfEvent (we can't abort without re-ordering
+ * the event queue as a side-effect).
+ */
+
+    count = 0;
+    while (TRUE) {
+	XEvent event_return;
+
+	if (XCheckIfEvent(dpy, &event_return,
+			  CheckExposureEvent, (char *) &info)) {
+
+	    count = GetCount(&event_return);
+ 	    if (no_region)
+		AddExposureToRectangularRegion(&event_return, pd->region);
+ 	    else
+		XtAddExposureToRegion(&event_return, pd->region);
+	}
+	else if (count != 0) {
+	    XIfEvent(dpy, &event_return,
+		     CheckExposureEvent, (char *) &info);
+	    count = GetCount(&event_return);
+ 	    if (no_region)
+		AddExposureToRectangularRegion(&event_return, pd->region);
+ 	    else
+		XtAddExposureToRegion(&event_return, pd->region);
+	}
+	else /* count == 0 && XCheckIfEvent Failed. */
+	    break;
+    }
+
+    SendExposureEvent(event, widget, pd);
+}
+
+void XtAddExposureToRegion(
+    XEvent   *event,
+    Region   region)
+{
+    XRectangle rect;
+    XExposeEvent *ev = (XExposeEvent *) event;
+    /* These Expose and GraphicsExpose fields are at identical offsets */
+
+    if (event->type == Expose || event->type == GraphicsExpose) {
+	rect.x = ev->x;
+	rect.y = ev->y;
+	rect.width = ev->width;
+	rect.height = ev->height;
+	XUnionRectWithRegion(&rect, region, region);
+    }
+}
+
+#ifndef MAX
+#define MAX(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+
+#ifndef MIN
+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+static void AddExposureToRectangularRegion(
+     XEvent *event, /* when called internally, type is always appropriate */
+     Region  region)
+{
+    XRectangle rect;
+    XExposeEvent *ev = (XExposeEvent *) event;
+    /* These Expose and GraphicsExpose fields are at identical offsets */
+
+    rect.x = ev->x;
+    rect.y = ev->y;
+    rect.width = ev->width;
+    rect.height = ev->height;
+
+    if (XEmptyRegion(region)) {
+	XUnionRectWithRegion(&rect, region, region);
+    } else {
+	XRectangle merged, bbox;
+
+	XClipBox(region, &bbox);
+	merged.x = MIN(rect.x, bbox.x);
+	merged.y = MIN(rect.y, bbox.y);
+	merged.width = MAX(rect.x + rect.width,
+			   bbox.x + bbox.width) - merged.x;
+	merged.height = MAX(rect.y + rect.height,
+			    bbox.y + bbox.height) - merged.y;
+	XUnionRectWithRegion(&merged, region, region);
+    }
+}
+
+static Region nullRegion;
+/* READ-ONLY VARIABLES: nullRegion */
+
+void _XtEventInitialize(void)
+{
+#ifndef __lock_lint
+    nullRegion = XCreateRegion();
+#endif
+}
+
+/*	Function Name: SendExposureEvent
+ *	Description: Sets the x, y, width, and height of the event
+ *                   to be the clip box of Expose Region.
+ *	Arguments: event  - the X Event to mangle; Expose or GraphicsExpose.
+ *                 widget - the widget that this event occured in.
+ *                 pd     - the per display information for this widget.
+ *	Returns: none.
+ */
+
+static void
+SendExposureEvent(
+XEvent * event,
+Widget widget,
+XtPerDisplay pd)
+{
+    XtExposeProc expose;
+    XRectangle rect;
+    XtEnum comp_expose;
+    XExposeEvent *ev = (XExposeEvent *) event;
+
+    XClipBox(pd->region, &rect);
+    ev->x = rect.x;
+    ev->y = rect.y;
+    ev->width = rect.width;
+    ev->height = rect.height;
+
+    LOCK_PROCESS;
+    comp_expose = COMP_EXPOSE;
+    expose = widget->core.widget_class->core_class.expose;
+    UNLOCK_PROCESS;
+    if (comp_expose & XtExposeNoRegion)
+	(*expose)(widget, event, NULL);
+    else
+	(*expose)(widget, event, pd->region);
+    (void) XIntersectRegion(nullRegion, pd->region, pd->region);
+}
+
+/*	Function Name: CheckExposureEvent
+ *	Description: Checks the event queue for an expose event
+ *	Arguments: display - the display connection.
+ *                 event - the event to check.
+ *                 arg - a pointer to the exposure info structure.
+ *	Returns: TRUE if we found an event of the correct type
+ *               with the right window.
+ *
+ * NOTE: The only valid types (info.type1 and info.type2) are Expose
+ *       and GraphicsExpose.
+ */
+
+/* ARGSUSED */
+static Bool
+CheckExposureEvent(
+Display * disp,
+XEvent * event,
+char * arg)
+{
+    CheckExposeInfo * info = ((CheckExposeInfo *) arg);
+
+    if ( (info->type1 == event->type) || (info->type2 == event->type)) {
+	if (!info->maximal && info->non_matching) return FALSE;
+	if (event->type == GraphicsExpose)
+	    return(event->xgraphicsexpose.drawable == info->window);
+	return(event->xexpose.window == info->window);
+    }
+    info->non_matching = TRUE;
+    return(FALSE);
+}
+
+static EventMask const masks[] = {
+	0,			    /* Error, should never see  */
+	0,			    /* Reply, should never see  */
+	KeyPressMask,		    /* KeyPress			*/
+	KeyReleaseMask,		    /* KeyRelease		*/
+	ButtonPressMask,	    /* ButtonPress		*/
+	ButtonReleaseMask,	    /* ButtonRelease		*/
+	PointerMotionMask	    /* MotionNotify		*/
+		| ButtonMotionMask,
+	EnterWindowMask,	    /* EnterNotify		*/
+	LeaveWindowMask,	    /* LeaveNotify		*/
+	FocusChangeMask,	    /* FocusIn			*/
+	FocusChangeMask,	    /* FocusOut			*/
+	KeymapStateMask,	    /* KeymapNotify		*/
+	ExposureMask,		    /* Expose			*/
+	NonMaskableMask,	    /* GraphicsExpose, in GC    */
+	NonMaskableMask,	    /* NoExpose, in GC		*/
+	VisibilityChangeMask,       /* VisibilityNotify		*/
+	SubstructureNotifyMask,     /* CreateNotify		*/
+	StructureNotifyMask	    /* DestroyNotify		*/
+		| SubstructureNotifyMask,
+	StructureNotifyMask	    /* UnmapNotify		*/
+		| SubstructureNotifyMask,
+	StructureNotifyMask	    /* MapNotify		*/
+		| SubstructureNotifyMask,
+	SubstructureRedirectMask,   /* MapRequest		*/
+	StructureNotifyMask	    /* ReparentNotify		*/
+		| SubstructureNotifyMask,
+	StructureNotifyMask	    /* ConfigureNotify		*/
+		| SubstructureNotifyMask,
+	SubstructureRedirectMask,   /* ConfigureRequest		*/
+	StructureNotifyMask	    /* GravityNotify		*/
+		| SubstructureNotifyMask,
+	ResizeRedirectMask,	    /* ResizeRequest		*/
+	StructureNotifyMask	    /* CirculateNotify		*/
+		| SubstructureNotifyMask,
+	SubstructureRedirectMask,   /* CirculateRequest		*/
+	PropertyChangeMask,	    /* PropertyNotify		*/
+	NonMaskableMask,	    /* SelectionClear		*/
+	NonMaskableMask,	    /* SelectionRequest		*/
+	NonMaskableMask,	    /* SelectionNotify		*/
+	ColormapChangeMask,	    /* ColormapNotify		*/
+	NonMaskableMask,	    /* ClientMessage		*/
+	NonMaskableMask		    /* MappingNotify		*/
+};
+
+EventMask _XtConvertTypeToMask (
+    int		eventType)
+{
+    if ((Cardinal) eventType < XtNumber(masks))
+	return masks[eventType];
+    else
+	return NoEventMask;
+}
+
+Boolean _XtOnGrabList(
+    register Widget widget,
+    XtGrabRec  *grabList)
+{
+    register XtGrabRec* gl;
+    for (; widget != NULL; widget = (Widget)widget->core.parent) {
+	for (gl = grabList; gl != NULL; gl = gl->next) {
+	    if (gl->widget == widget) return TRUE;
+	    if (gl->exclusive) break;
+	}
+    }
+    return FALSE;
+}
+
+static Widget LookupSpringLoaded(
+    XtGrabList	grabList)
+{
+    XtGrabList	gl;
+
+    for (gl = grabList; gl != NULL; gl = gl->next) {
+	if (gl->spring_loaded) {
+	  if (XtIsSensitive(gl->widget))
+	    return gl->widget;
+	  else
+	    return NULL;
+	}
+	if (gl->exclusive) break;
+    }
+    return NULL;
+}
+
+static Boolean DispatchEvent(
+    XEvent* event,
+    Widget widget)
+{
+
+    if (event->type == EnterNotify &&
+	event->xcrossing.mode == NotifyNormal &&
+	widget->core.widget_class->core_class.compress_enterleave) {
+	if (XPending(event->xcrossing.display)) {
+	    XEvent nextEvent;
+	    XPeekEvent(event->xcrossing.display, &nextEvent);
+	    if (nextEvent.type == LeaveNotify &&
+		event->xcrossing.window == nextEvent.xcrossing.window &&
+		nextEvent.xcrossing.mode == NotifyNormal &&
+		((event->xcrossing.detail != NotifyInferior &&
+		 nextEvent.xcrossing.detail != NotifyInferior) ||
+		 (event->xcrossing.detail == NotifyInferior &&
+		 nextEvent.xcrossing.detail == NotifyInferior))) {
+		/* skip the enter/leave pair */
+		XNextEvent(event->xcrossing.display, &nextEvent);
+		return False;
+	    }
+	}
+    }
+
+    if (event->type == MotionNotify &&
+	    widget->core.widget_class->core_class.compress_motion) {
+	while (XPending(event->xmotion.display)) {
+	    XEvent nextEvent;
+	    XPeekEvent(event->xmotion.display, &nextEvent);
+	    if (nextEvent.type == MotionNotify &&
+		    event->xmotion.window == nextEvent.xmotion.window &&
+		    event->xmotion.subwindow == nextEvent.xmotion.subwindow) {
+		/* replace the current event with the next one */
+		XNextEvent(event->xmotion.display, event);
+	    } else break;
+	}
+    }
+
+    return XtDispatchEventToWidget(widget, event);
+}
+
+typedef enum _GrabType {pass, ignore, remap} GrabType;
+
+#if !defined(AIXV3) || !defined(AIXSHLIB)
+static /* AIX shared libraries are broken */
+#endif
+Boolean _XtDefaultDispatcher(
+    XEvent  *event)
+{
+    register    Widget widget;
+    GrabType    grabType;
+    XtPerDisplayInput pdi;
+    XtGrabList  grabList;
+    Boolean	was_dispatched = False;
+    DPY_TO_APPCON(event->xany.display);
+
+    /* the default dispatcher discards all extension events */
+    if (event->type >= LASTEvent)
+	return False;
+
+    LOCK_APP(app);
+
+    switch (event->type) {
+      case KeyPress:
+      case KeyRelease:
+      case ButtonPress:
+      case ButtonRelease:	grabType = remap;	break;
+      case MotionNotify:
+      case EnterNotify:		grabType = ignore;	break;
+      default:			grabType = pass;	break;
+    }
+
+    widget = XtWindowToWidget (event->xany.display, event->xany.window);
+    pdi = _XtGetPerDisplayInput(event->xany.display);
+    grabList = *_XtGetGrabList(pdi);
+
+    if (widget == NULL) {
+	if (grabType == remap
+	    && (widget = LookupSpringLoaded(grabList)) != NULL) {
+	    /* event occurred in a non-widget window, but we've promised also
+	       to dispatch it to the nearest accessible spring_loaded widget */
+	    was_dispatched = (XFilterEvent(event, XtWindow(widget))
+			      || XtDispatchEventToWidget(widget, event));
+	}
+	else was_dispatched = XFilterEvent(event, None);
+    }
+    else if (grabType == pass) {
+	if (event->type == LeaveNotify ||
+	    event->type == FocusIn ||
+	    event->type == FocusOut) {
+		if (XtIsSensitive (widget))
+		    was_dispatched = (XFilterEvent(event, XtWindow(widget)) ||
+				      XtDispatchEventToWidget(widget, event));
+	    } else was_dispatched = (XFilterEvent(event, XtWindow(widget)) ||
+				     XtDispatchEventToWidget(widget, event));
+    }
+    else if (grabType == ignore) {
+	if ((grabList == NULL || _XtOnGrabList(widget, grabList))
+	    && XtIsSensitive(widget)) {
+	    was_dispatched = (XFilterEvent(event, XtWindow(widget))
+			      || DispatchEvent(event, widget));
+	}
+    }
+    else if (grabType == remap) {
+	EventMask	mask = _XtConvertTypeToMask(event->type);
+	Widget		dspWidget;
+	Boolean		was_filtered = False;
+
+	dspWidget = _XtFindRemapWidget(event, widget, mask, pdi);
+
+	if ((grabList == NULL ||_XtOnGrabList(dspWidget, grabList))
+	    && XtIsSensitive(dspWidget)) {
+	    if ((was_filtered = XFilterEvent(event, XtWindow(dspWidget)))) {
+		/* If this event activated a device grab, release it. */
+		_XtUngrabBadGrabs(event, widget, mask, pdi);
+		was_dispatched = True;
+	    } else
+		was_dispatched = XtDispatchEventToWidget(dspWidget, event);
+	}
+	else _XtUngrabBadGrabs(event, widget, mask, pdi);
+
+	if (!was_filtered) {
+	    /* Also dispatch to nearest accessible spring_loaded. */
+	    /* Fetch this afterward to reflect modal list changes */
+	    grabList = *_XtGetGrabList(pdi);
+	    widget = LookupSpringLoaded(grabList);
+	    if (widget != NULL && widget != dspWidget) {
+		was_dispatched = (XFilterEvent(event, XtWindow(widget))
+				  || XtDispatchEventToWidget(widget, event)
+				  || was_dispatched);
+	    }
+	}
+    }
+    UNLOCK_APP(app);
+    return was_dispatched;
+}
+
+Boolean XtDispatchEvent (
+    XEvent  *event)
+{
+    Boolean was_dispatched, safe;
+    int dispatch_level;
+    int starting_count;
+    XtPerDisplay pd;
+    Time	time = 0;
+    XtEventDispatchProc dispatch = _XtDefaultDispatcher;
+    XtAppContext app = XtDisplayToApplicationContext(event->xany.display);
+
+    LOCK_APP(app);
+    dispatch_level = ++app->dispatch_level;
+    starting_count = app->destroy_count;
+
+    switch (event->type) {
+      case KeyPress:
+      case KeyRelease:	   time = event->xkey.time;		break;
+      case ButtonPress:
+      case ButtonRelease:  time = event->xbutton.time;		break;
+      case MotionNotify:   time = event->xmotion.time;		break;
+      case EnterNotify:
+      case LeaveNotify:	   time = event->xcrossing.time;	break;
+      case PropertyNotify: time = event->xproperty.time;	break;
+      case SelectionClear: time = event->xselectionclear.time;	break;
+
+      case MappingNotify:  _XtRefreshMapping(event, True);	break;
+    }
+    pd = _XtGetPerDisplay(event->xany.display);
+    if (time) pd->last_timestamp = time;
+    pd->last_event = *event;
+
+    if (pd->dispatcher_list) {
+	dispatch = pd->dispatcher_list[event->type];
+	if (dispatch == NULL) dispatch = _XtDefaultDispatcher;
+    }
+    was_dispatched = (*dispatch)(event);
+
+    /*
+     * To make recursive XtDispatchEvent work, we need to do phase 2 destroys
+     * only on those widgets destroyed by this particular dispatch.
+     *
+     */
+
+    if (app->destroy_count > starting_count)
+	_XtDoPhase2Destroy(app, dispatch_level);
+
+    app->dispatch_level = dispatch_level - 1;
+
+    if ((safe = _XtSafeToDestroy(app))) {
+	if (app->dpy_destroy_count != 0) _XtCloseDisplays(app);
+	if (app->free_bindings) _XtDoFreeBindings(app);
+    }
+    UNLOCK_APP(app);
+    LOCK_PROCESS;
+    if (_XtAppDestroyCount != 0 && safe) _XtDestroyAppContexts();
+    UNLOCK_PROCESS;
+    return was_dispatched;
+}
+
+/* ARGSUSED */
+static void GrabDestroyCallback(
+    Widget  widget,
+    XtPointer closure,
+    XtPointer call_data)
+{
+    /* Remove widget from grab list if it destroyed */
+    XtRemoveGrab(widget);
+}
+
+static XtGrabRec *NewGrabRec(
+    Widget  widget,
+    Boolean exclusive,
+    Boolean spring_loaded)
+{
+    register XtGrabList    gl;
+
+    gl		      = XtNew(XtGrabRec);
+    gl->next	      = NULL;
+    gl->widget        = widget;
+    gl->exclusive     = exclusive;
+    gl->spring_loaded = spring_loaded;
+
+    return gl;
+}
+
+void XtAddGrab(
+    Widget  widget,
+    _XtBoolean exclusive,
+    _XtBoolean spring_loaded)
+{
+    register    XtGrabList gl;
+    XtGrabList	*grabListPtr;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    grabListPtr = _XtGetGrabList(_XtGetPerDisplayInput(XtDisplay(widget)));
+
+    if (spring_loaded && !exclusive) {
+	XtAppWarningMsg(app,
+		"grabError", "xtAddGrab", XtCXtToolkitError,
+		"XtAddGrab requires exclusive grab if spring_loaded is TRUE",
+		(String *) NULL, (Cardinal *) NULL);
+	exclusive = TRUE;
+    }
+
+    gl = NewGrabRec(widget, exclusive, spring_loaded);
+    gl->next = *grabListPtr;
+    *grabListPtr = gl;
+
+    XtAddCallback (widget, XtNdestroyCallback,
+	    GrabDestroyCallback, (XtPointer) NULL);
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void XtRemoveGrab(
+    Widget  widget)
+{
+    register XtGrabList gl;
+    register Boolean done;
+    XtGrabList	*grabListPtr;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+
+    grabListPtr = _XtGetGrabList(_XtGetPerDisplayInput(XtDisplay(widget)));
+
+    for (gl = *grabListPtr; gl != NULL; gl = gl->next) {
+	if (gl->widget == widget) break;
+    }
+
+    if (gl == NULL) {
+	    XtAppWarningMsg(app,
+		       "grabError","xtRemoveGrab",XtCXtToolkitError,
+		       "XtRemoveGrab asked to remove a widget not on the list",
+		       (String *)NULL, (Cardinal *)NULL);
+	    UNLOCK_PROCESS;
+    	    UNLOCK_APP(app);
+	    return;
+	}
+
+    do {
+	gl = *grabListPtr;
+	done = (gl->widget == widget);
+	*grabListPtr = gl->next;
+	XtRemoveCallback(gl->widget, XtNdestroyCallback,
+		GrabDestroyCallback, (XtPointer)NULL);
+	XtFree((char *)gl);
+    } while (! done);
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return;
+}
+
+void XtMainLoop(void)
+{
+	XtAppMainLoop(_XtDefaultAppContext());
+}
+
+void XtAppMainLoop(
+	XtAppContext app)
+{
+    XEvent event;
+
+    LOCK_APP(app);
+    do {
+    	XtAppNextEvent(app, &event);
+#ifdef XTHREADS
+	/* assert(app == XtDisplayToApplicationContext(event.xany.display)); */
+#endif
+	XtDispatchEvent(&event);
+    } while(app->exit_flag == FALSE);
+    UNLOCK_APP(app);
+}
+
+void _XtFreeEventTable(
+    XtEventTable *event_table)
+{
+    register XtEventTable event;
+
+    event = *event_table;
+    while (event != NULL) {
+	register XtEventTable next = event->next;
+	XtFree((char *) event);
+	event = next;
+    }
+}
+
+Time XtLastTimestampProcessed(
+    Display *dpy)
+{
+    Time time;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    time =  _XtGetPerDisplay(dpy)->last_timestamp;
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return(time);
+}
+
+XEvent* XtLastEventProcessed(
+    Display* dpy)
+{
+    XEvent* le = NULL;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    le = &_XtGetPerDisplay(dpy)->last_event;
+    if (!le->xany.serial)
+	le =  NULL;
+    UNLOCK_APP(app);
+    return le;
+}
+
+void _XtSendFocusEvent(
+    Widget child,
+    int type)
+{
+    child = XtIsWidget(child) ? child : _XtWindowedAncestor(child);
+    if (XtIsSensitive(child) && !child->core.being_destroyed
+	&& XtIsRealized(child)
+	&& (XtBuildEventMask(child) & FocusChangeMask))
+    {
+	XFocusChangeEvent event;
+	Display* dpy = XtDisplay (child);
+
+	event.type = type;
+	event.serial = LastKnownRequestProcessed(dpy);
+	event.send_event = True;
+	event.display = dpy;
+	event.window = XtWindow(child);
+	event.mode = NotifyNormal;
+	event.detail = NotifyAncestor;
+	if (XFilterEvent((XEvent*)&event, XtWindow(child)))
+	    return;
+	XtDispatchEventToWidget(child, (XEvent*)&event);
+    }
+}
+
+static XtEventDispatchProc* NewDispatcherList(void)
+{
+    XtEventDispatchProc* l =
+	(XtEventDispatchProc*) __XtCalloc((Cardinal) 128,
+					(Cardinal)sizeof(XtEventDispatchProc));
+    return l;
+}
+
+XtEventDispatchProc XtSetEventDispatcher(
+    Display		*dpy,
+    int			event_type,
+    XtEventDispatchProc	proc)
+{
+    XtEventDispatchProc *list;
+    XtEventDispatchProc old_proc;
+    register XtPerDisplay pd;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    pd = _XtGetPerDisplay(dpy);
+
+    list = pd->dispatcher_list;
+    if (!list) {
+	if (proc) list = pd->dispatcher_list = NewDispatcherList();
+	else return _XtDefaultDispatcher;
+    }
+    old_proc = list[event_type];
+    list[event_type] = proc;
+    if (old_proc == NULL) old_proc = _XtDefaultDispatcher;
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return old_proc;
+}
+
+void XtRegisterExtensionSelector(
+    Display		*dpy,
+    int			min_event_type,
+    int			max_event_type,
+    XtExtensionSelectProc	proc,
+    XtPointer 		client_data)
+{
+    ExtSelectRec *e;
+    XtPerDisplay pd;
+    int i;
+    DPY_TO_APPCON(dpy);
+
+    if (dpy == NULL) XtErrorMsg("nullDisplay",
+		"xtRegisterExtensionSelector", XtCXtToolkitError,
+		"XtRegisterExtensionSelector requires a non-NULL display",
+		(String *) NULL, (Cardinal *) NULL);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    pd = _XtGetPerDisplay(dpy);
+
+    for (i = 0; i < pd->ext_select_count; i++) {
+	e = &pd->ext_select_list[i];
+	if (e->min == min_event_type && e->max == max_event_type) {
+	    e->proc = proc;
+	    e->client_data = client_data;
+	    return;
+	}
+	if ((min_event_type >= e->min && min_event_type <= e->max) ||
+	    (max_event_type >= e->min && max_event_type <= e->max)) {
+	    XtErrorMsg("rangeError", "xtRegisterExtensionSelector",
+		       XtCXtToolkitError,
+	"Attempt to register multiple selectors for one extension event type",
+		       (String *) NULL, (Cardinal *) NULL);
+	    UNLOCK_PROCESS;
+	    UNLOCK_APP(app);
+	    return;
+	}
+    }
+    pd->ext_select_count++;
+    pd->ext_select_list =
+	    (ExtSelectRec *) XtRealloc((char *) pd->ext_select_list,
+		       pd->ext_select_count * sizeof(ExtSelectRec));
+    for (i = pd->ext_select_count - 1; i > 0; i--) {
+	if (pd->ext_select_list[i-1].min > min_event_type) {
+	    pd->ext_select_list[i] = pd->ext_select_list[i-1];
+	} else break;
+    }
+    pd->ext_select_list[i].min = min_event_type;
+    pd->ext_select_list[i].max = max_event_type;
+    pd->ext_select_list[i].proc = proc;
+    pd->ext_select_list[i].client_data = client_data;
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void _XtExtensionSelect(
+    Widget widget)
+{
+    int i;
+    XtPerDisplay pd;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+
+    pd = _XtGetPerDisplay(XtDisplay(widget));
+
+    for (i = 0; i < pd->ext_select_count; i++) {
+	CallExtensionSelector(widget, pd->ext_select_list+i, FALSE);
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
diff --git a/libXt/src/EventUtil.c b/libXt/src/EventUtil.c
new file mode 100644
index 000000000..929d83dc1
--- /dev/null
+++ b/libXt/src/EventUtil.c
@@ -0,0 +1,221 @@
+/* $Xorg: EventUtil.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/********************************************************
+
+Copyright 1988 by Hewlett-Packard Company
+Copyright 1987, 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+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, and that the names of
+Hewlett-Packard, Digital, or Sun  not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+********************************************************/
+
+/*
+
+Copyright 1987, 1988, 1989, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/EventUtil.c,v 1.6 2001/12/14 19:56:13 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "PassivGraI.h"
+#include "StringDefs.h"
+#include "EventI.h"
+
+static XContext 	perWidgetInputContext = 0;
+
+void _XtFreePerWidgetInput(
+    Widget 		w,
+    XtPerWidgetInput	pwi)
+{
+    LOCK_PROCESS;
+    XDeleteContext(XtDisplay(w),
+		   (Window)w,
+		   perWidgetInputContext);
+
+    XtFree((char *)pwi);
+    UNLOCK_PROCESS;
+}
+
+/*
+ * This routine gets the passive list associated with the widget
+ * from the context manager.
+ */
+XtPerWidgetInput _XtGetPerWidgetInput(
+    Widget	widget,
+    _XtBoolean	create)
+{
+    XtPerWidgetInput	pwi = NULL;
+    Display		*dpy = widget->core.screen->display;
+
+    LOCK_PROCESS;
+    if (! perWidgetInputContext)
+      perWidgetInputContext = XUniqueContext();
+
+    if (XFindContext(dpy,
+		     (Window)widget,
+		     perWidgetInputContext,
+		     (XPointer *)&pwi) &&
+	create)
+      {
+	  pwi = (XtPerWidgetInput)
+	    __XtMalloc((unsigned) sizeof(XtPerWidgetInputRec));
+
+	  pwi->focusKid = NULL;
+	  pwi->queryEventDescendant = NULL;
+	  pwi->focalPoint = XtUnrelated;
+	  pwi->keyList =
+	    pwi->ptrList = NULL;
+
+	  pwi->haveFocus =
+	      pwi->map_handler_added =
+		  pwi->realize_handler_added =
+		      pwi->active_handler_added = FALSE;
+
+	  XtAddCallback(widget, XtNdestroyCallback,
+			_XtDestroyServerGrabs, (XtPointer)pwi);
+
+	  (void) XSaveContext(dpy,
+			      (Window)widget,
+			      perWidgetInputContext,
+			      (char *) pwi);
+      }
+    UNLOCK_PROCESS;
+    return pwi;
+}
+
+
+void _XtFillAncestorList(
+    Widget	**listPtr,
+    int		*maxElemsPtr,
+    int		*numElemsPtr,
+    Widget	start,
+    Widget	breakWidget)
+{
+#define CACHESIZE 16
+    Cardinal	i;
+    Widget	w;
+    Widget	*trace = *listPtr;
+
+    /* First time in, allocate the ancestor list */
+    if (trace == NULL)
+      {
+	  trace = (Widget *) __XtMalloc(CACHESIZE * sizeof(Widget));
+	  *maxElemsPtr = CACHESIZE;
+      }
+    /* First fill in the ancestor list */
+
+    trace[0] = start;
+
+    for (i = 1, w = XtParent(start);
+	 w != NULL && !XtIsShell(trace[i-1]) && trace[i-1] != breakWidget;
+	 w = XtParent(w), i++) {
+	if (i == (Cardinal) *maxElemsPtr) {
+	    /* This should rarely happen, but if it does it'll probably
+	       happen again, so grow the ancestor list */
+	    *maxElemsPtr += CACHESIZE;
+	    trace = (Widget *) XtRealloc((char*)trace,
+					 sizeof(Widget) * (*maxElemsPtr));
+	}
+	trace[i] = w;
+    }
+    *listPtr = trace;
+    *numElemsPtr = i;
+#undef CACHESIZE
+}
+
+
+Widget _XtFindRemapWidget(
+    XEvent	*event,
+    Widget	widget,
+    EventMask	mask,
+    XtPerDisplayInput pdi)
+{
+    Widget		dspWidget = widget;
+
+    if (!pdi->traceDepth || !(widget == pdi->trace[0]))
+      {
+	  _XtFillAncestorList(&pdi->trace, &pdi->traceMax,
+			      &pdi->traceDepth, widget, NULL);
+	  pdi->focusWidget = NULL; /* invalidate the focus
+				      cache */
+      }
+    if (mask & (KeyPressMask | KeyReleaseMask))
+	  dspWidget = _XtProcessKeyboardEvent((XKeyEvent*)event, widget, pdi);
+    else if (mask &(ButtonPressMask | ButtonReleaseMask))
+	  dspWidget = _XtProcessPointerEvent((XButtonEvent*)event, widget,pdi);
+
+    return dspWidget;
+}
+
+void _XtUngrabBadGrabs(
+    XEvent	*event,
+    Widget	widget,
+    EventMask	mask,
+    XtPerDisplayInput pdi)
+{
+    XKeyEvent	* ke = (XKeyEvent *) event;
+
+    if (mask & (KeyPressMask | KeyReleaseMask))
+      {
+	  if (IsServerGrab(pdi->keyboard.grabType) &&
+	      !_XtOnGrabList(pdi->keyboard.grab.widget,
+			     pdi->grabList))
+	    XtUngrabKeyboard(widget, ke->time);
+
+      }
+    else
+      {
+	  if (IsServerGrab(pdi->pointer.grabType) &&
+	      !_XtOnGrabList(pdi->pointer.grab.widget,
+			     pdi->grabList))
+	    XtUngrabPointer(widget, ke->time);
+      }
+}
diff --git a/libXt/src/Functions.c b/libXt/src/Functions.c
new file mode 100644
index 000000000..074a60f4c
--- /dev/null
+++ b/libXt/src/Functions.c
@@ -0,0 +1,216 @@
+/* $Xorg: Functions.c,v 1.4 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/*
+
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+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, and that the name Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+*/
+
+/*
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1994, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include <X11/Shell.h>
+#include <X11/Vendor.h>
+
+/*
+ * This file defines functional equivalents to all macros defined
+ * in Intrinsic.h
+ *
+ */
+
+#undef XtIsRectObj
+Boolean XtIsRectObj(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x02);
+}
+
+
+#undef XtIsWidget
+Boolean XtIsWidget(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x04);
+}
+
+
+#undef XtIsComposite
+Boolean XtIsComposite(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x08);
+}
+
+
+#undef XtIsConstraint
+Boolean XtIsConstraint(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x10);
+}
+
+
+#undef XtIsShell
+Boolean XtIsShell(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x20);
+}
+
+
+#undef XtIsOverrideShell
+Boolean XtIsOverrideShell(Widget object)
+{
+    return _XtIsSubclassOf(object, (WidgetClass)overrideShellWidgetClass,
+			   (WidgetClass)shellWidgetClass, 0x20);
+}
+
+
+#undef XtIsWMShell
+Boolean XtIsWMShell(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x40);
+}
+
+
+#undef XtIsVendorShell
+Boolean XtIsVendorShell(Widget object)
+{
+    Boolean retval;
+
+    LOCK_PROCESS;
+    retval = _XtIsSubclassOf(object,
+#ifdef notdef
+/*
+ * We don't refer to vendorShell directly, because some shared libraries
+ * bind local references tightly.
+ */
+			   (WidgetClass)vendorShellWidgetClass,
+#endif
+			   transientShellWidgetClass->core_class.superclass,
+			   (WidgetClass)wmShellWidgetClass, 0x40);
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+
+#undef XtIsTransientShell
+Boolean XtIsTransientShell(Widget object)
+{
+    return _XtIsSubclassOf(object, (WidgetClass)transientShellWidgetClass,
+			   (WidgetClass)wmShellWidgetClass, 0x40);
+}
+
+
+#undef XtIsTopLevelShell
+Boolean XtIsTopLevelShell(Widget object)
+{
+    return _XtCheckSubclassFlag(object, 0x80);
+}
+
+
+#undef XtIsApplicationShell
+Boolean XtIsApplicationShell(Widget object)
+{
+    return _XtIsSubclassOf(object, (WidgetClass)applicationShellWidgetClass,
+			   (WidgetClass)topLevelShellWidgetClass, 0x80);
+}
+
+#undef XtIsSessionShell
+Boolean XtIsSessionShell(Widget object)
+{
+    return _XtIsSubclassOf(object, (WidgetClass)sessionShellWidgetClass,
+			   (WidgetClass)topLevelShellWidgetClass, 0x80);
+}
+
+#undef XtMapWidget
+void XtMapWidget(Widget w)
+{
+    Widget hookobj;
+    WIDGET_TO_APPCON(w);
+
+    LOCK_APP(app);
+    XMapWindow(XtDisplay(w), XtWindow(w));
+    hookobj = XtHooksOfDisplay(XtDisplay(w));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHmapWidget;
+	call_data.widget = w;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+}
+
+
+#undef XtUnmapWidget
+void XtUnmapWidget(Widget w)
+{
+    Widget hookobj;
+    WIDGET_TO_APPCON(w);
+
+    LOCK_APP(app);
+    XUnmapWindow(XtDisplay(w), XtWindow(w));
+    hookobj = XtHooksOfDisplay(XtDisplay(w));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHunmapWidget;
+	call_data.widget = w;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+}
+
+
+#undef XtNewString
+String XtNewString(String str)
+{
+    if (str == NULL)
+	return NULL;
+    else
+	return strcpy(__XtMalloc((unsigned)strlen(str) + 1), str);
+}
diff --git a/libXt/src/GCManager.c b/libXt/src/GCManager.c
new file mode 100644
index 000000000..c09cb229b
--- /dev/null
+++ b/libXt/src/GCManager.c
@@ -0,0 +1,353 @@
+/* $Xorg: GCManager.c,v 1.5 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1990, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/GCManager.c,v 1.5 2001/08/22 22:52:18 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+
+typedef struct _GCrec {
+    unsigned char screen;	/* Screen for GC */
+    unsigned char depth;	/* Depth for GC */
+    char	  dashes;	/* Dashes value */
+    Pixmap	  clip_mask;	/* Clip_mask value */
+    Cardinal	  ref_count;    /* # of shareholders */
+    GC		  gc;		/* The GC itself. */
+    XtGCMask	  dynamic_mask;	/* Writable values */
+    XtGCMask	  unused_mask;	/* Unused values */
+    struct _GCrec *next;	/* Next GC for this widgetkind. */
+} GCrec, *GCptr;
+
+#define GCVAL(bit,mask,val,default) ((bit&mask) ? val : default)
+
+#define CHECK(bit,comp,default) \
+    if ((checkMask & bit) && \
+	(GCVAL(bit,valueMask,v->comp,default) != gcv.comp)) return False
+
+#define ALLGCVALS (GCFunction | GCPlaneMask | GCForeground | \
+		   GCBackground | GCLineWidth | GCLineStyle | \
+		   GCCapStyle | GCJoinStyle | GCFillStyle | \
+		   GCFillRule | GCTile | GCStipple | \
+		   GCTileStipXOrigin | GCTileStipYOrigin | \
+		   GCFont | GCSubwindowMode | GCGraphicsExposures | \
+		   GCClipXOrigin | GCClipYOrigin | GCDashOffset | \
+		   GCArcMode)
+
+static Bool Matches(
+    Display *dpy,
+    GCptr ptr,
+    register XtGCMask valueMask,
+    register XGCValues *v,
+    XtGCMask readOnlyMask,
+    XtGCMask dynamicMask)
+{
+    XGCValues gcv;
+    register XtGCMask checkMask;
+
+    if (readOnlyMask & ptr->dynamic_mask)
+	return False;
+    if (((ptr->dynamic_mask|ptr->unused_mask) & dynamicMask) != dynamicMask)
+	return False;
+    if (!XGetGCValues(dpy, ptr->gc, ALLGCVALS, &gcv))
+	return False;
+    checkMask = readOnlyMask & ~ptr->unused_mask;
+    CHECK(GCForeground, foreground, 0);
+    CHECK(GCBackground, background, 1);
+    CHECK(GCFont, font, ~0UL);
+    CHECK(GCFillStyle, fill_style, FillSolid);
+    CHECK(GCLineWidth, line_width, 0);
+    CHECK(GCFunction, function, GXcopy);
+    CHECK(GCGraphicsExposures, graphics_exposures, True);
+    CHECK(GCTile, tile, ~0UL);
+    CHECK(GCSubwindowMode, subwindow_mode, ClipByChildren);
+    CHECK(GCPlaneMask, plane_mask, AllPlanes);
+    CHECK(GCLineStyle, line_style, LineSolid);
+    CHECK(GCCapStyle, cap_style, CapButt);
+    CHECK(GCJoinStyle, join_style, JoinMiter);
+    CHECK(GCFillRule, fill_rule, EvenOddRule);
+    CHECK(GCArcMode, arc_mode, ArcPieSlice);
+    CHECK(GCStipple, stipple, ~0UL);
+    CHECK(GCTileStipXOrigin, ts_x_origin, 0);
+    CHECK(GCTileStipYOrigin, ts_y_origin, 0);
+    CHECK(GCClipXOrigin, clip_x_origin, 0);
+    CHECK(GCClipYOrigin, clip_y_origin, 0);
+    CHECK(GCDashOffset, dash_offset, 0);
+    gcv.clip_mask = ptr->clip_mask;
+    CHECK(GCClipMask, clip_mask, None);
+    gcv.dashes = ptr->dashes;
+    CHECK(GCDashList, dashes, 4);
+    valueMask &= ptr->unused_mask | dynamicMask;
+    if (valueMask) {
+	XChangeGC(dpy, ptr->gc, valueMask, v);
+	if (valueMask & GCDashList)
+	    ptr->dashes = v->dashes;
+	if (valueMask & GCClipMask)
+	    ptr->clip_mask = v->clip_mask;
+    }
+    ptr->unused_mask &= ~(dynamicMask | readOnlyMask);
+    ptr->dynamic_mask |= dynamicMask;
+    return True;
+} /* Matches */
+
+/* Called by CloseDisplay to free the per-display GC list */
+void _XtGClistFree(
+    Display *dpy,
+    register XtPerDisplay pd)
+{
+    register GCptr GClist, next;
+    register int i;
+
+    GClist = pd->GClist;
+    while (GClist) {
+	next = GClist->next;
+	XtFree((char*)GClist);
+	GClist = next;
+    }
+    if (pd->pixmap_tab) {
+	for (i = ScreenCount(dpy); --i >= 0; ) {
+	    if (pd->pixmap_tab[i])
+		XtFree((char *)pd->pixmap_tab[i]);
+	}
+	XtFree((char *)pd->pixmap_tab);
+    }
+}
+
+
+/*
+ * Return a GC with the given values and characteristics.
+ */
+
+GC XtAllocateGC(
+    register Widget widget,
+    Cardinal	    depth,
+    XtGCMask        valueMask,
+    XGCValues       *values,
+    XtGCMask        dynamicMask,
+    XtGCMask        unusedMask)
+{
+    register GCptr *prev;
+    register GCptr cur;
+    Screen *screen;
+    register Display *dpy;
+    register XtPerDisplay pd;
+    Drawable drawable;
+    Drawable *pixmaps;
+    XtGCMask readOnlyMask;
+    GC retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    if (!XtIsWidget(widget))
+	widget = _XtWindowedAncestor(widget);
+    if (!depth)
+	depth = widget->core.depth;
+    screen = XtScreen(widget);
+    dpy = DisplayOfScreen(screen);
+    pd = _XtGetPerDisplay(dpy);
+    unusedMask &= ~valueMask;
+    readOnlyMask = ~(dynamicMask | unusedMask);
+
+    /* Search for existing GC that matches exactly */
+    for (prev = &pd->GClist; (cur = *prev); prev = &cur->next) {
+	if (cur->depth == depth &&
+	    ScreenOfDisplay(dpy, cur->screen) == screen &&
+	    Matches(dpy, cur, valueMask, values, readOnlyMask, dynamicMask)) {
+            cur->ref_count++;
+	    /* Move this GC to front of list */
+	    *prev = cur->next;
+	    cur->next = pd->GClist;
+	    pd->GClist = cur;
+	    retval = cur->gc;
+	    UNLOCK_PROCESS;
+	    UNLOCK_APP(app);
+	    return retval;
+	}
+    }
+
+    /* No matches, have to create a new one */
+    cur = XtNew(GCrec);
+    cur->screen = XScreenNumberOfScreen(screen);
+    cur->depth = depth;
+    cur->ref_count = 1;
+    cur->dynamic_mask = dynamicMask;
+    cur->unused_mask = (unusedMask & ~dynamicMask);
+    cur->dashes = GCVAL(GCDashList, valueMask, values->dashes, 4);
+    cur->clip_mask = GCVAL(GCClipMask, valueMask, values->clip_mask, None);
+    drawable = 0;
+    if (depth == widget->core.depth)
+	drawable = XtWindow(widget);
+    if (!drawable && depth == (Cardinal) DefaultDepthOfScreen(screen))
+	drawable = RootWindowOfScreen(screen);
+    if (!drawable) {
+	if (!pd->pixmap_tab) {
+	    int n;
+	    pd->pixmap_tab = (Drawable **)__XtMalloc((unsigned)ScreenCount(dpy) *
+						   sizeof(Drawable *));
+	    for (n = 0; n < ScreenCount(dpy); n++)
+		pd->pixmap_tab[n] = NULL;
+	}
+	pixmaps = pd->pixmap_tab[cur->screen];
+	if (!pixmaps) {
+	    int max, n, *depths;
+	    depths = XListDepths(dpy, cur->screen, &n);
+	    n--;
+	    max = depths[n];
+	    while (n--) {
+		if (depths[n] > max)
+		    max = depths[n];
+	    }
+	    XFree((char *)depths);
+	    pixmaps = (Drawable *)__XtCalloc((unsigned)max, sizeof(Drawable));
+	    pd->pixmap_tab[cur->screen] = pixmaps;
+	}
+	drawable = pixmaps[cur->depth - 1];
+	if (!drawable) {
+	    drawable = XCreatePixmap(dpy, RootWindowOfScreen(screen), 1, 1,
+				     cur->depth);
+	    pixmaps[cur->depth - 1] = drawable;
+	}
+    }
+    cur->gc = XCreateGC(dpy, drawable, valueMask, values);
+    cur->next = pd->GClist;
+    pd->GClist = cur;
+    retval = cur->gc;
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return retval;
+} /* XtAllocateGC */
+
+/*
+ * Return a read-only GC with the given values.
+ */
+
+GC XtGetGC(
+    register Widget widget,
+    XtGCMask        valueMask,
+    XGCValues       *values)
+{
+    return XtAllocateGC(widget, 0, valueMask, values, 0, 0);
+} /* XtGetGC */
+
+void  XtReleaseGC(
+    Widget      widget,
+    register GC gc)
+{
+    register GCptr cur, *prev;
+    Display* dpy;
+    XtPerDisplay pd;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    dpy = XtDisplayOfObject(widget);
+    pd = _XtGetPerDisplay(dpy);
+
+    for (prev = &pd->GClist; (cur = *prev); prev = &cur->next) {
+	if (cur->gc == gc) {
+	    if (--(cur->ref_count) == 0) {
+		*prev = cur->next;
+		XFreeGC(dpy, gc);
+		XtFree((char *) cur);
+	    }
+	    break;
+	}
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+} /* XtReleaseGC */
+
+/*  The following interface is broken and supplied only for backwards
+ *  compatibility.  It will work properly in all cases only if there
+ *  is exactly 1 Display created by the application.
+ */
+
+void XtDestroyGC(register GC gc)
+{
+    GCptr cur, *prev;
+    XtAppContext app;
+
+    LOCK_PROCESS;
+    app = _XtGetProcessContext()->appContextList;
+    /* This is awful; we have to search through all the lists
+       to find the GC. */
+    for (; app; app = app->next) {
+	int i;
+	for (i = app->count; i ;) {
+	    Display *dpy = app->list[--i];
+	    XtPerDisplay pd = _XtGetPerDisplay(dpy);
+	    for (prev = &pd->GClist; (cur = *prev); prev = &cur->next) {
+		if (cur->gc == gc) {
+		    if (--(cur->ref_count) == 0) {
+			*prev = cur->next;
+			XFreeGC(dpy, gc);
+			XtFree((char *) cur);
+		    }
+		    UNLOCK_PROCESS;
+		    return;
+		}
+	    }
+	}
+    }
+    UNLOCK_PROCESS;
+} /* XtDestroyGC */
diff --git a/libXt/src/Geometry.c b/libXt/src/Geometry.c
new file mode 100644
index 000000000..b183bfd76
--- /dev/null
+++ b/libXt/src/Geometry.c
@@ -0,0 +1,817 @@
+/* $Xorg: Geometry.c,v 1.5 2001/02/09 02:03:54 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Geometry.c,v 1.12 2001/12/14 19:56:15 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "ShellP.h"
+#include "ShellI.h"
+
+static void ClearRectObjAreas(
+    RectObj r,
+    XWindowChanges* old)
+{
+    Widget pw = _XtWindowedAncestor((Widget)r);
+    int bw2;
+
+    bw2 = old->border_width << 1;
+    XClearArea( XtDisplay(pw), XtWindow(pw),
+		old->x, old->y,
+		old->width + bw2, old->height + bw2,
+		TRUE );
+
+    bw2 = r->rectangle.border_width << 1;
+    XClearArea( XtDisplay(pw), XtWindow(pw),
+		(int)r->rectangle.x, (int)r->rectangle.y,
+		(unsigned int)(r->rectangle.width + bw2),
+	        (unsigned int)(r->rectangle.height + bw2),
+		TRUE );
+}
+
+/*
+ * Internal function used by XtMakeGeometryRequest and XtSetValues.
+ * Returns more data than the public interface.  Does not convert
+ * XtGeometryDone to XtGeometryYes.
+ *
+ * clear_rect_obj - *** RETURNED ***
+ *		    TRUE if the rect obj has been cleared, false otherwise.
+ */
+
+XtGeometryResult
+_XtMakeGeometryRequest (
+    Widget widget,
+    XtWidgetGeometry *request,
+    XtWidgetGeometry *reply,
+    Boolean * clear_rect_obj)
+{
+    XtWidgetGeometry    junk;
+    XtGeometryHandler manager = (XtGeometryHandler) NULL;
+    XtGeometryResult returnCode;
+    Widget parent = widget->core.parent;
+    Boolean managed, parentRealized, rgm = False;
+    XtConfigureHookDataRec req;
+    Widget hookobj;
+
+    *clear_rect_obj = FALSE;
+
+    CALLGEOTAT(_XtGeoTrace(widget,
+	"\"%s\" is making a %sgeometry request to its parent \"%s\".\n",
+		   XtName(widget),
+		   ((request->request_mode & XtCWQueryOnly))? "query only ":"",
+		   (XtParent(widget))?XtName(XtParent(widget)):"Root"));
+    CALLGEOTAT(_XtGeoTab(1));
+
+    if (XtIsShell(widget)) {
+	ShellClassExtension ext;
+	LOCK_PROCESS;
+	for (ext = (ShellClassExtension)((ShellWidgetClass)XtClass(widget))
+		   ->shell_class.extension;
+	     ext != NULL && ext->record_type != NULLQUARK;
+	     ext = (ShellClassExtension)ext->next_extension);
+
+	if (ext != NULL) {
+	    if (  ext->version == XtShellExtensionVersion
+		  && ext->record_size == sizeof(ShellClassExtensionRec)) {
+		manager = ext->root_geometry_manager;
+		rgm = True;
+	    } else {
+		String params[1];
+		Cardinal num_params = 1;
+		params[0] = XtClass(widget)->core_class.class_name;
+		XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+		     "invalidExtension", "xtMakeGeometryRequest",
+		     XtCXtToolkitError,
+		     "widget class %s has invalid ShellClassExtension record",
+		     params, &num_params);
+	    }
+	} else {
+	    XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+			  "internalError", "xtMakeGeometryRequest",
+			  XtCXtToolkitError,
+			  "internal error; ShellClassExtension is NULL",
+			  NULL, NULL);
+	}
+	managed = True;
+	parentRealized = TRUE;
+	UNLOCK_PROCESS;
+    } else /* not shell */ {
+	if (parent == NULL)
+	    XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+			  "invalidParent","xtMakeGeometryRequest",
+			  XtCXtToolkitError,
+			  "non-shell has no parent in XtMakeGeometryRequest",
+			  (String *)NULL, (Cardinal *)NULL);
+
+	managed = XtIsManaged(widget);
+	parentRealized = XtIsRealized(parent);
+	if (XtIsComposite(parent))
+	{
+	    LOCK_PROCESS;
+	    manager = ((CompositeWidgetClass) (parent->core.widget_class))
+		      ->composite_class.geometry_manager;
+	    UNLOCK_PROCESS;
+	}
+    }
+
+#if 0
+    /*
+     * The Xt spec says that these conditions must generate
+     * error messages (not warnings), but many Xt applications
+     * and toolkits (including parts of Xaw, Motif and Netscape)
+     * depend on the previous Xt behaviour.  Thus, these tests
+     * should probably remain disabled.
+     */
+    if (parentRealized && managed) {
+	if (parent && !XtIsComposite(parent))
+	{
+	    /*
+	     * This shouldn't ever happen, we only test for this to pass
+	     * VSW5.  Normally managing the widget will catch this, but VSW5
+	     * does some really screwy stuff to get here.
+	     */
+	    XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+			  "invalidParent", "xtMakeGeometryRequest",
+			  XtCXtToolkitError,
+			  "XtMakeGeometryRequest - parent not composite",
+			  (String *)NULL, (Cardinal *)NULL);
+	}
+	else if (manager == (XtGeometryHandler) NULL)
+	{
+	    XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+			  "invalidGeometryManager","xtMakeGeometryRequest",
+			  XtCXtToolkitError,
+			  "XtMakeGeometryRequest - parent has no geometry manager",
+			  (String *)NULL, (Cardinal *)NULL);
+	}
+    }
+#else
+    if (!manager)
+	managed = False;
+#endif
+
+    if (widget->core.being_destroyed) {
+	CALLGEOTAT(_XtGeoTab(-1));
+	CALLGEOTAT(_XtGeoTrace(widget,
+		       "It is being destroyed, just return XtGeometryNo.\n"));
+	return XtGeometryNo;
+    }
+
+    /* see if requesting anything to change */
+    req.changeMask = 0;
+    if (request->request_mode & CWStackMode
+	&& request->stack_mode != XtSMDontChange) {
+	    req.changeMask |= CWStackMode;
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "Asking for a change in StackMode!\n"));
+	    if (request->request_mode & CWSibling) {
+		XtCheckSubclass(request->sibling, rectObjClass,
+				"XtMakeGeometryRequest");
+		req.changeMask |= CWSibling;
+	    }
+    }
+    if (request->request_mode & CWX
+	&& widget->core.x != request->x) {
+	CALLGEOTAT(_XtGeoTrace(widget,
+			       "Asking for a change in x: from %d to %d.\n",
+			       widget->core.x, request->x));
+	req.changeMask |= CWX;
+    }
+    if (request->request_mode & CWY
+	&& widget->core.y != request->y) {
+	CALLGEOTAT(_XtGeoTrace(widget,
+			       "Asking for a change in y: from %d to %d.\n",
+			       widget->core.y, request->y));
+	req.changeMask |= CWY;
+    }
+    if (request->request_mode & CWWidth
+	&& widget->core.width != request->width) {
+	CALLGEOTAT(_XtGeoTrace(widget,"Asking for a change in width: from %d to %d.\n",
+		       widget->core.width, request->width));
+	req.changeMask |= CWWidth;
+    }
+    if (request->request_mode & CWHeight
+	&& widget->core.height != request->height) {
+	CALLGEOTAT(_XtGeoTrace(widget,
+			    "Asking for a change in height: from %d to %d.\n",
+			       widget->core.height, request->height));
+	req.changeMask |= CWHeight;
+    }
+    if (request->request_mode & CWBorderWidth
+	&& widget->core.border_width != request->border_width){
+	CALLGEOTAT(_XtGeoTrace(widget,
+		       "Asking for a change in border_width: from %d to %d.\n",
+		       widget->core.border_width, request->border_width));
+	req.changeMask |= CWBorderWidth;
+    }
+    if (! req.changeMask) {
+	CALLGEOTAT(_XtGeoTrace(widget,
+		       "Asking for nothing new,\n"));
+	CALLGEOTAT(_XtGeoTab(-1));
+	CALLGEOTAT(_XtGeoTrace(widget,
+		       "just return XtGeometryYes.\n"));
+	return XtGeometryYes;
+    }
+    req.changeMask |= (request->request_mode & XtCWQueryOnly);
+
+    if ( !(req.changeMask & XtCWQueryOnly) && XtIsRealized(widget) ) {
+	/* keep record of the current geometry so we know what's changed */
+	req.changes.x = widget->core.x ;
+	req.changes.y = widget->core.y ;
+	req.changes.width = widget->core.width ;
+	req.changes.height = widget->core.height ;
+	req.changes.border_width = widget->core.border_width ;
+    }
+
+    if (!managed || !parentRealized) {
+	CALLGEOTAT(_XtGeoTrace(widget,
+			       "Not Managed or Parent not realized.\n"));
+	/* Don't get parent's manager involved--assume the answer is yes */
+	if (req.changeMask & XtCWQueryOnly) {
+	    /* He was just asking, don't change anything, just tell him yes */
+	    CALLGEOTAT(_XtGeoTrace(widget,"QueryOnly request\n"));
+	    CALLGEOTAT(_XtGeoTab(-1));
+	    CALLGEOTAT(_XtGeoTrace(widget,"just return XtGeometryYes.\n"));
+	    return XtGeometryYes;
+	} else {
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "Copy values from request to widget.\n"));
+	    /* copy values from request to widget */
+	    if (request->request_mode & CWX)
+		widget->core.x = request->x;
+	    if (request->request_mode & CWY)
+		widget->core.y = request->y;
+	    if (request->request_mode & CWWidth)
+		widget->core.width = request->width;
+	    if (request->request_mode & CWHeight)
+		widget->core.height = request->height;
+	    if (request->request_mode & CWBorderWidth)
+		widget->core.border_width = request->border_width;
+	    if (!parentRealized) {
+		CALLGEOTAT(_XtGeoTab(-1));
+		CALLGEOTAT(_XtGeoTrace(widget,"and return XtGeometryYes.\n"));
+		return XtGeometryYes;
+	    }
+	    else returnCode = XtGeometryYes;
+	}
+    } else {
+	/* go ask the widget's geometry manager */
+	CALLGEOTAT(_XtGeoTrace(widget,
+			       "Go ask the parent geometry manager.\n"));
+	if (reply == (XtWidgetGeometry *) NULL) {
+	    returnCode = (*manager)(widget, request, &junk);
+	} else {
+	    returnCode = (*manager)(widget, request, reply);
+	}
+    }
+
+    /*
+     * If Unrealized, not a XtGeometryYes, or a query-only then we are done.
+     */
+
+    if ((returnCode != XtGeometryYes) ||
+	(req.changeMask & XtCWQueryOnly) || !XtIsRealized(widget)) {
+
+#ifdef XT_GEO_TATTLER
+	switch(returnCode){
+	case XtGeometryNo:
+	    CALLGEOTAT(_XtGeoTab(-1));
+	    CALLGEOTAT(_XtGeoTrace(widget,"\"%s\" returns XtGeometryNo.\n",
+			  (XtParent(widget))?XtName(XtParent(widget)):"Root"));
+            /* check for no change */
+            break ;
+	case XtGeometryDone:
+	    CALLGEOTAT(_XtGeoTab(-1));
+	    CALLGEOTAT(_XtGeoTrace(widget,"\"%s\" returns XtGeometryDone.\n",
+		        (XtParent(widget))?XtName(XtParent(widget)):"Root"));
+            /* check for no change in queryonly */
+            break ;
+	case XtGeometryAlmost:
+	    CALLGEOTAT(_XtGeoTab(-1));
+	    CALLGEOTAT(_XtGeoTrace(widget,"\"%s\" returns XtGeometryAlmost.\n",
+			 (XtParent(widget))?XtName(XtParent(widget)):"Root"));
+	    CALLGEOTAT(_XtGeoTab(1));
+	    CALLGEOTAT(_XtGeoTrace(widget,"Proposal: width %d height %d.\n",
+			   (reply)?reply->width:junk.width,
+			   (reply)?reply->height:junk.height));
+	    CALLGEOTAT(_XtGeoTab(-1));
+
+            /* check for no change */
+            break ;
+	case XtGeometryYes:
+	    if (req.changeMask & XtCWQueryOnly) {
+		CALLGEOTAT(_XtGeoTrace(widget,
+				"QueryOnly specified, no configuration.\n"));
+	    }
+            if (!XtIsRealized(widget)) {
+		CALLGEOTAT(_XtGeoTrace(widget,
+				 "\"%s\" not realized, no configuration.\n",
+				 XtName(widget)));
+	    }
+	    CALLGEOTAT(_XtGeoTab(-1));
+            CALLGEOTAT(_XtGeoTrace(widget,"\"%s\" returns XtGeometryYes.\n",
+                         (XtParent(widget))?XtName(XtParent(widget)):"Root"));
+	    break ;
+	}
+#endif
+	return returnCode;
+    }
+
+    CALLGEOTAT(_XtGeoTab(-1));
+    CALLGEOTAT(_XtGeoTrace(widget,"\"%s\" returns XtGeometryYes.\n",
+		   (XtParent(widget))?XtName(XtParent(widget)):"Root"));
+
+    if (XtIsWidget(widget)) {	/* reconfigure the window (if needed) */
+
+	if (rgm) return returnCode;
+
+	if (req.changes.x != widget->core.x) {
+ 	    req.changeMask |= CWX;
+ 	    req.changes.x = widget->core.x;
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "x changing to %d\n",widget->core.x));
+ 	}
+ 	if (req.changes.y != widget->core.y) {
+ 	    req.changeMask |= CWY;
+ 	    req.changes.y = widget->core.y;
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "y changing to %d\n",widget->core.y));
+ 	}
+ 	if (req.changes.width != widget->core.width) {
+ 	    req.changeMask |= CWWidth;
+ 	    req.changes.width = widget->core.width;
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				 "width changing to %d\n",widget->core.width));
+ 	}
+ 	if (req.changes.height != widget->core.height) {
+ 	    req.changeMask |= CWHeight;
+ 	    req.changes.height = widget->core.height;
+	    CALLGEOTAT(_XtGeoTrace(widget,
+                               "height changing to %d\n",widget->core.height));
+ 	}
+ 	if (req.changes.border_width != widget->core.border_width) {
+ 	    req.changeMask |= CWBorderWidth;
+ 	    req.changes.border_width = widget->core.border_width;
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "border_width changing to %d\n",
+				   widget->core.border_width));
+ 	}
+	if (req.changeMask & CWStackMode) {
+	    req.changes.stack_mode = request->stack_mode;
+	    CALLGEOTAT(_XtGeoTrace(widget,"stack_mode changing\n"));
+	    if (req.changeMask & CWSibling) {
+		if (XtIsWidget(request->sibling))
+		    req.changes.sibling = XtWindow(request->sibling);
+		else
+		    req.changeMask &= ~(CWStackMode | CWSibling);
+	    }
+	}
+
+#ifdef XT_GEO_TATTLER
+        if (req.changeMask) {
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "XConfigure \"%s\"'s window.\n",
+				   XtName(widget)));
+	} else {
+	    CALLGEOTAT(_XtGeoTrace(widget,
+			     "No window configuration needed for \"%s\".\n",
+			     XtName(widget)));
+	}
+#endif
+
+	XConfigureWindow(XtDisplay(widget), XtWindow(widget),
+			 req.changeMask, &req.changes);
+    }
+    else {			/* RectObj child of realized Widget */
+	*clear_rect_obj = TRUE;
+	CALLGEOTAT(_XtGeoTrace(widget,
+			       "ClearRectObj on \"%s\".\n",XtName(widget)));
+
+	ClearRectObjAreas((RectObj)widget, &req.changes);
+    }
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));;
+    if (XtHasCallbacks(hookobj, XtNconfigureHook) == XtCallbackHasSome) {
+	req.type = XtHconfigure;
+	req.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.confighook_callbacks,
+		(XtPointer)&req);
+    }
+
+    return returnCode;
+} /* _XtMakeGeometryRequest */
+
+
+/* Public routines */
+
+XtGeometryResult XtMakeGeometryRequest (
+    Widget         widget,
+    XtWidgetGeometry *request,
+    XtWidgetGeometry *reply)
+{
+    Boolean junk;
+    XtGeometryResult r;
+    XtGeometryHookDataRec call_data;
+    Widget hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (XtHasCallbacks(hookobj, XtNgeometryHook) == XtCallbackHasSome) {
+	call_data.type = XtHpreGeometry;
+	call_data.widget = widget;
+	call_data.request = request;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.geometryhook_callbacks,
+		(XtPointer)&call_data);
+	call_data.result = r =
+	    _XtMakeGeometryRequest(widget, request, reply, &junk);
+	call_data.type = XtHpostGeometry;
+	call_data.reply = reply;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.geometryhook_callbacks,
+		(XtPointer)&call_data);
+    } else {
+	r = _XtMakeGeometryRequest(widget, request, reply, &junk);
+    }
+    UNLOCK_APP(app);
+
+    return ((r == XtGeometryDone) ? XtGeometryYes : r);
+}
+
+XtGeometryResult
+XtMakeResizeRequest(
+    Widget	widget,
+    _XtDimension width,
+    _XtDimension height,
+    Dimension	*replyWidth,
+    Dimension	*replyHeight)
+{
+    XtWidgetGeometry request, reply;
+    XtGeometryResult r;
+    XtGeometryHookDataRec call_data;
+    Boolean junk;
+    Widget hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    request.request_mode = CWWidth | CWHeight;
+    request.width = width;
+    request.height = height;
+
+    if (XtHasCallbacks(hookobj, XtNgeometryHook) == XtCallbackHasSome) {
+	call_data.type = XtHpreGeometry;
+	call_data.widget = widget;
+	call_data.request = &request;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.geometryhook_callbacks,
+		(XtPointer)&call_data);
+	call_data.result = r =
+	    _XtMakeGeometryRequest(widget, &request, &reply, &junk);
+	call_data.type = XtHpostGeometry;
+	call_data.reply = &reply;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.geometryhook_callbacks,
+		(XtPointer)&call_data);
+    } else {
+	r = _XtMakeGeometryRequest(widget, &request, &reply, &junk);
+    }
+    if (replyWidth != NULL) {
+	if (r == XtGeometryAlmost && reply.request_mode & CWWidth)
+	    *replyWidth = reply.width;
+	else
+	    *replyWidth = width;
+    }
+    if (replyHeight != NULL) {
+	if (r == XtGeometryAlmost && reply.request_mode & CWHeight)
+	    *replyHeight = reply.height;
+	else
+	    *replyHeight = height;
+    }
+    UNLOCK_APP(app);
+    return ((r == XtGeometryDone) ? XtGeometryYes : r);
+} /* XtMakeResizeRequest */
+
+void XtResizeWindow(
+    Widget w)
+{
+    XtConfigureHookDataRec req;
+    Widget hookobj;
+    WIDGET_TO_APPCON(w);
+
+    LOCK_APP(app);
+    if (XtIsRealized(w)) {
+	req.changes.width = w->core.width;
+	req.changes.height = w->core.height;
+	req.changes.border_width = w->core.border_width;
+	req.changeMask = CWWidth | CWHeight | CWBorderWidth;
+	XConfigureWindow(XtDisplay(w), XtWindow(w),
+	    (unsigned) req.changeMask, &req.changes);
+	hookobj = XtHooksOfDisplay(XtDisplayOfObject(w));;
+	if (XtHasCallbacks(hookobj, XtNconfigureHook) == XtCallbackHasSome) {
+	    req.type = XtHconfigure;
+	    req.widget = w;
+	    XtCallCallbackList(hookobj,
+			((HookObject)hookobj)->hooks.confighook_callbacks,
+			(XtPointer)&req);
+	}
+    }
+    UNLOCK_APP(app);
+} /* XtResizeWindow */
+
+void XtResizeWidget(
+    Widget w,
+    _XtDimension width,
+    _XtDimension height,
+    _XtDimension borderWidth)
+{
+    XtConfigureWidget(w, w->core.x, w->core.y, width, height, borderWidth);
+} /* XtResizeWidget */
+
+void XtConfigureWidget(
+    Widget w,
+    _XtPosition x,
+    _XtPosition y,
+    _XtDimension width,
+    _XtDimension height,
+    _XtDimension borderWidth)
+{
+    XtConfigureHookDataRec req;
+    Widget hookobj;
+    XWindowChanges old;
+    WIDGET_TO_APPCON(w);
+
+    CALLGEOTAT(_XtGeoTrace(w,
+                   "\"%s\" is being configured by its parent \"%s\"\n",
+		   XtName(w),
+		   (XtParent(w))?XtName(XtParent(w)):"Root"));
+    CALLGEOTAT(_XtGeoTab(1));
+
+    LOCK_APP(app);
+    req.changeMask = 0;
+    if ((old.x = w->core.x) != x) {
+	CALLGEOTAT(_XtGeoTrace(w,"x move from %d to %d\n",w->core.x, x));
+	req.changes.x = w->core.x = x;
+	req.changeMask |= CWX;
+    }
+
+    if ((old.y = w->core.y) != y) {
+	CALLGEOTAT(_XtGeoTrace(w,"y move from %d to %d\n",w->core.y, y));
+	req.changes.y = w->core.y = y;
+	req.changeMask |= CWY;
+    }
+
+    if ((old.width = w->core.width) != width) {
+	CALLGEOTAT(_XtGeoTrace(w,
+			 "width move from %d to %d\n",w->core.width, width));
+	req.changes.width = w->core.width = width;
+	req.changeMask |= CWWidth;
+    }
+
+    if ((old.height = w->core.height) != height) {
+	CALLGEOTAT(_XtGeoTrace(w,
+		       "height move from %d to %d\n",w->core.height, height));
+	req.changes.height = w->core.height = height;
+	req.changeMask |= CWHeight;
+    }
+
+    if ((old.border_width = w->core.border_width) != borderWidth) {
+	CALLGEOTAT(_XtGeoTrace(w,"border_width move from %d to %d\n",
+		    w->core.border_width,borderWidth ));
+	req.changes.border_width = w->core.border_width = borderWidth;
+	req.changeMask |= CWBorderWidth;
+    }
+
+    if (req.changeMask != 0) {
+	if (XtIsRealized(w)) {
+	    if (XtIsWidget(w)) {
+		CALLGEOTAT(_XtGeoTrace(w,
+                                  "XConfigure \"%s\"'s window\n",XtName(w)));
+		XConfigureWindow(XtDisplay(w), XtWindow(w),
+				 req.changeMask, &req.changes);
+	    } else {
+		CALLGEOTAT(_XtGeoTrace(w,
+			       "ClearRectObj called on \"%s\"\n",XtName(w)));
+		ClearRectObjAreas((RectObj)w, &old);
+	    }
+	}
+	hookobj = XtHooksOfDisplay(XtDisplayOfObject(w));;
+	if (XtHasCallbacks(hookobj, XtNconfigureHook) == XtCallbackHasSome) {
+	    req.type = XtHconfigure;
+	    req.widget = w;
+	    XtCallCallbackList(hookobj,
+			((HookObject)hookobj)->hooks.confighook_callbacks,
+			(XtPointer)&req);
+	}
+	{
+	XtWidgetProc resize;
+
+	LOCK_PROCESS;
+	resize = XtClass(w)->core_class.resize;
+	UNLOCK_PROCESS;
+	if ((req.changeMask & (CWWidth | CWHeight)) &&
+	    resize != (XtWidgetProc) NULL) {
+	    CALLGEOTAT(_XtGeoTrace(w,"Resize proc is called.\n"));
+	    (*resize)(w);
+	 }
+	}
+    } else {
+	CALLGEOTAT(_XtGeoTrace(w,"No change in configuration\n"));
+    }
+
+    CALLGEOTAT(_XtGeoTab(-1));
+    UNLOCK_APP(app);
+} /* XtConfigureWidget */
+
+void XtMoveWidget(
+    Widget w,
+    _XtPosition x,
+    _XtPosition y)
+{
+    XtConfigureWidget(w, x, y, w->core.width, w->core.height,
+		      w->core.border_width);
+} /* XtMoveWidget */
+
+void XtTranslateCoords(
+    register Widget w,
+    _XtPosition x,
+    _XtPosition y,
+    register Position *rootx,	/* return */
+    register Position *rooty)	/* return */
+{
+    Position garbagex, garbagey;
+    XtAppContext app = XtWidgetToApplicationContext(w);
+
+    LOCK_APP(app);
+    if (rootx == NULL) rootx = &garbagex;
+    if (rooty == NULL) rooty = &garbagey;
+
+    *rootx = x;
+    *rooty = y;
+
+    for (; w != NULL && ! XtIsShell(w); w = w->core.parent) {
+	*rootx += w->core.x + w->core.border_width;
+	*rooty += w->core.y + w->core.border_width;
+    }
+
+    if (w == NULL)
+        XtAppWarningMsg(app,
+		"invalidShell","xtTranslateCoords",XtCXtToolkitError,
+                "Widget has no shell ancestor",
+		(String *)NULL, (Cardinal *)NULL);
+    else {
+	Position x, y;
+	_XtShellGetCoordinates( w, &x, &y );
+	*rootx += x + w->core.border_width;
+	*rooty += y + w->core.border_width;
+    }
+    UNLOCK_APP(app);
+}
+
+XtGeometryResult XtQueryGeometry(
+    Widget widget,
+    register XtWidgetGeometry *intended, /* parent's changes; may be NULL */
+    XtWidgetGeometry *reply)	/* child's preferred geometry; never NULL */
+{
+    XtWidgetGeometry null_intended;
+    XtGeometryHandler query;
+    XtGeometryResult result;
+    WIDGET_TO_APPCON(widget);
+
+    CALLGEOTAT(_XtGeoTrace(widget,
+		     "\"%s\" is asking its preferred geometry to \"%s\".\n",
+		     (XtParent(widget))?XtName(XtParent(widget)):"Root",
+		     XtName(widget)));
+    CALLGEOTAT(_XtGeoTab(1));
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    query = XtClass(widget)->core_class.query_geometry;
+    UNLOCK_PROCESS;
+    reply->request_mode = 0;
+    if (query != NULL) {
+	if (intended == NULL) {
+	    null_intended.request_mode = 0;
+	    intended = &null_intended;
+#ifdef XT_GEO_TATTLER
+	    CALLGEOTAT(_XtGeoTrace(widget,"without any constraint.\n"));
+	} else {
+	    CALLGEOTAT(_XtGeoTrace(widget,
+				   "with the following constraints:\n"));
+
+	    if (intended->request_mode & CWX) {
+		CALLGEOTAT(_XtGeoTrace(widget," x = %d\n",intended->x));
+	    }
+	    if (intended->request_mode & CWY) {
+		CALLGEOTAT(_XtGeoTrace(widget," y = %d\n",intended->y));
+	    }
+	    if (intended->request_mode & CWWidth) {
+		CALLGEOTAT(_XtGeoTrace(widget,
+				       " width = %d\n",intended->width));
+	    }
+	    if (intended->request_mode & CWHeight) {
+		CALLGEOTAT(_XtGeoTrace(widget,
+				       " height = %d\n",intended->height));
+	    }
+	    if (intended->request_mode & CWBorderWidth) {
+		CALLGEOTAT(_XtGeoTrace(widget,
+			       " border_width = %d\n",intended->border_width));
+	    }
+#endif
+	}
+
+	result = (*query) (widget, intended, reply);
+    }
+    else {
+	CALLGEOTAT(_XtGeoTrace(widget,"\"%s\" has no QueryGeometry proc, return the current state\n",XtName(widget)));
+
+	result = XtGeometryYes;
+    }
+
+#ifdef XT_GEO_TATTLER
+#define FillIn(mask, field) \
+	if (!(reply->request_mode & mask)) {\
+	      reply->field = widget->core.field;\
+	      _XtGeoTrace(widget," using core %s = %d.\n","field",\
+			                               widget->core.field);\
+	} else {\
+	      _XtGeoTrace(widget," replied %s = %d\n","field",\
+			                           reply->field);\
+	}
+#else
+#define FillIn(mask, field) \
+	if (!(reply->request_mode & mask)) reply->field = widget->core.field;
+#endif
+
+    FillIn(CWX, x);
+    FillIn(CWY, y);
+    FillIn(CWWidth, width);
+    FillIn(CWHeight, height);
+    FillIn(CWBorderWidth, border_width);
+
+    CALLGEOTAT(_XtGeoTab(-1));
+#undef FillIn
+
+    if (!(reply->request_mode & CWStackMode))
+	reply->stack_mode = XtSMDontChange;
+    UNLOCK_APP(app);
+    return result;
+}
diff --git a/libXt/src/GetActKey.c b/libXt/src/GetActKey.c
new file mode 100644
index 000000000..20cae5efe
--- /dev/null
+++ b/libXt/src/GetActKey.c
@@ -0,0 +1,102 @@
+/* $Xorg: GetActKey.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/*LINTLIBRARY*/
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+KeySym XtGetActionKeysym(
+    XEvent *event,
+    Modifiers *modifiers_return)
+{
+    TMKeyContext tm_context;
+    Modifiers modifiers;
+    KeySym keysym, retval;
+
+    LOCK_PROCESS;
+    tm_context= _XtGetPerDisplay(event->xany.display)->tm_context;
+    if (event->xany.type != KeyPress && event->xany.type != KeyRelease) {
+	UNLOCK_PROCESS;
+	return NoSymbol;
+    }
+    if (tm_context != NULL
+	&& event == tm_context->event
+	&& event->xany.serial == tm_context->serial ) {
+
+	if (modifiers_return != NULL)
+	    *modifiers_return = tm_context->modifiers;
+	retval = tm_context->keysym;
+	UNLOCK_PROCESS;
+	return retval;
+    }
+
+    XtTranslateKeycode( event->xany.display, (KeyCode)event->xkey.keycode,
+		        event->xkey.state, &modifiers, &keysym );
+
+    if (modifiers_return != NULL)
+	*modifiers_return = event->xkey.state & modifiers;
+
+    UNLOCK_PROCESS;
+    return keysym;
+}
diff --git a/libXt/src/GetResList.c b/libXt/src/GetResList.c
new file mode 100644
index 000000000..8f99398d7
--- /dev/null
+++ b/libXt/src/GetResList.c
@@ -0,0 +1,193 @@
+/* $Xorg: GetResList.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/GetResList.c,v 3.5 2001/08/22 22:52:18 dawes Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "Intrinsic.h"
+
+/*
+ * XtGetResourceList(), XtGetConstraintResourceList()
+ */
+
+#define	TOXRMQUARK(p) ((XrmQuark)(long)(p))	/* avoid LP64 warnings */
+
+void XtGetResourceList(
+	WidgetClass widget_class,
+	XtResourceList *resources,
+	Cardinal *num_resources)
+{
+	int size;
+	register Cardinal i, dest = 0;
+	register XtResourceList *list, dlist;
+
+	LOCK_PROCESS;
+	size = widget_class->core_class.num_resources * sizeof(XtResource);
+	*resources = (XtResourceList) __XtMalloc((unsigned) size);
+
+	if (!widget_class->core_class.class_inited) {
+	    /* Easy case */
+
+	    (void) memmove((char *) *resources,
+			   (char *)widget_class->core_class.resources, size);
+	    *num_resources = widget_class->core_class.num_resources;
+	    UNLOCK_PROCESS;
+	    return;
+	}
+
+	/* Nope, it's the hard case */
+
+	list = (XtResourceList *) widget_class->core_class.resources;
+	dlist = *resources;
+	for (i = 0; i < widget_class->core_class.num_resources; i++) {
+	    if (list[i] != NULL) {
+		dlist[dest].resource_name = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->resource_name));
+		dlist[dest].resource_class = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->resource_class));
+		dlist[dest].resource_type = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->resource_type));
+		dlist[dest].resource_size = list[i]->resource_size;
+		/* trust that resource_offset isn't that big */
+		dlist[dest].resource_offset = (Cardinal)
+			-((int)(list[i]->resource_offset + 1));
+		dlist[dest].default_type = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->default_type));
+		dlist[dest].default_addr = list[i]->default_addr;
+		dest++;
+	    }
+	}
+	*num_resources = dest;
+	UNLOCK_PROCESS;
+}
+
+
+static Boolean ClassIsSubclassOf(WidgetClass class, WidgetClass superclass)
+{
+    for (; class != NULL; class = class->core_class.superclass) {
+	if (class == superclass) return True;
+    }
+    return False;
+}
+
+void XtGetConstraintResourceList(
+	WidgetClass widget_class,
+	XtResourceList *resources,
+	Cardinal *num_resources)
+{
+	int size;
+	register Cardinal i, dest = 0;
+	register XtResourceList *list, dlist;
+	ConstraintWidgetClass class = (ConstraintWidgetClass)widget_class;
+
+	LOCK_PROCESS;
+	if (   (class->core_class.class_inited &&
+		!(class->core_class.class_inited & ConstraintClassFlag))
+	    || (!class->core_class.class_inited &&
+		!ClassIsSubclassOf(widget_class, constraintWidgetClass))
+	    || class->constraint_class.num_resources == 0) {
+
+	    *resources = NULL;
+	    *num_resources = 0;
+	    UNLOCK_PROCESS;
+	    return;
+	}
+
+	size = class->constraint_class.num_resources * sizeof(XtResource);
+	*resources = (XtResourceList) __XtMalloc((unsigned) size);
+
+	if (!class->core_class.class_inited) {
+	    /* Easy case */
+
+	    (void) memmove((char *) *resources,
+			   (char *)class->constraint_class.resources, size);
+	    *num_resources = class->constraint_class.num_resources;
+	    UNLOCK_PROCESS;
+	    return;
+	}
+
+	/* Nope, it's the hard case */
+
+	list = (XtResourceList *) class->constraint_class.resources;
+	dlist = *resources;
+	for (i = 0; i < class->constraint_class.num_resources; i++) {
+	    if (list[i] != NULL) {
+		dlist[dest].resource_name = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->resource_name));
+		dlist[dest].resource_class = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->resource_class));
+		dlist[dest].resource_type = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->resource_type));
+		dlist[dest].resource_size = list[i]->resource_size;
+		/* trust that resource_offset isn't that big */
+		dlist[dest].resource_offset = (Cardinal)
+			-((int)(list[i]->resource_offset + 1));
+		dlist[dest].default_type = (String)
+			XrmQuarkToString(TOXRMQUARK(list[i]->default_type));
+		dlist[dest].default_addr = list[i]->default_addr;
+		dest++;
+	    }
+	}
+	*num_resources = dest;
+	UNLOCK_PROCESS;
+}
diff --git a/libXt/src/GetValues.c b/libXt/src/GetValues.c
new file mode 100644
index 000000000..f6b8e1f3b
--- /dev/null
+++ b/libXt/src/GetValues.c
@@ -0,0 +1,251 @@
+/* $Xorg: GetValues.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+/*LINTLIBRARY*/
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/GetValues.c,v 1.2 2001/08/22 22:52:18 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+
+static int GetValues(
+  char*			base,		/* Base address to fetch values from */
+  XrmResourceList*      res,		/* The current resource values.      */
+  register Cardinal	num_resources,	/* number of items in resources      */
+  ArgList 		args,		/* The resource values requested     */
+  Cardinal		num_args)	/* number of items in arg list       */
+{
+    register ArgList		arg;
+    register Cardinal 		i;
+    register XrmName		argName;
+    register XrmResourceList*   xrmres;
+    int				translation_arg_num = -1;
+    static XrmQuark QCallback = NULLQUARK;
+    static XrmQuark QTranslationTable = NULLQUARK;
+
+    LOCK_PROCESS;
+    if (QCallback == NULLQUARK) {
+	QCallback = XrmPermStringToQuark(XtRCallback);
+	QTranslationTable = XrmPermStringToQuark(XtRTranslationTable);
+    }
+    UNLOCK_PROCESS;
+
+    /* Resource lists should be in compiled form already  */
+
+    for (arg = args ; num_args != 0; num_args--, arg++) {
+	argName = StringToName(arg->name);
+	for (xrmres = res, i = 0; i < num_resources; i++, xrmres++) {
+	    if (argName == (*xrmres)->xrm_name) {
+		/* hack; do special cases here instead of a get_values_hook
+		 * because get_values_hook looses info as to
+		 * whether arg->value == NULL for ancient compatibility
+		 * mode in _XtCopyToArg.  It helps performance, too...
+		 */
+		if ((*xrmres)->xrm_type == QCallback) {
+		    XtCallbackList callback = _XtGetCallbackList(
+			      (InternalCallbackList *)
+			      (base - (*xrmres)->xrm_offset - 1));
+		    _XtCopyToArg(
+			      (char*)&callback, &arg->value,
+			      (*xrmres)->xrm_size);
+		}
+		else if ((*xrmres)->xrm_type == QTranslationTable)
+		    translation_arg_num = (int) (arg - args);
+		else {
+		    _XtCopyToArg(
+			      base - (*xrmres)->xrm_offset - 1,
+			      &arg->value,
+			      (*xrmres)->xrm_size);
+		}
+		break;
+	    }
+	}
+    }
+    return translation_arg_num;
+} /* GetValues */
+
+static void CallGetValuesHook(
+    WidgetClass	  widget_class,
+    Widget	  w,
+    ArgList	  args,
+    Cardinal	  num_args)
+{
+    WidgetClass superclass;
+    XtArgsProc get_values_hook;
+
+    LOCK_PROCESS;
+    superclass = widget_class->core_class.superclass;
+    UNLOCK_PROCESS;
+    if (superclass != NULL)
+	CallGetValuesHook (superclass, w, args, num_args);
+
+    LOCK_PROCESS;
+    get_values_hook = widget_class->core_class.get_values_hook;
+    UNLOCK_PROCESS;
+    if (get_values_hook != NULL)
+	(*get_values_hook) (w, args, &num_args);
+}
+
+
+
+static void CallConstraintGetValuesHook(
+    WidgetClass	  widget_class,
+    Widget	  w,
+    ArgList	  args,
+    Cardinal	  num_args)
+{
+    ConstraintClassExtension ext;
+
+    LOCK_PROCESS;
+    if (widget_class->core_class.superclass
+	->core_class.class_inited & ConstraintClassFlag) {
+	CallConstraintGetValuesHook
+	    (widget_class->core_class.superclass, w, args, num_args);
+    }
+
+    for (ext = (ConstraintClassExtension)((ConstraintWidgetClass)widget_class)
+		 ->constraint_class.extension;
+	 ext != NULL && ext->record_type != NULLQUARK;
+	 ext = (ConstraintClassExtension)ext->next_extension);
+
+    if (ext != NULL) {
+	if (  ext->version == XtConstraintExtensionVersion
+	      && ext->record_size == sizeof(ConstraintClassExtensionRec)) {
+	    if (ext->get_values_hook != NULL)
+		(*(ext->get_values_hook)) (w, args, &num_args);
+	} else {
+	    String params[1];
+	    Cardinal num_params = 1;
+	    params[0] = widget_class->core_class.class_name;
+	    XtAppWarningMsg(XtWidgetToApplicationContext(w),
+		 "invalidExtension", "xtCreateWidget", XtCXtToolkitError,
+		 "widget class %s has invalid ConstraintClassExtension record",
+		 params, &num_params);
+	}
+    }
+    UNLOCK_PROCESS;
+}
+
+
+void XtGetValues(
+    register Widget   w,
+    register ArgList  args,
+    register Cardinal num_args)
+{
+    WidgetClass wc;
+    int targ;
+    XtAppContext app = XtWidgetToApplicationContext(w);
+
+    if (num_args == 0) return;
+    if ((args == NULL) && (num_args != 0)) {
+	XtAppErrorMsg(app,
+		"invalidArgCount","xtGetValues",XtCXtToolkitError,
+            "Argument count > 0 on NULL argument list in XtGetValues",
+              (String *)NULL, (Cardinal *)NULL);
+    }
+
+    LOCK_APP(app);
+    wc = XtClass(w);
+    LOCK_PROCESS;
+    /* Get widget values */
+    targ = GetValues((char*)w, (XrmResourceList *) wc->core_class.resources,
+	wc->core_class.num_resources, args, num_args);
+    UNLOCK_PROCESS;
+    if (targ != -1 && XtIsWidget(w)) {
+	XtTranslations translations = _XtGetTranslationValue(w);
+	_XtCopyToArg((char*)&translations, &args[targ].value,
+		     sizeof(XtTranslations));
+    }
+
+    /* Get constraint values if necessary */
+    /* constraints may be NULL if constraint_size==0 */
+    if (XtParent(w) != NULL && !XtIsShell(w) && XtIsConstraint(XtParent(w)) &&
+	w->core.constraints) {
+	ConstraintWidgetClass cwc
+	    = (ConstraintWidgetClass) XtClass(XtParent(w));
+	LOCK_PROCESS;
+	GetValues((char*)w->core.constraints,
+		  (XrmResourceList *)(cwc->constraint_class.resources),
+		  cwc->constraint_class.num_resources, args, num_args);
+	UNLOCK_PROCESS;
+    }
+    /* Notify any class procedures that we have performed get_values */
+    CallGetValuesHook(wc, w, args, num_args);
+
+    /* Notify constraint get_values if necessary */
+    if (XtParent(w) != NULL && !XtIsShell(w) && XtIsConstraint(XtParent(w)))
+	CallConstraintGetValuesHook(XtClass(XtParent(w)), w, args,num_args);
+    UNLOCK_APP(app);
+} /* XtGetValues */
+
+void XtGetSubvalues(
+  XtPointer	    base,           /* Base address to fetch values from */
+  XtResourceList    resources,      /* The current resource values.      */
+  Cardinal	    num_resources,  /* number of items in resources      */
+  ArgList	    args,           /* The resource values requested     */
+  Cardinal	    num_args)       /* number of items in arg list       */
+{
+    XrmResourceList* xrmres;
+    xrmres = _XtCreateIndirectionTable(resources, num_resources);
+    GetValues((char*)base, xrmres, num_resources, args, num_args);
+    XtFree((char *)xrmres);
+}
diff --git a/libXt/src/HookObj.c b/libXt/src/HookObj.c
new file mode 100644
index 000000000..f4ac749b2
--- /dev/null
+++ b/libXt/src/HookObj.c
@@ -0,0 +1,137 @@
+/* $Xorg: HookObj.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/*
+
+Copyright 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/HookObj.c,v 1.2 2001/08/22 22:52:18 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+/******************************************************************
+ *
+ * Hook Object Resources
+ *
+ ******************************************************************/
+
+static XtResource resources[] = {
+  { XtNcreateHook, XtCCallback, XtRCallback, sizeof(XtPointer),
+    XtOffsetOf(HookObjRec, hooks.createhook_callbacks),
+    XtRCallback, (XtPointer)NULL},
+  { XtNchangeHook, XtCCallback, XtRCallback, sizeof(XtPointer),
+    XtOffsetOf(HookObjRec, hooks.changehook_callbacks),
+    XtRCallback, (XtPointer)NULL},
+  { XtNconfigureHook, XtCCallback, XtRCallback, sizeof(XtPointer),
+    XtOffsetOf(HookObjRec, hooks.confighook_callbacks),
+    XtRCallback, (XtPointer)NULL},
+  { XtNgeometryHook, XtCCallback, XtRCallback, sizeof(XtPointer),
+    XtOffsetOf(HookObjRec, hooks.geometryhook_callbacks),
+    XtRCallback, (XtPointer)NULL},
+  { XtNdestroyHook, XtCCallback, XtRCallback, sizeof(XtPointer),
+    XtOffsetOf(HookObjRec, hooks.destroyhook_callbacks),
+    XtRCallback, (XtPointer)NULL},
+  { XtNshells, XtCReadOnly, XtRWidgetList, sizeof(WidgetList),
+    XtOffsetOf(HookObjRec, hooks.shells), XtRImmediate, (XtPointer) NULL },
+  { XtNnumShells, XtCReadOnly, XtRCardinal, sizeof(Cardinal),
+    XtOffsetOf(HookObjRec, hooks.num_shells), XtRImmediate, (XtPointer) 0 }
+};
+
+static void GetValuesHook(Widget widget, ArgList args, Cardinal *num_args);
+static void Initialize(Widget req, Widget new, ArgList args,
+			Cardinal *num_args);
+
+externaldef(hookobjclassrec) HookObjClassRec hookObjClassRec = {
+  { /* Object Class Part */
+    /* superclass	  */	(WidgetClass)&objectClassRec,
+    /* class_name	  */	"Hook",
+    /* widget_size	  */	sizeof(HookObjRec),
+    /* class_initialize   */    NULL,
+    /* class_part_initialize*/	NULL,
+    /* class_inited       */	FALSE,
+    /* initialize	  */	Initialize,
+    /* initialize_hook    */	NULL,
+    /* realize		  */	NULL,
+    /* actions		  */	NULL,
+    /* num_actions	  */	0,
+    /* resources	  */	resources,
+    /* num_resources	  */	XtNumber(resources),
+    /* xrm_class	  */	NULLQUARK,
+    /* compress_motion	  */	FALSE,
+    /* compress_exposure  */	TRUE,
+    /* compress_enterleave*/ 	FALSE,
+    /* visible_interest	  */	FALSE,
+    /* destroy		  */	NULL,
+    /* resize		  */	NULL,
+    /* expose		  */	NULL,
+    /* set_values	  */	NULL,
+    /* set_values_hook    */	NULL,
+    /* set_values_almost  */	NULL,
+    /* get_values_hook    */	GetValuesHook,
+    /* accept_focus	  */	NULL,
+    /* version		  */	XtVersion,
+    /* callback_offsets   */    NULL,
+    /* tm_table           */    NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */	NULL,
+    /* extension	    */  NULL
+  },
+  { /* HookObj Class Part */
+    /* unused               */	0
+  }
+};
+
+externaldef(hookObjectClass) WidgetClass hookObjectClass =
+	(WidgetClass)&hookObjClassRec;
+
+static void FreeShellList(
+    Widget w,
+    XtPointer closure,
+    XtPointer call_data)
+{
+    HookObject h = (HookObject)w;
+    if (h->hooks.shells != NULL)
+	XtFree((char*)h->hooks.shells);
+}
+
+static void Initialize(
+    Widget req,
+    Widget new,
+    ArgList args,
+    Cardinal* num_args)
+{
+    HookObject w = (HookObject) new;
+    w->hooks.max_shells = 0;
+    XtAddCallback (new, XtNdestroyCallback, FreeShellList, (XtPointer) NULL);
+}
+
+static void GetValuesHook(
+    Widget widget,
+    ArgList args,
+    Cardinal* num_args)
+{
+    /* get the XtNshells and XtNnumShells pseudo-resources */
+}
diff --git a/libXt/src/Hooks.c b/libXt/src/Hooks.c
new file mode 100644
index 000000000..05b67ce05
--- /dev/null
+++ b/libXt/src/Hooks.c
@@ -0,0 +1,158 @@
+/* $Xorg: Hooks.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/*
+
+Copyright 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Hooks.c,v 1.3 2001/12/14 19:56:18 dawes Exp $ */
+
+/*LINTLIBRARY*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "CreateI.h"
+
+static void FreeBlockHookList(
+    Widget widget,		/* unused (and invalid) */
+    XtPointer closure,		/* ActionHook* */
+    XtPointer call_data)	/* unused */
+{
+    BlockHook list = *(BlockHook*)closure;
+    while (list != NULL) {
+	BlockHook next = list->next;
+	XtFree( (XtPointer)list );
+	list = next;
+    }
+}
+
+
+XtBlockHookId XtAppAddBlockHook(
+    XtAppContext app,
+    XtBlockHookProc proc,
+    XtPointer closure)
+{
+    BlockHook hook = XtNew(BlockHookRec);
+    LOCK_APP(app);
+    hook->next = app->block_hook_list;
+    hook->app = app;
+    hook->proc = proc;
+    hook->closure = closure;
+    if (app->block_hook_list == NULL) {
+	_XtAddCallback( &app->destroy_callbacks,
+		        FreeBlockHookList,
+		        (XtPointer)&app->block_hook_list
+		      );
+    }
+    app->block_hook_list = hook;
+    UNLOCK_APP(app);
+    return (XtBlockHookId)hook;
+}
+
+
+void XtRemoveBlockHook(
+    XtBlockHookId id)
+{
+    BlockHook *p, hook = (BlockHook)id;
+    XtAppContext app = hook->app;
+    LOCK_APP(app);
+    for (p = &app->block_hook_list; p != NULL && *p != hook; p = &(*p)->next);
+    if (p == NULL) {
+#ifdef DEBUG
+	XtAppWarningMsg(app, "badId", "xtRemoveBlockHook", XtCXtToolkitError,
+			"XtRemoveBlockHook called with bad or old hook id",
+			(String*)NULL, (Cardinal*)NULL);
+#endif /*DEBUG*/
+	UNLOCK_APP(app);
+	return;
+    }
+    *p = hook->next;
+    XtFree( (XtPointer)hook );
+    UNLOCK_APP(app);
+}
+
+static void DeleteShellFromHookObj(
+    Widget shell,
+    XtPointer closure,
+    XtPointer call_data)
+{
+    /* app_con is locked when this function is called */
+    Cardinal ii, jj;
+    HookObject ho = (HookObject) closure;
+
+    for (ii = 0; ii < ho->hooks.num_shells; ii++)
+	if (ho->hooks.shells[ii] == shell) {
+	    /* collapse the list */
+	    for (jj = ii; jj < ho->hooks.num_shells; jj++) {
+		if ((jj+1) < ho->hooks.num_shells)
+		    ho->hooks.shells[jj] = ho->hooks.shells[jj+1];
+	    }
+	    break;
+	}
+    ho->hooks.num_shells--;
+}
+
+#define SHELL_INCR 4
+
+void _XtAddShellToHookObj(
+    Widget shell)
+{
+    /* app_con is locked when this function is called */
+    HookObject ho = (HookObject) XtHooksOfDisplay(XtDisplay(shell));
+
+    if (ho->hooks.num_shells == ho->hooks.max_shells) {
+	ho->hooks.max_shells += SHELL_INCR;
+	ho->hooks.shells =
+	    (WidgetList)XtRealloc((char*)ho->hooks.shells,
+		ho->hooks.max_shells * sizeof (Widget));
+    }
+    ho->hooks.shells[ho->hooks.num_shells++] = shell;
+
+    XtAddCallback(shell, XtNdestroyCallback, DeleteShellFromHookObj,
+		  (XtPointer)ho);
+}
+
+Boolean _XtIsHookObject(
+    Widget widget)
+{
+    return (widget->core.widget_class == hookObjectClass);
+}
+
+Widget XtHooksOfDisplay(
+    Display* dpy)
+{
+    Widget retval;
+    XtPerDisplay pd;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+    if (pd->hook_object == NULL)
+	pd->hook_object =
+	    _XtCreateHookObj((Screen*)DefaultScreenOfDisplay(dpy));
+    retval = pd->hook_object;
+    UNLOCK_APP(app);
+    return retval;
+}
diff --git a/libXt/src/Initialize.c b/libXt/src/Initialize.c
new file mode 100644
index 000000000..f2c9c683d
--- /dev/null
+++ b/libXt/src/Initialize.c
@@ -0,0 +1,1054 @@
+/* $Xorg: Initialize.c,v 1.8 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Initialize.c,v 3.21 2003/04/21 16:34:27 herrb Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+/* Make sure all wm properties can make it out of the resource manager */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "CoreP.h"
+#include "ShellP.h"
+#include <stdio.h>
+#include <X11/Xlocale.h>
+#ifdef XTHREADS
+#include <X11/Xthreads.h>
+#endif
+#ifndef WIN32
+#define X_INCLUDE_PWD_H
+#define XOS_USE_XT_LOCKING
+#include <X11/Xos_r.h>
+#endif
+
+#include <stdlib.h>
+
+#if (defined(SUNSHLIB) || defined(AIXSHLIB)) && defined(SHAREDCODE)
+/*
+ * If used as a shared library, generate code under a different name so that
+ * the stub routines in sharedlib.c get loaded into the application binary.
+ */
+#define XtToolkitInitialize _XtToolkitInitialize
+#define XtOpenApplication _XtOpenApplication
+#define XtAppInitialize _XtAppInitialize
+#define XtInitialize _XtInitialize
+#endif /* (SUNSHLIB || AIXSHLIB) && SHAREDCODE */
+
+/*
+ * hpux
+ * Hand-patched versions of HP-UX prior to version 7.0 can usefully add
+ * -DUSE_UNAME in the appropriate config file to get long hostnames.
+ */
+
+#ifdef USG
+#define USE_UNAME
+#endif
+
+#ifdef USE_UNAME
+#include <sys/utsname.h>
+#endif
+
+/* some unspecified magic number of expected search levels for Xrm */
+#define SEARCH_LIST_SIZE 1000
+
+/*
+ This is a set of default records describing the command line arguments that
+ Xlib will parse and set into the resource data base.
+
+ This list is applied before the users list to enforce these defaults.  This is
+ policy, which the toolkit avoids but I hate differing programs at this level.
+*/
+
+static XrmOptionDescRec const opTable[] = {
+{"+rv",		"*reverseVideo", XrmoptionNoArg,	(XtPointer) "off"},
+{"+synchronous","*synchronous",	XrmoptionNoArg,		(XtPointer) "off"},
+{"-background",	"*background",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-bd",		"*borderColor",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-bg",		"*background",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-bordercolor","*borderColor",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-borderwidth",".borderWidth",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-bw",		".borderWidth",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-display",	".display",     XrmoptionSepArg,	(XtPointer) NULL},
+{"-fg",		"*foreground",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-fn",		"*font",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-font",	"*font",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-foreground",	"*foreground",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-geometry",	".geometry",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-iconic",	".iconic",	XrmoptionNoArg,		(XtPointer) "on"},
+{"-name",	".name",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-reverse",	"*reverseVideo", XrmoptionNoArg,	(XtPointer) "on"},
+{"-rv",		"*reverseVideo", XrmoptionNoArg,	(XtPointer) "on"},
+{"-selectionTimeout",
+		".selectionTimeout", XrmoptionSepArg,	(XtPointer) NULL},
+{"-synchronous","*synchronous",	XrmoptionNoArg,		(XtPointer) "on"},
+{"-title",	".title",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-xnllanguage",".xnlLanguage",	XrmoptionSepArg,	(XtPointer) NULL},
+{"-xrm",	NULL,		XrmoptionResArg,	(XtPointer) NULL},
+{"-xtsessionID",".sessionID",	XrmoptionSepArg,	(XtPointer) NULL},
+};
+
+
+/*
+ * GetHostname - emulates gethostname() on non-bsd systems.
+ */
+
+static void GetHostname (
+    char *buf,
+    int maxlen)
+{
+#ifdef USE_UNAME
+    int len;
+    struct utsname name;
+
+    if (maxlen <= 0 || buf == NULL)
+	return;
+
+    uname (&name);
+    len = strlen (name.nodename);
+    if (len >= maxlen) len = maxlen;
+    (void) strncpy (buf, name.nodename, len-1);
+    buf[len-1] = '\0';
+#else
+    if (maxlen <= 0 || buf == NULL)
+	return;
+
+    buf[0] = '\0';
+    (void) gethostname (buf, maxlen);
+    buf [maxlen - 1] = '\0';
+#endif
+}
+
+
+#ifdef SUNSHLIB
+void _XtInherit(void)
+{
+    extern void __XtInherit();
+    __XtInherit();
+}
+#define _XtInherit __XtInherit
+#endif
+
+
+#if defined (WIN32) || defined(__CYGWIN__)
+/*
+ * The Symbol _XtInherit is used in two different manners.
+ * First it could be used as a generic function and second
+ * as an absolute address reference, which will be used to
+ * check the initialisation process of several other libraries.
+ * Because of this the symbol must be accessable by all
+ * client dll's and applications.  In unix environments
+ * this is no problem, because the used shared libraries
+ * format (elf) supports this immediatly.  Under Windows
+ * this isn't true, because a functions address in a dll
+ * is different from the same function in another dll or
+ * applications, because the used Portable Executable
+ * File adds a code stub to each client to provide the
+ * exported symbol name.  This stub uses an indirect
+ * pointer to get the original symbol address, which is
+ * then jumped to, like in this example:
+ *
+ * --- client ---                                     --- dll ----
+ *  ...
+ *  call foo
+ *
+ * foo: jmp (*_imp_foo)               ---->           foo: ....
+ *      nop
+ *      nop
+ *
+ * _imp_foo: .long <index of foo in dll export table, is
+ *		    set to the real address by the runtime linker>
+ *
+ * Now it is clear why the clients symbol foo isn't the same
+ * as in the dll and we can think about how to deal which
+ * this two above mentioned requirements, to export this
+ * symbol to all clients and to allow calling this symbol
+ * as a function.  The solution I've used exports the
+ * symbol _XtInherit as data symbol, because global data
+ * symbols are exported to all clients.  But how to deal
+ * with the second requirement, that this symbol should
+ * be used as function.  The Trick is to build a little
+ * code stub in the data section in the exact manner as
+ * above explained.  This is done with the assembler code
+ * below.
+ *
+ * Ralf Habacker
+ *
+ * References:
+ * msdn          http://msdn.microsoft.com/msdnmag/issues/02/02/PE/PE.asp
+ * cygwin-xfree: http://www.cygwin.com/ml/cygwin-xfree/2003-10/msg00000.html
+ */
+
+asm (".data\n\
+ .globl __XtInherit        \n\
+ __XtInherit:      jmp *_y \n\
+  _y: .long ___XtInherit   \n\
+    .text                 \n");
+
+#define _XtInherit __XtInherit
+#endif
+
+
+void _XtInherit(void)
+{
+    XtErrorMsg("invalidProcedure","inheritanceProc",XtCXtToolkitError,
+            "Unresolved inheritance operation",
+              (String *)NULL, (Cardinal *)NULL);
+}
+
+
+void XtToolkitInitialize(void)
+{
+    static Boolean initialized = False;
+
+    LOCK_PROCESS;
+    if (initialized) {
+	UNLOCK_PROCESS;
+	return;
+    }
+    initialized = True;
+    UNLOCK_PROCESS;
+    /* Resource management initialization */
+    XrmInitialize();
+    _XtResourceListInitialize();
+
+    /* Other intrinsic intialization */
+    _XtConvertInitialize();
+    _XtEventInitialize();
+    _XtTranslateInitialize();
+
+    /* Some apps rely on old (broken) XtAppPeekEvent behavior */
+    if(getenv("XTAPPPEEKEVENT_SKIPTIMER"))
+	XtAppPeekEvent_SkipTimer = True;
+    else
+	XtAppPeekEvent_SkipTimer = False;
+}
+
+
+String _XtGetUserName(
+    String dest,
+    int len)
+{
+#ifdef WIN32
+    String ptr = NULL;
+
+    if ((ptr = getenv("USERNAME"))) {
+	(void) strncpy (dest, ptr, len-1);
+	dest[len-1] = '\0';
+    } else
+	*dest = '\0';
+#else
+#ifdef X_NEEDS_PWPARAMS
+    _Xgetpwparams pwparams;
+#endif
+    struct passwd *pw;
+    char* ptr;
+
+    if ((ptr = getenv("USER"))) {
+	(void) strncpy (dest, ptr, len-1);
+	dest[len-1] = '\0';
+    } else {
+	if ((pw = _XGetpwuid(getuid(),pwparams)) != NULL) {
+	    (void) strncpy (dest, pw->pw_name, len-1);
+	    dest[len-1] = '\0';
+	} else
+	    *dest = '\0';
+    }
+#endif
+    return dest;
+}
+
+
+static String GetRootDirName(
+    String dest,
+    int len)
+{
+#ifdef WIN32
+    register char *ptr1;
+    register char *ptr2 = NULL;
+    int len1 = 0, len2 = 0;
+
+    if (ptr1 = getenv("HOME")) {	/* old, deprecated */
+	len1 = strlen (ptr1);
+    } else if ((ptr1 = getenv("HOMEDRIVE")) && (ptr2 = getenv("HOMEDIR"))) {
+	len1 = strlen (ptr1);
+	len2 = strlen (ptr2);
+    } else if (ptr2 = getenv("USERNAME")) {
+	len1 = strlen (ptr1 = "/users/");
+	len2 = strlen (ptr2);
+    }
+    if ((len1 + len2 + 1) < len)
+	sprintf (dest, "%s%s", ptr1, (ptr2) ? ptr2 : "");
+    else
+	*dest = '\0';
+#else
+#ifdef X_NEEDS_PWPARAMS
+    _Xgetpwparams pwparams;
+#endif
+    struct passwd *pw;
+    static char *ptr;
+
+    if (len <= 0 || dest == NULL)
+	return NULL;
+
+    if ((ptr = getenv("HOME"))) {
+	(void) strncpy (dest, ptr, len-1);
+	dest[len-1] = '\0';
+    } else {
+	if ((ptr = getenv("USER")))
+	    pw = _XGetpwnam(ptr,pwparams);
+	else
+ 	    pw = _XGetpwuid(getuid(),pwparams);
+	if (pw != NULL) {
+	    (void) strncpy (dest, pw->pw_dir, len-1);
+	    dest[len-1] = '\0';
+	} else
+	    *dest = '\0';
+    }
+#endif
+    return dest;
+}
+
+static void CombineAppUserDefaults(
+    Display *dpy,
+    XrmDatabase *pdb)
+{
+    char* filename;
+    char* path;
+    Boolean deallocate = False;
+
+    if (!(path = getenv("XUSERFILESEARCHPATH"))) {
+#if !defined(WIN32) || !defined(__MINGW32__)
+	char *old_path;
+	char homedir[PATH_MAX];
+	GetRootDirName(homedir, PATH_MAX);
+	if (!(old_path = getenv("XAPPLRESDIR"))) {
+	    char *path_default = "%s/%%L/%%N%%C:%s/%%l/%%N%%C:%s/%%N%%C:%s/%%L/%%N:%s/%%l/%%N:%s/%%N";
+	    if (!(path =
+		  ALLOCATE_LOCAL(6*strlen(homedir) + strlen(path_default))))
+		_XtAllocError(NULL);
+	    sprintf( path, path_default,
+		    homedir, homedir, homedir, homedir, homedir, homedir );
+	} else {
+	    char *path_default = "%s/%%L/%%N%%C:%s/%%l/%%N%%C:%s/%%N%%C:%s/%%N%%C:%s/%%L/%%N:%s/%%l/%%N:%s/%%N:%s/%%N";
+	    if (!(path =
+		  ALLOCATE_LOCAL( 6*strlen(old_path) + 2*strlen(homedir)
+				 + strlen(path_default))))
+		_XtAllocError(NULL);
+	    sprintf(path, path_default, old_path, old_path, old_path, homedir,
+		    old_path, old_path, old_path, homedir );
+	}
+	deallocate = True;
+#endif
+    }
+
+    filename = XtResolvePathname(dpy, NULL, NULL, NULL, path, NULL, 0, NULL);
+    if (filename) {
+	(void)XrmCombineFileDatabase(filename, pdb, False);
+	XtFree(filename);
+    }
+
+    if (deallocate) DEALLOCATE_LOCAL(path);
+}
+
+static void CombineUserDefaults(
+    Display *dpy,
+    XrmDatabase *pdb)
+{
+#ifdef __MINGW32__
+    char *slashDotXdefaults = "/Xdefaults";
+#else
+    char *slashDotXdefaults = "/.Xdefaults";
+#endif
+    char *dpy_defaults = XResourceManagerString(dpy);
+
+    if (dpy_defaults) {
+	XrmCombineDatabase(XrmGetStringDatabase(dpy_defaults), pdb, False);
+    } else {
+	char filename[PATH_MAX];
+	(void) GetRootDirName(filename,
+			PATH_MAX - strlen (slashDotXdefaults) - 1);
+	(void) strcat(filename, slashDotXdefaults);
+	(void)XrmCombineFileDatabase(filename, pdb, False);
+    }
+}
+
+/*ARGSUSED*/
+static Bool StoreDBEntry(
+    XrmDatabase		*db,
+    XrmBindingList      bindings,
+    XrmQuarkList	quarks,
+    XrmRepresentation   *type,
+    XrmValuePtr		value,
+    XPointer		data)
+{
+    XrmQPutResource((XrmDatabase *)data, bindings, quarks, *type, value);
+    return False;
+}
+
+static XrmDatabase CopyDB(XrmDatabase db)
+{
+    XrmDatabase copy = NULL;
+    XrmQuark empty = NULLQUARK;
+
+    XrmEnumerateDatabase(db, &empty, &empty, XrmEnumAllLevels,
+			 StoreDBEntry, (XPointer)&copy);
+    return copy;
+}
+
+/*ARGSUSED*/
+static String _XtDefaultLanguageProc(
+    Display   *dpy,	/* unused */
+    String     xnl,
+    XtPointer  closure)	/* unused */
+{
+    if (! setlocale(LC_ALL, xnl))
+	XtWarning("locale not supported by C library, locale unchanged");
+
+    if (! XSupportsLocale()) {
+	XtWarning("locale not supported by Xlib, locale set to C");
+	setlocale(LC_ALL, "C");
+    }
+    if (! XSetLocaleModifiers(""))
+	XtWarning("X locale modifiers not supported, using default");
+
+    return setlocale(LC_ALL, NULL); /* re-query in case overwritten */
+}
+
+XtLanguageProc XtSetLanguageProc(
+    XtAppContext      app,
+    XtLanguageProc    proc,
+    XtPointer         closure)
+{
+    XtLanguageProc    old;
+
+    if (!proc) {
+	proc = _XtDefaultLanguageProc;
+	closure = NULL;
+    }
+
+    if (app) {
+	LOCK_APP(app);
+	LOCK_PROCESS;
+	/* set langProcRec only for this application context */
+        old = app->langProcRec.proc;
+        app->langProcRec.proc = proc;
+        app->langProcRec.closure = closure;
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+    } else {
+	/* set langProcRec for all application contexts */
+        ProcessContext process;
+
+	LOCK_PROCESS;
+        process = _XtGetProcessContext();
+        old = process->globalLangProcRec.proc;
+	process->globalLangProcRec.proc = proc;
+	process->globalLangProcRec.closure = closure;
+        app = process->appContextList;
+        while (app) {
+            app->langProcRec.proc = proc;
+            app->langProcRec.closure = closure;
+	    app = app->next;
+        }
+	UNLOCK_PROCESS;
+    }
+    return (old ? old : _XtDefaultLanguageProc);
+}
+
+XrmDatabase XtScreenDatabase(
+    Screen *screen)
+{
+    int scrno;
+    Bool doing_def;
+    XrmDatabase db, olddb;
+    XtPerDisplay pd;
+    Status do_fallback;
+    char *scr_resources;
+    Display *dpy = DisplayOfScreen(screen);
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    if (screen == DefaultScreenOfDisplay(dpy)) {
+	scrno = DefaultScreen(dpy);
+	doing_def = True;
+    } else {
+	scrno = XScreenNumberOfScreen(screen);
+	doing_def = False;
+    }
+    pd = _XtGetPerDisplay(dpy);
+    if ((db = pd->per_screen_db[scrno])) {
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+	return (doing_def ? XrmGetDatabase(dpy) : db);
+    }
+    scr_resources = XScreenResourceString(screen);
+
+    if (ScreenCount(dpy) == 1) {
+	db = pd->cmd_db;
+	pd->cmd_db = NULL;
+    } else {
+	db = CopyDB(pd->cmd_db);
+    }
+    {   /* Environment defaults */
+	char	filenamebuf[PATH_MAX];
+	char	*filename;
+
+	if (!(filename = getenv("XENVIRONMENT"))) {
+	    int len;
+#ifdef __MINGW32__
+	    char *slashDotXdefaultsDash = "/Xdefaults-";
+#else
+	    char *slashDotXdefaultsDash = "/.Xdefaults-";
+#endif
+
+	    (void) GetRootDirName(filename = filenamebuf,
+			PATH_MAX - strlen (slashDotXdefaultsDash) - 1);
+	    (void) strcat(filename, slashDotXdefaultsDash);
+	    len = strlen(filename);
+	    GetHostname (filename+len, PATH_MAX-len);
+	}
+	(void)XrmCombineFileDatabase(filename, &db, False);
+    }
+    if (scr_resources)
+    {   /* Screen defaults */
+	XrmCombineDatabase(XrmGetStringDatabase(scr_resources), &db, False);
+	XFree(scr_resources);
+    }
+    /* Server or host defaults */
+    if (!pd->server_db)
+	CombineUserDefaults(dpy, &db);
+    else {
+	(void) XrmCombineDatabase(pd->server_db, &db, False);
+	pd->server_db = NULL;
+    }
+
+    if (!db)
+	db = XrmGetStringDatabase("");
+    pd->per_screen_db[scrno] = db;
+    olddb = XrmGetDatabase(dpy);
+    /* set database now, for XtResolvePathname to use */
+    XrmSetDatabase(dpy, db);
+    CombineAppUserDefaults(dpy, &db);
+    do_fallback = 1;
+    {   /* System app-defaults */
+	char	*filename;
+
+	if ((filename = XtResolvePathname(dpy, "app-defaults",
+					 NULL, NULL, NULL, NULL, 0, NULL))) {
+	    do_fallback = !XrmCombineFileDatabase(filename, &db, False);
+	    XtFree(filename);
+	}
+    }
+    /* now restore old database, if need be */
+    if (!doing_def)
+	XrmSetDatabase(dpy, olddb);
+    if (do_fallback && pd->appContext->fallback_resources)
+    {   /* Fallback defaults */
+        XrmDatabase fdb = NULL;
+	String *res;
+
+	for (res = pd->appContext->fallback_resources; *res; res++)
+	    XrmPutLineResource(&fdb, *res);
+	(void)XrmCombineDatabase(fdb, &db, False);
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return db;
+}
+
+/*
+ * Merge two option tables, allowing the second to over-ride the first,
+ * so that ambiguous abbreviations can be noticed.  The merge attempts
+ * to make the resulting table lexicographically sorted, but succeeds
+ * only if the first source table is sorted.  Though it _is_ recommended
+ * (for optimizations later in XrmParseCommand), it is not required
+ * that either source table be sorted.
+ *
+ * Caller is responsible for freeing the returned option table.
+ */
+
+static void _MergeOptionTables(
+    const XrmOptionDescRec *src1,
+    Cardinal num_src1,
+    const XrmOptionDescRec *src2,
+    Cardinal num_src2,
+    XrmOptionDescRec **dst,
+    Cardinal *num_dst)
+{
+    XrmOptionDescRec *table, *endP;
+    register XrmOptionDescRec *opt1, *whereP, *dstP;
+    register const XrmOptionDescRec *opt2;
+    int i1;
+    Cardinal i2;
+    int dst_len, order;
+    Boolean found;
+    enum {Check, NotSorted, IsSorted} sort_order = Check;
+
+    *dst = table = (XrmOptionDescRec*)
+	__XtMalloc( sizeof(XrmOptionDescRec) * (num_src1 + num_src2) );
+
+    (void) memmove(table, src1, sizeof(XrmOptionDescRec) * num_src1 );
+    if (num_src2 == 0) {
+	*num_dst = num_src1;
+	return;
+    }
+    endP = &table[dst_len = num_src1];
+    for (opt2 = src2, i2= 0; i2 < num_src2; opt2++, i2++) {
+	found = False;
+	whereP = endP-1;	/* assume new option goes at the end */
+	for (opt1 = table, i1 = 0; i1 < dst_len; opt1++, i1++) {
+	    /* have to walk the entire new table so new list is ordered
+	       (if src1 was ordered) */
+	    if (sort_order == Check && i1 > 0
+		&& strcmp(opt1->option, (opt1-1)->option) < 0)
+		sort_order = NotSorted;
+	    if ((order = strcmp(opt1->option, opt2->option)) == 0) {
+		/* same option names; just overwrite opt1 with opt2 */
+		*opt1 = *opt2;
+		found = True;
+		break;
+		}
+	    /* else */
+	    if (sort_order == IsSorted && order > 0) {
+		/* insert before opt1 to preserve order */
+		/* shift rest of table forward to make room for new entry */
+		for (dstP = endP++; dstP > opt1; dstP--)
+		    *dstP = *(dstP-1);
+		*opt1 = *opt2;
+		dst_len++;
+		found = True;
+		break;
+	    }
+	    /* else */
+	    if (order < 0)
+		/* opt2 sorts after opt1, so remember this position */
+		whereP = opt1;
+	}
+	if (sort_order == Check && i1 == dst_len)
+	    sort_order = IsSorted;
+	if (!found) {
+	   /* when we get here, whereP points to the last entry in the
+	      destination that sorts before "opt2".  Shift rest of table
+	      forward and insert "opt2" after whereP. */
+	    whereP++;
+	    for (dstP = endP++; dstP > whereP; dstP--)
+		*dstP = *(dstP-1);
+	    *whereP = *opt2;
+	    dst_len++;
+	}
+    }
+    *num_dst = dst_len;
+}
+
+
+/* NOTE: name, class, and type must be permanent strings */
+static Boolean _GetResource(
+    Display *dpy,
+    XrmSearchList list,
+    String name,
+    String class,
+    String type,
+    XrmValue* value)
+{
+    XrmRepresentation db_type;
+    XrmValue db_value;
+    XrmName Qname = XrmPermStringToQuark(name);
+    XrmClass Qclass = XrmPermStringToQuark(class);
+    XrmRepresentation Qtype = XrmPermStringToQuark(type);
+
+    if (XrmQGetSearchResource(list, Qname, Qclass, &db_type, &db_value)) {
+	if (db_type == Qtype) {
+	    if (Qtype == _XtQString)
+		*(String*)value->addr = db_value.addr;
+	    else
+		(void) memmove(value->addr, db_value.addr, value->size );
+	    return True;
+	} else {
+	    WidgetRec widget; /* hack, hack */
+	    bzero( &widget, sizeof(widget) );
+	    widget.core.self = &widget;
+	    widget.core.widget_class = coreWidgetClass;
+	    widget.core.screen = (Screen*)DefaultScreenOfDisplay(dpy);
+	    XtInitializeWidgetClass(coreWidgetClass);
+	    if (_XtConvert(&widget,db_type,&db_value,Qtype,value,NULL)) {
+		return True;
+	    }
+	}
+    }
+    return False;
+}
+
+XrmDatabase _XtPreparseCommandLine(
+    XrmOptionDescRec *urlist,
+    Cardinal num_urs,
+    int argc,
+    String *argv,
+    /* return */
+    String *applName,
+    String *displayName,
+    String *language)
+{
+    XrmDatabase db = NULL;
+    XrmOptionDescRec *options;
+    Cardinal num_options;
+    XrmName name_list[3];
+    XrmName class_list[3];
+    XrmRepresentation type;
+    XrmValue val;
+    String *targv;
+    int targc = argc;
+
+    targv = (String *) __XtMalloc(sizeof(char *) * argc);
+    (void) memmove(targv, argv, sizeof(char *) * argc);
+    _MergeOptionTables(opTable, XtNumber(opTable), urlist, num_urs,
+		       &options, &num_options);
+    name_list[0] = class_list[0] = XrmPermStringToQuark(".");
+    name_list[2] = class_list[2] = NULLQUARK;
+    XrmParseCommand(&db, options, num_options, ".", &targc, targv);
+    if (applName) {
+	name_list[1] = XrmPermStringToQuark("name");
+	if (XrmQGetResource(db, name_list, name_list, &type, &val) &&
+	    type == _XtQString)
+	    *applName = val.addr;
+    }
+    if (displayName) {
+	name_list[1] = XrmPermStringToQuark("display");
+	if (XrmQGetResource(db, name_list, name_list, &type, &val) &&
+	    type == _XtQString)
+	    *displayName = val.addr;
+    }
+    if (language) {
+	name_list[1] = XrmPermStringToQuark("xnlLanguage");
+	class_list[1] = XrmPermStringToQuark("XnlLanguage");
+	if (XrmQGetResource(db, name_list, class_list, &type, &val) &&
+	    type == _XtQString)
+	    *language = val.addr;
+    }
+
+    XtFree((char *)targv);
+    XtFree((char *)options);
+    return db;
+}
+
+
+static void GetLanguage(
+    Display *dpy,
+    XtPerDisplay pd)
+{
+    XrmRepresentation type;
+    XrmValue value;
+    XrmName name_list[3];
+    XrmName class_list[3];
+
+    LOCK_PROCESS;
+    if (! pd->language) {
+	name_list[0] = pd->name;
+	name_list[1] = XrmPermStringToQuark("xnlLanguage");
+	class_list[0] = pd->class;
+	class_list[1] = XrmPermStringToQuark("XnlLanguage");
+	name_list[2] = class_list[2] = NULLQUARK;
+	if (!pd->server_db)
+	    CombineUserDefaults(dpy, &pd->server_db);
+	if (pd->server_db &&
+	    XrmQGetResource(pd->server_db,name_list,class_list, &type, &value)
+	    && type == _XtQString)
+	    pd->language = (char *) value.addr;
+    }
+
+    if (pd->appContext->langProcRec.proc) {
+	if (! pd->language) pd->language = "";
+	pd->language = (*pd->appContext->langProcRec.proc)
+	    (dpy, pd->language, pd->appContext->langProcRec.closure);
+    }
+    else if (! pd->language || pd->language[0] == '\0') /* R4 compatibility */
+	pd->language = getenv("LANG");
+
+    if (pd->language) pd->language = XtNewString(pd->language);
+    UNLOCK_PROCESS;
+}
+
+static void ProcessInternalConnection (
+    XtPointer client_data,
+    int* fd,
+    XtInputId* id)
+{
+    XProcessInternalConnection ((Display *) client_data, *fd);
+}
+
+static void ConnectionWatch (
+    Display* dpy,
+    XPointer client_data,
+    int fd,
+    Bool opening,
+    XPointer* watch_data)
+{
+    XtInputId* iptr;
+    XtAppContext app = XtDisplayToApplicationContext(dpy);
+
+    if (opening) {
+	iptr = (XtInputId *) __XtMalloc(sizeof(XtInputId));
+	*iptr = XtAppAddInput(app, fd, (XtPointer) XtInputReadMask,
+			      ProcessInternalConnection, client_data);
+	*watch_data = (XPointer) iptr;
+    } else {
+	iptr = (XtInputId *) *watch_data;
+	XtRemoveInput(*iptr);
+        (void) XtFree(*watch_data);
+    }
+}
+
+void _XtDisplayInitialize(
+	Display *dpy,
+        XtPerDisplay pd,
+	_Xconst char* name,
+	XrmOptionDescRec *urlist,
+	Cardinal num_urs,
+	int *argc,
+	char **argv)
+{
+	Boolean tmp_bool;
+	XrmValue value;
+	XrmOptionDescRec *options;
+	Cardinal num_options;
+	XrmDatabase db;
+	XrmName name_list[2];
+	XrmClass class_list[2];
+	XrmHashTable* search_list;
+	int search_list_size = SEARCH_LIST_SIZE;
+
+	GetLanguage(dpy, pd);
+
+	/* Parse the command line and remove Xt arguments from argv */
+	_MergeOptionTables( opTable, XtNumber(opTable), urlist, num_urs,
+			    &options, &num_options );
+	XrmParseCommand(&pd->cmd_db, options, num_options, name, argc, argv);
+
+	db = XtScreenDatabase(DefaultScreenOfDisplay(dpy));
+
+	if (!(search_list = (XrmHashTable*)
+		       ALLOCATE_LOCAL( SEARCH_LIST_SIZE*sizeof(XrmHashTable))))
+	    _XtAllocError(NULL);
+	name_list[0] = pd->name;
+	class_list[0] = pd->class;
+	name_list[1] = NULLQUARK;
+	class_list[1] = NULLQUARK;
+
+	while (!XrmQGetSearchList(db, name_list, class_list,
+				  search_list, search_list_size)) {
+	    XrmHashTable* old = search_list;
+	    Cardinal size = (search_list_size*=2)*sizeof(XrmHashTable);
+	    if (!(search_list = (XrmHashTable*)ALLOCATE_LOCAL(size)))
+		_XtAllocError(NULL);
+	    (void) memmove((char*)search_list, (char*)old, (size>>1) );
+	    DEALLOCATE_LOCAL(old);
+	}
+
+	value.size = sizeof(tmp_bool);
+	value.addr = (XtPointer)&tmp_bool;
+	if (_GetResource(dpy, search_list, "synchronous", "Synchronous",
+			 XtRBoolean, &value)) {
+	    int i;
+	    Display **dpyP = pd->appContext->list;
+	    pd->appContext->sync = tmp_bool;
+	    for (i = pd->appContext->count; i; dpyP++, i--) {
+		(void) XSynchronize(*dpyP, (Bool)tmp_bool);
+	    }
+	} else {
+	    (void) XSynchronize(dpy, (Bool)pd->appContext->sync);
+	}
+
+	if (_GetResource(dpy, search_list, "reverseVideo", "ReverseVideo",
+			 XtRBoolean, &value)
+	        && tmp_bool) {
+	    pd->rv = True;
+	}
+
+	value.size = sizeof(pd->multi_click_time);
+	value.addr = (XtPointer)&pd->multi_click_time;
+	if (!_GetResource(dpy, search_list,
+			  "multiClickTime", "MultiClickTime",
+			  XtRInt, &value)) {
+	    pd->multi_click_time = 200;
+	}
+
+	value.size = sizeof(pd->appContext->selectionTimeout);
+	value.addr = (XtPointer)&pd->appContext->selectionTimeout;
+	(void)_GetResource(dpy, search_list,
+			   "selectionTimeout", "SelectionTimeout",
+			   XtRInt, &value);
+
+#ifndef NO_IDENTIFY_WINDOWS
+	value.size = sizeof(pd->appContext->identify_windows);
+	value.addr = (XtPointer)&pd->appContext->identify_windows;
+	(void)_GetResource(dpy, search_list,
+			   "xtIdentifyWindows", "XtDebug",
+			   XtRBoolean, &value);
+#endif
+
+	XAddConnectionWatch(dpy, ConnectionWatch, (XPointer) dpy);
+
+	XtFree( (XtPointer)options );
+	DEALLOCATE_LOCAL( search_list );
+}
+
+/*	Function Name: XtAppSetFallbackResources
+ *	Description: Sets the fallback resource list that will be loaded
+ *                   at display initialization time.
+ *	Arguments: app_context - the app context.
+ *                 specification_list - the resource specification list.
+ *	Returns: none.
+ */
+
+void
+XtAppSetFallbackResources(
+    XtAppContext app_context,
+    String *specification_list)
+{
+    LOCK_APP(app_context);
+    app_context->fallback_resources = specification_list;
+    UNLOCK_APP(app_context);
+}
+
+
+Widget XtOpenApplication(XtAppContext *app_context_return,
+			 _Xconst char *application_class,
+			 XrmOptionDescRec *options, Cardinal num_options,
+			 int *argc_in_out, String *argv_in_out,
+			 String *fallback_resources, WidgetClass widget_class,
+			 ArgList args_in, Cardinal num_args_in)
+{
+    XtAppContext app_con;
+    Display * dpy;
+    register int saved_argc = *argc_in_out;
+    Widget root;
+    Arg args[3], *merged_args;
+    Cardinal num = 0;
+
+    XtToolkitInitialize(); /* cannot be moved into _XtAppInit */
+
+    dpy = _XtAppInit(&app_con, (String)application_class, options, num_options,
+		     argc_in_out, &argv_in_out, fallback_resources);
+
+    LOCK_APP(app_con);
+    XtSetArg(args[num], XtNscreen, DefaultScreenOfDisplay(dpy)); num++;
+    XtSetArg(args[num], XtNargc, saved_argc);	                 num++;
+    XtSetArg(args[num], XtNargv, argv_in_out);	                 num++;
+
+    merged_args = XtMergeArgLists(args_in, num_args_in, args, num);
+    num += num_args_in;
+
+    root = XtAppCreateShell(NULL, application_class, widget_class, dpy,
+			    merged_args, num);
+
+    if (app_context_return)
+	*app_context_return = app_con;
+
+    XtFree((XtPointer)merged_args);
+    XtFree((XtPointer)argv_in_out);
+    UNLOCK_APP(app_con);
+    return root;
+}
+
+
+Widget
+XtAppInitialize(
+    XtAppContext * app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescRec *options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    ArgList args_in,
+    Cardinal num_args_in)
+{
+    return XtOpenApplication(app_context_return, application_class,
+			     options, num_options,
+			     argc_in_out, argv_in_out, fallback_resources,
+			     applicationShellWidgetClass,
+			     args_in, num_args_in);
+}
+
+
+/*ARGSUSED*/
+Widget
+XtInitialize(
+    _Xconst char* name,
+    _Xconst char* classname,
+    XrmOptionDescRec *options,
+    Cardinal num_options,
+    int *argc,
+    String *argv)
+{
+    Widget root;
+    XtAppContext app_con;
+    register ProcessContext process = _XtGetProcessContext();
+
+    root = XtAppInitialize(&app_con, classname, options, num_options,
+			   argc, argv, NULL, NULL, (Cardinal) 0);
+
+    LOCK_PROCESS;
+    process->defaultAppContext = app_con;
+    UNLOCK_PROCESS;
+    return root;
+}
diff --git a/libXt/src/Intrinsic.c b/libXt/src/Intrinsic.c
new file mode 100644
index 000000000..c3b6f5d98
--- /dev/null
+++ b/libXt/src/Intrinsic.c
@@ -0,0 +1,1600 @@
+/* $Xorg: Intrinsic.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Intrinsic.c,v 3.22 2003/01/12 03:55:46 tsi Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+#define INTRINSIC_C
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "VarargsI.h"        /* for geoTattler */
+#ifndef NO_IDENTIFY_WINDOWS
+#include <X11/Xatom.h>
+#endif
+#ifndef VMS
+#include <sys/stat.h>
+#endif /* VMS */
+
+#include <stdlib.h>
+
+String XtCXtToolkitError = "XtToolkitError";
+
+Boolean XtIsSubclass(
+    Widget    widget,
+    WidgetClass widgetClass)
+{
+    register WidgetClass w;
+    Boolean retval = FALSE;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    for (w = widget->core.widget_class; w != NULL; w = w->core_class.superclass)
+	if (w == widgetClass) {
+	    retval = TRUE;
+	    break;
+	}
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+    return retval;
+} /* XtIsSubclass */
+
+
+Boolean _XtCheckSubclassFlag(
+    Widget object,
+    _XtXtEnum flag)
+{
+    Boolean retval;
+
+    LOCK_PROCESS;
+    if (object->core.widget_class->core_class.class_inited & flag)
+	retval = TRUE;
+    else
+	retval = FALSE;
+    UNLOCK_PROCESS;
+    return retval;
+} /*_XtVerifySubclass */
+
+
+Boolean _XtIsSubclassOf(
+    Widget object,
+    WidgetClass widgetClass,
+    WidgetClass superClass,
+    _XtXtEnum flag)
+{
+    LOCK_PROCESS;
+    if (!(object->core.widget_class->core_class.class_inited & flag)) {
+	UNLOCK_PROCESS;
+	return False;
+    } else {
+	register WidgetClass c = object->core.widget_class;
+	while (c != superClass) {
+	    if (c == widgetClass) {
+		UNLOCK_PROCESS;
+		return True;
+	    }
+	    c = c->core_class.superclass;
+	}
+	UNLOCK_PROCESS;
+	return False;
+    }
+} /*_XtIsSubclassOf */
+
+
+XtPointer XtGetClassExtension(
+    WidgetClass	object_class,
+    Cardinal	byte_offset,
+    XrmQuark	type,
+    long	version,
+    Cardinal	record_size)
+{
+    ObjectClassExtension ext;
+    LOCK_PROCESS;
+
+    ext = *(ObjectClassExtension *)((char *)object_class + byte_offset);
+    while (ext && (ext->record_type != type || ext->version < version
+		   || ext->record_size < record_size)) {
+	ext = (ObjectClassExtension) ext->next_extension;
+    }
+
+    UNLOCK_PROCESS;
+    return (XtPointer) ext;
+}
+
+
+static void ComputeWindowAttributes(
+    Widget		 widget,
+    XtValueMask		 *value_mask,
+    XSetWindowAttributes *values)
+{
+    XtExposeProc expose;
+
+    *value_mask = CWEventMask | CWColormap;
+    (*values).event_mask = XtBuildEventMask(widget);
+    (*values).colormap = widget->core.colormap;
+    if (widget->core.background_pixmap != XtUnspecifiedPixmap) {
+	*value_mask |= CWBackPixmap;
+	(*values).background_pixmap = widget->core.background_pixmap;
+    } else {
+	*value_mask |= CWBackPixel;
+	(*values).background_pixel = widget->core.background_pixel;
+    }
+    if (widget->core.border_pixmap != XtUnspecifiedPixmap) {
+	*value_mask |= CWBorderPixmap;
+	(*values).border_pixmap = widget->core.border_pixmap;
+    } else {
+	*value_mask |= CWBorderPixel;
+	(*values).border_pixel = widget->core.border_pixel;
+    }
+    LOCK_PROCESS;
+    expose = widget->core.widget_class->core_class.expose;
+    UNLOCK_PROCESS;
+    if (expose == (XtExposeProc) NULL) {
+	/* Try to avoid redisplay upon resize by making bit_gravity the same
+	   as the default win_gravity */
+	*value_mask |= CWBitGravity;
+	(*values).bit_gravity = NorthWestGravity;
+    }
+} /* ComputeWindowAttributes */
+
+static void CallChangeManaged(
+    register Widget		widget)
+{
+    register Cardinal		i;
+    XtWidgetProc		change_managed;
+    register WidgetList		children;
+    int    			managed_children = 0;
+
+    register CompositePtr cpPtr;
+    register CompositePartPtr clPtr;
+
+    if (XtIsComposite (widget)) {
+	cpPtr = (CompositePtr)&((CompositeWidget) widget)->composite;
+        clPtr = (CompositePartPtr)&((CompositeWidgetClass)
+                   widget->core.widget_class)->composite_class;
+    } else return;
+
+    children = cpPtr->children;
+    LOCK_PROCESS;
+    change_managed = clPtr->change_managed;
+    UNLOCK_PROCESS;
+
+    /* CallChangeManaged for all children */
+    for (i = cpPtr->num_children; i != 0; --i) {
+	CallChangeManaged (children[i-1]);
+	if (XtIsManaged(children[i-1])) managed_children++;
+    }
+
+    if (change_managed != NULL && managed_children != 0) {
+	CALLGEOTAT(_XtGeoTrace(widget,"Call \"%s\"[%d,%d]'s changemanaged\n",
+		       XtName(widget),
+		       widget->core.width, widget->core.height));
+	(*change_managed) (widget);
+    }
+} /* CallChangeManaged */
+
+
+static void MapChildren(
+    CompositePart *cwp)
+{
+    Cardinal i;
+    WidgetList children;
+    register Widget child;
+
+    children = cwp->children;
+    for (i = 0; i <  cwp->num_children; i++) {
+	child = children[i];
+	if (XtIsWidget (child)){
+	    if (child->core.managed && child->core.mapped_when_managed) {
+		XtMapWidget (children[i]);
+	    }
+	}
+    }
+} /* MapChildren */
+
+
+static Boolean ShouldMapAllChildren(
+    CompositePart *cwp)
+{
+    Cardinal i;
+    WidgetList children;
+    register Widget child;
+
+    children = cwp->children;
+    for (i = 0; i < cwp->num_children; i++) {
+	child = children[i];
+	if (XtIsWidget(child)) {
+	    if (XtIsRealized(child) && (! (child->core.managed
+					  && child->core.mapped_when_managed))){
+		    return False;
+	    }
+	}
+    }
+
+    return True;
+} /* ShouldMapAllChildren */
+
+
+static void RealizeWidget(
+    Widget			widget)
+{
+    XtValueMask			value_mask;
+    XSetWindowAttributes	values;
+    XtRealizeProc		realize;
+    Window			window;
+    Display*			display;
+    String			class_name;
+    Widget			hookobj;
+
+    if (!XtIsWidget(widget) || XtIsRealized(widget)) return;
+    display = XtDisplay(widget);
+    _XtInstallTranslations(widget);
+
+    ComputeWindowAttributes (widget, &value_mask, &values);
+    LOCK_PROCESS;
+    realize = widget->core.widget_class->core_class.realize;
+    class_name = widget->core.widget_class->core_class.class_name;
+    UNLOCK_PROCESS;
+    if (realize == NULL)
+	XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+		      "invalidProcedure","realizeProc",XtCXtToolkitError,
+		      "No realize class procedure defined",
+		      (String *)NULL, (Cardinal *)NULL);
+    else {
+	CALLGEOTAT(_XtGeoTrace(widget,"Call \"%s\"[%d,%d]'s realize proc\n",
+		       XtName(widget),
+		       widget->core.width, widget->core.height));
+	(*realize) (widget, &value_mask, &values);
+    }
+    window = XtWindow(widget);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj,XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHrealizeWidget;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+#ifndef NO_IDENTIFY_WINDOWS
+    if (_XtGetPerDisplay(display)->appContext->identify_windows) {
+	int len_nm, len_cl;
+	char *s;
+
+	len_nm = widget->core.name ? strlen(widget->core.name) : 0;
+	len_cl = strlen(class_name);
+	s = __XtMalloc((unsigned) (len_nm + len_cl + 2));
+	s[0] = '\0';
+	if (len_nm)
+	    strcpy(s, widget->core.name);
+	strcpy(s + len_nm + 1, class_name);
+	XChangeProperty(display, window,
+			XInternAtom(display, "_MIT_OBJ_CLASS",
+				    False),
+			XA_STRING, 8, PropModeReplace, (unsigned char *) s,
+			len_nm + len_cl + 2);
+	XtFree(s);
+    }
+#endif
+#ifdef notdef
+    _XtRegisterAsyncHandlers(widget);
+#endif
+    /* (re)register any grabs extant in the translations */
+    _XtRegisterGrabs(widget);
+    /* reregister any grabs added with XtGrab{Button,Key} */
+    _XtRegisterPassiveGrabs(widget);
+    XtRegisterDrawable (display, window, widget);
+    _XtExtensionSelect(widget);
+
+    if (XtIsComposite (widget)) {
+	Cardinal		i;
+	CompositePart *cwp = &(((CompositeWidget)widget)->composite);
+	WidgetList children = cwp->children;
+	/* Realize all children */
+	for (i = cwp->num_children; i != 0; --i) {
+	    RealizeWidget (children[i-1]);
+	}
+	/* Map children that are managed and mapped_when_managed */
+
+	if (cwp->num_children != 0) {
+	    if (ShouldMapAllChildren(cwp)) {
+		XMapSubwindows (display, window);
+	    } else {
+		MapChildren(cwp);
+	    }
+	}
+    }
+
+    /* If this is the application's popup shell, map it */
+    if (widget->core.parent == NULL && widget->core.mapped_when_managed) {
+	XtMapWidget (widget);
+    }
+} /* RealizeWidget */
+
+void XtRealizeWidget (
+    Widget		widget)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (XtIsRealized (widget)) {
+	UNLOCK_APP(app);
+	return;
+    }
+    CallChangeManaged(widget);
+    RealizeWidget(widget);
+    UNLOCK_APP(app);
+} /* XtRealizeWidget */
+
+
+static void UnrealizeWidget(
+    Widget		widget)
+{
+    CompositeWidget	cw;
+    Cardinal		i;
+    WidgetList		children;
+
+    if (!XtIsWidget(widget) || !XtIsRealized(widget)) return;
+
+    /* If this is the application's popup shell, unmap it? */
+    /* no, the window is being destroyed */
+
+    /* Recurse on children */
+    if (XtIsComposite (widget)) {
+	cw = (CompositeWidget) widget;
+	children = cw->composite.children;
+	/* Unrealize all children */
+	for (i = cw->composite.num_children; i != 0; --i) {
+	    UnrealizeWidget (children[i-1]);
+	}
+	/* Unmap children that are managed and mapped_when_managed? */
+	/* No, it's ok to be managed and unrealized as long as your parent */
+	/* is unrealized. XtUnrealize widget makes sure the "top" widget */
+	/* is unmanaged, we can ignore all descendents */
+    }
+
+    if (XtHasCallbacks(widget, XtNunrealizeCallback) == XtCallbackHasSome)
+	XtCallCallbacks(widget, XtNunrealizeCallback, NULL);
+
+    /* Unregister window */
+    XtUnregisterDrawable(XtDisplay(widget), XtWindow(widget));
+
+    /* Remove Event Handlers */
+    /* remove grabs. Happens automatically when window is destroyed. */
+
+    /* Destroy X Window, done at outer level with one request */
+    widget->core.window = None;
+
+    /* Removing the event handler here saves having to keep track if
+     * the translation table is changed while the widget is unrealized.
+     */
+    _XtRemoveTranslations(widget);
+} /* UnrealizeWidget */
+
+
+void XtUnrealizeWidget (
+    Widget		widget)
+{
+    Window window;
+    Widget hookobj;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    window = XtWindow(widget);
+    if (! XtIsRealized (widget)) {
+	UNLOCK_APP(app);
+	return;
+    }
+    if (widget->core.managed && widget->core.parent != NULL)
+	XtUnmanageChild(widget);
+    UnrealizeWidget(widget);
+    if (window != None)
+	XDestroyWindow(XtDisplay(widget), window);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHunrealizeWidget;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtUnrealizeWidget */
+
+
+void XtCreateWindow(
+    Widget		 widget,
+    unsigned int	 window_class,
+    Visual		 *visual,
+    XtValueMask		 value_mask,
+    XSetWindowAttributes *attributes)
+{
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    if (widget->core.window == None) {
+	if (widget->core.width == 0 || widget->core.height == 0) {
+	    Cardinal count = 1;
+	    XtAppErrorMsg(app,
+		       "invalidDimension", "xtCreateWindow", XtCXtToolkitError,
+		       "Widget %s has zero width and/or height",
+		       &widget->core.name, &count);
+	}
+	widget->core.window =
+	    XCreateWindow (
+		XtDisplay (widget),
+		(widget->core.parent ?
+		    widget->core.parent->core.window :
+		    widget->core.screen->root),
+		(int)widget->core.x, (int)widget->core.y,
+		(unsigned)widget->core.width, (unsigned)widget->core.height,
+		(unsigned)widget->core.border_width, (int) widget->core.depth,
+		window_class, visual, value_mask, attributes);
+    }
+    UNLOCK_APP(app);
+} /* XtCreateWindow */
+
+
+/* ---------------- XtNameToWidget ----------------- */
+
+static Widget NameListToWidget(
+    Widget root,
+    XrmNameList     names,
+    XrmBindingList  bindings,
+    int in_depth, int *out_depth, int *found_depth);
+
+typedef Widget (*NameMatchProc)(XrmNameList,
+    XrmBindingList,
+    WidgetList, Cardinal, int, int *, int *);
+
+static Widget MatchExactChildren(
+    XrmNameList     names,
+    XrmBindingList  bindings,
+    register WidgetList children,
+    register Cardinal num,
+    int in_depth, int *out_depth, int *found_depth)
+{
+    register Cardinal   i;
+    register XrmName    name = *names;
+    Widget w, result = NULL;
+    int d, min = 10000;
+
+    for (i = 0; i < num; i++) {
+	if (name == children[i]->core.xrm_name) {
+	    w = NameListToWidget(children[i], &names[1], &bindings[1],
+		    in_depth+1, &d, found_depth);
+	    if (w != NULL && d < min) {result = w; min = d;}
+	}
+    }
+    *out_depth = min;
+    return result;
+}
+
+static Widget MatchWildChildren(
+    XrmNameList     names,
+    XrmBindingList  bindings,
+    register WidgetList children,
+    register Cardinal num,
+    int in_depth, int *out_depth, int *found_depth)
+{
+    register Cardinal   i;
+    Widget w, result = NULL;
+    int d, min = 10000;
+
+    for (i = 0; i < num; i++) {
+	w = NameListToWidget(children[i], names, bindings,
+		in_depth+1, &d, found_depth);
+	if (w != NULL && d < min) {result = w; min = d;}
+    }
+    *out_depth = min;
+    return result;
+}
+
+static Widget SearchChildren(
+    Widget root,
+    XrmNameList     names,
+    XrmBindingList  bindings,
+    NameMatchProc matchproc,
+    int in_depth, int *out_depth, int *found_depth)
+{
+    Widget w1 = NULL, w2;
+    int d1, d2;
+
+    if (XtIsComposite(root)) {
+	w1 = (*matchproc)(names, bindings,
+		((CompositeWidget) root)->composite.children,
+		((CompositeWidget) root)->composite.num_children,
+		in_depth, &d1, found_depth);
+    } else d1 = 10000;
+    w2 = (*matchproc)(names, bindings, root->core.popup_list,
+	    root->core.num_popups, in_depth, &d2, found_depth);
+    *out_depth = (d1 < d2 ? d1 : d2);
+    return (d1 < d2 ? w1 : w2);
+}
+
+static Widget NameListToWidget(
+    register Widget root,
+    XrmNameList     names,
+    XrmBindingList  bindings,
+    int in_depth, int *out_depth, int *found_depth)
+{
+    Widget w1, w2;
+    int d1, d2;
+
+    if (in_depth >= *found_depth) {
+	*out_depth = 10000;
+	return NULL;
+    }
+
+    if (names[0] == NULLQUARK) {
+	*out_depth = *found_depth = in_depth;
+	return root;
+    }
+
+    if (! XtIsWidget(root)) {
+	*out_depth = 10000;
+	return NULL;
+    }
+
+    if (*bindings == XrmBindTightly) {
+	return SearchChildren(root, names, bindings, MatchExactChildren,
+		in_depth, out_depth, found_depth);
+
+    } else {	/* XrmBindLoosely */
+	w1 = SearchChildren(root, names, bindings, MatchExactChildren,
+		in_depth, &d1, found_depth);
+	w2 = SearchChildren(root, names, bindings, MatchWildChildren,
+		in_depth, &d2, found_depth);
+	*out_depth = (d1 < d2 ? d1 : d2);
+	return (d1 < d2 ? w1 : w2);
+    }
+} /* NameListToWidget */
+
+Widget XtNameToWidget(
+    Widget root,
+    _Xconst char* name)
+{
+    XrmName *names;
+    XrmBinding *bindings;
+    int len, depth, found = 10000;
+    Widget result;
+    WIDGET_TO_APPCON(root);
+
+    len = strlen(name);
+    if (len == 0) return NULL;
+
+    LOCK_APP(app);
+    names = (XrmName *) ALLOCATE_LOCAL((unsigned) (len+1) * sizeof(XrmName));
+    bindings = (XrmBinding *)
+	ALLOCATE_LOCAL((unsigned) (len+1) * sizeof(XrmBinding));
+    if (names == NULL || bindings == NULL) _XtAllocError(NULL);
+
+    XrmStringToBindingQuarkList(name, bindings, names);
+    if (names[0] == NULLQUARK) {
+	DEALLOCATE_LOCAL((char *) bindings);
+	DEALLOCATE_LOCAL((char *) names);
+	UNLOCK_APP(app);
+	return NULL;
+    }
+
+    result = NameListToWidget(root, names, bindings, 0, &depth, &found);
+
+    DEALLOCATE_LOCAL((char *) bindings);
+    DEALLOCATE_LOCAL((char *) names);
+    UNLOCK_APP(app);
+    return result;
+} /* XtNameToWidget */
+
+/* Define user versions of intrinsics macros */
+
+#undef XtDisplayOfObject
+Display *XtDisplayOfObject(
+     Widget object)
+{
+    /* Attempts to LockApp() here will generate endless recursive loops */
+    if (XtIsSubclass(object, hookObjectClass))
+	return DisplayOfScreen(((HookObject)object)->hooks.screen);
+    return XtDisplay(XtIsWidget(object) ? object : _XtWindowedAncestor(object));
+}
+
+#undef XtDisplay
+Display *XtDisplay(
+	Widget widget)
+{
+    /* Attempts to LockApp() here will generate endless recursive loops */
+    return DisplayOfScreen(widget->core.screen);
+}
+
+#undef XtScreenOfObject
+Screen *XtScreenOfObject(
+     Widget object)
+{
+    /* Attempts to LockApp() here will generate endless recursive loops */
+    if (XtIsSubclass(object, hookObjectClass))
+	return ((HookObject)object)->hooks.screen;
+    return XtScreen(XtIsWidget(object) ? object : _XtWindowedAncestor(object));
+}
+
+#undef XtScreen
+Screen *XtScreen(
+	Widget widget)
+{
+    /* Attempts to LockApp() here will generate endless recursive loops */
+    return widget->core.screen;
+}
+
+#undef XtWindowOfObject
+Window XtWindowOfObject(
+     Widget object)
+{
+    return XtWindow(XtIsWidget(object) ? object : _XtWindowedAncestor(object));
+}
+
+
+#undef XtWindow
+Window XtWindow(
+	Widget widget)
+{
+    return widget->core.window;
+}
+
+#undef XtSuperclass
+WidgetClass XtSuperclass(
+    Widget widget)
+{
+    WidgetClass retval;
+
+    LOCK_PROCESS;
+    retval = XtClass(widget)->core_class.superclass;
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+#undef XtClass
+WidgetClass XtClass(
+    Widget widget)
+{
+    WidgetClass retval;
+
+    LOCK_PROCESS;
+    retval = widget->core.widget_class;
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+#undef XtIsManaged
+Boolean XtIsManaged(
+	Widget object)
+{
+    Boolean retval;
+    WIDGET_TO_APPCON(object);
+
+    LOCK_APP(app);
+    if (XtIsRectObj(object))
+	retval = object->core.managed;
+    else
+	retval = False;
+    UNLOCK_APP(app);
+    return retval;
+}
+
+#undef XtIsRealized
+Boolean XtIsRealized (
+    Widget   object)
+{
+    Boolean retval;
+    WIDGET_TO_APPCON(object);
+
+    LOCK_APP(app);
+    retval = XtWindowOfObject(object) != None;
+    UNLOCK_APP(app);
+    return retval;
+} /* XtIsRealized */
+
+#undef XtIsSensitive
+Boolean XtIsSensitive(
+	Widget	object)
+{
+    Boolean retval;
+    WIDGET_TO_APPCON(object);
+
+    LOCK_APP(app);
+    if (XtIsRectObj(object))
+	retval = object->core.sensitive && object->core.ancestor_sensitive;
+    else
+	retval = False;
+    UNLOCK_APP(app);
+    return retval;
+}
+
+/*
+ * Internal routine; must be called only after XtIsWidget returns false
+ */
+Widget _XtWindowedAncestor(
+    register Widget object)
+{
+    Widget obj = object;
+    for (object = XtParent(object); object && !XtIsWidget(object);)
+	object = XtParent(object);
+
+    if (object == NULL) {
+	String params = XtName(obj);
+	Cardinal num_params = 1;
+	XtErrorMsg("noWidgetAncestor", "windowedAncestor", XtCXtToolkitError,
+		   "Object \"%s\" does not have windowed ancestor",
+		   &params, &num_params);
+    }
+
+    return object;
+}
+
+#undef XtParent
+Widget XtParent(
+    Widget widget)
+{
+    /* Attempts to LockApp() here will generate endless recursive loops */
+    return widget->core.parent;
+}
+
+#undef XtName
+String XtName(
+     Widget object)
+{
+    /* Attempts to LockApp() here will generate endless recursive loops */
+    return XrmQuarkToString(object->core.xrm_name);
+}
+
+
+Boolean XtIsObject(
+    Widget object)
+{
+    WidgetClass wc;
+    String class_name;
+
+    /* perform basic sanity checks */
+    if (object->core.self != object || object->core.xrm_name == NULLQUARK)
+	return False;
+
+    LOCK_PROCESS;
+    wc = object->core.widget_class;
+    if (wc->core_class.class_name == NULL ||
+	wc->core_class.xrm_class == NULLQUARK ||
+	(class_name = XrmClassToString(wc->core_class.xrm_class)) == NULL ||
+	strcmp(wc->core_class.class_name, class_name) != 0) {
+	    UNLOCK_PROCESS;
+	    return False;
+	}
+    UNLOCK_PROCESS;
+
+    if (XtIsWidget(object)) {
+	if (object->core.name == NULL ||
+	    (class_name = XrmNameToString(object->core.xrm_name)) == NULL ||
+	    strcmp(object->core.name, class_name) != 0)
+	    return False;
+    }
+    return True;
+}
+
+#if defined(WIN32)
+static int access_file (
+    char* path,
+    char* pathbuf,
+    int len_pathbuf,
+    char** pathret)
+{
+    if (access (path, F_OK) == 0) {
+	if (strlen (path) < len_pathbuf)
+	    *pathret = pathbuf;
+	else
+	    *pathret = XtMalloc (strlen (path));
+	if (*pathret) {
+	    strcpy (*pathret, path);
+	    return 1;
+	}
+    }
+    return 0;
+}
+
+static int AccessFile (
+    char* path,
+    char* pathbuf,
+    int len_pathbuf,
+    char** pathret)
+{
+    unsigned long drives;
+    int i, len;
+    char* drive;
+    char buf[MAX_PATH];
+    char* bufp;
+
+    /* just try the "raw" name first and see if it works */
+    if (access_file (path, pathbuf, len_pathbuf, pathret))
+	return 1;
+
+#if defined(WIN32) && defined(__MINGW32__)
+    /* don't try others */
+    return 0;
+#endif
+
+    /* try the places set in the environment */
+    drive = getenv ("_XBASEDRIVE");
+#ifdef __UNIXOS2__
+    if (!drive)
+	drive = getenv ("X11ROOT");
+#endif
+    if (!drive)
+	drive = "C:";
+    len = strlen (drive) + strlen (path);
+    bufp = XtStackAlloc (len + 1, buf);
+    strcpy (bufp, drive);
+    strcat (bufp, path);
+    if (access_file (bufp, pathbuf, len_pathbuf, pathret)) {
+	XtStackFree (bufp, buf);
+	return 1;
+    }
+
+#ifndef __UNIXOS2__
+    /* one last place to look */
+    drive = getenv ("HOMEDRIVE");
+    if (drive) {
+	len = strlen (drive) + strlen (path);
+	bufp = XtStackAlloc (len + 1, buf);
+	strcpy (bufp, drive);
+	strcat (bufp, path);
+	if (access_file (bufp, pathbuf, len_pathbuf, pathret)) {
+	    XtStackFree (bufp, buf);
+	    return 1;
+	}
+    }
+
+    /* does OS/2 (with or with gcc-emx) have getdrives()? */
+    /* tried everywhere else, go fishing */
+    drives = _getdrives ();
+#define C_DRIVE ('C' - 'A')
+#define Z_DRIVE ('Z' - 'A')
+    for (i = C_DRIVE; i <= Z_DRIVE; i++) { /* don't check on A: or B: */
+	if ((1 << i) & drives) {
+	    len = 2 + strlen (path);
+	    bufp = XtStackAlloc (len + 1, buf);
+	    *bufp = 'A' + i;
+	    *(bufp + 1) = ':';
+	    *(bufp + 2) = '\0';
+	    strcat (bufp, path);
+	    if (access_file (bufp, pathbuf, len_pathbuf, pathret)) {
+		XtStackFree (bufp, buf);
+		return 1;
+	    }
+	}
+    }
+#endif
+    return 0;
+}
+#endif
+
+static Boolean TestFile(
+    String path)
+{
+#ifndef VMS
+    int ret = 0;
+    struct stat status;
+#if defined(WIN32)
+    char buf[MAX_PATH];
+    char* bufp;
+    int len;
+    UINT olderror = SetErrorMode (SEM_FAILCRITICALERRORS);
+
+    if (AccessFile (path, buf, MAX_PATH, &bufp))
+	path = bufp;
+
+    (void) SetErrorMode (olderror);
+#endif
+    ret = (access(path, R_OK) == 0 &&		/* exists and is readable */
+	    stat(path, &status) == 0 &&		/* get the status */
+#ifndef X_NOT_POSIX
+	    S_ISDIR(status.st_mode) == 0);	/* not a directory */
+#else
+	    (status.st_mode & S_IFMT) != S_IFDIR);	/* not a directory */
+#endif /* X_NOT_POSIX else */
+    return ret;
+#else /* VMS */
+    return TRUE;	/* Who knows what to do here? */
+#endif /* VMS */
+}
+
+/* return of TRUE = resolved string fit, FALSE = didn't fit.  Not
+   null-terminated and not collapsed if it didn't fit */
+
+static Boolean Resolve(
+    register _Xconst char *source,	/* The source string */
+    register int len,		/* The length in bytes of *source */
+    Substitution sub,	/* Array of string values to substitute */
+    Cardinal num,	/* Number of substitution entries */
+    char *buf,		/* Where to put the resolved string; */
+    char collapse)	/* Character to collapse */
+{
+    register int bytesLeft = PATH_MAX;
+    register char* bp = buf;
+#ifndef DONT_COLLAPSE
+    Boolean atBeginning = TRUE;
+    Boolean prevIsCollapse = FALSE;
+
+#define PUT(ch) \
+    { \
+	if (--bytesLeft == 0) return FALSE; \
+        if (prevIsCollapse) \
+	    if ((*bp = ch) != collapse) { \
+		prevIsCollapse = FALSE; \
+		bp++; \
+	    } \
+	    else bytesLeft++; \
+        else if ((*bp++ = ch) == collapse && !atBeginning) \
+	    prevIsCollapse = TRUE; \
+    }
+#else /* DONT_COLLAPSE */
+
+#define PUT(ch) \
+    { \
+	if (--bytesLeft == 0) return FALSE; \
+	*bp++ = ch; \
+    }
+#endif /* DONT_COLLAPSE */
+#define escape '%'
+
+    while (len--) {
+#ifndef DONT_COLLAPSE
+	if (*source == collapse) {
+	    PUT(*source);
+	    source++;
+	    continue;
+	}
+	else
+#endif /* DONT_COLLAPSE */
+	    if (*source != escape) {
+		PUT(*source);
+	}
+	else {
+	    source++;
+	    if (len-- == 0) {
+		PUT(escape);
+		break;
+	    }
+
+	    if (*source == ':' || *source == escape)
+		PUT(*source)
+	    else {
+		/* Match the character against the match array */
+		register Cardinal j;
+
+		for (j = 0; j < num && sub[j].match != *source; j++) {}
+
+		/* Substitute the substitution string */
+
+		if (j >= num) PUT(*source)
+		else if (sub[j].substitution != NULL) {
+		    char *sp = sub[j].substitution;
+		    while (*sp) {
+			PUT(*sp);
+			sp++;
+		    }
+		}
+	    }
+	}
+	source++;
+#ifndef DONT_COLLAPSE
+	atBeginning = FALSE;
+#endif /* DONT_COLLAPSE */
+    }
+    PUT('\0');
+
+    return TRUE;
+#undef PUT
+#undef escape
+}
+
+
+String XtFindFile(
+    _Xconst char* path,
+    Substitution substitutions,
+    Cardinal num_substitutions,
+    XtFilePredicate predicate)
+{
+    char *buf, *buf1, *buf2, *colon;
+    int len;
+    Boolean firstTime = TRUE;
+
+    buf = buf1 = __XtMalloc((unsigned)PATH_MAX);
+    buf2 = __XtMalloc((unsigned)PATH_MAX);
+
+    if (predicate == NULL) predicate = TestFile;
+
+    while (1) {
+	colon = (String)path;
+	/* skip leading colons */
+	while (*colon) {
+	    if (*colon != ':') break;
+	    colon++;
+	    path++;
+	}
+	/* now look for an un-escaped colon */
+	for ( ; *colon ; colon++) {
+	    if (*colon == '%' && *(path+1)) {
+		colon++;	/* bump it an extra time to skip %. */
+		continue;
+	    }
+	    if (*colon == ':')
+#ifdef __UNIXOS2__
+	      if (colon > (path+1))
+#endif
+		break;
+	}
+	len = colon - path;
+	if (Resolve(path, len, substitutions, num_substitutions,
+		    buf, '/')) {
+	    if (firstTime || strcmp(buf1,buf2) != 0) {
+#ifdef __UNIXOS2__
+		{
+			char *bufx = (char*)__XOS2RedirRoot(buf);
+			strcpy(buf,bufx);
+		}
+#endif
+#ifdef XNL_DEBUG
+		printf("Testing file %s\n", buf);
+#endif /* XNL_DEBUG */
+		/* Check out the file */
+		if ((*predicate) (buf)) {
+		    /* We've found it, return it */
+#ifdef XNL_DEBUG
+		    printf("File found.\n");
+#endif /* XNL_DEBUG */
+		    if (buf == buf1) XtFree(buf2);
+		    else XtFree(buf1);
+		    return buf;
+		}
+		if (buf == buf1)
+		    buf = buf2;
+		else
+		    buf = buf1;
+		firstTime = FALSE;
+	    }
+	}
+
+	/* Nope...any more paths? */
+
+	if (*colon == '\0') break;
+	path = colon+1;
+    }
+
+    /* No file found */
+
+    XtFree(buf1);
+    XtFree(buf2);
+    return NULL;
+}
+
+
+/* The implementation of this routine is operating system dependent */
+/* Should match the code in Xlib _XlcMapOSLocaleName */
+
+static char *ExtractLocaleName(
+    String	lang)
+{
+
+#if defined(hpux) || defined(CSRG_BASED) || defined(sun) || defined(SVR4) || defined(sgi) || defined(__osf__) || defined(AIXV3) || defined(ultrix) || defined(WIN32) || defined(__UNIXOS2__) || defined (linux)
+# ifdef hpux
+/*
+ * We need to discriminated between HPUX 9 and HPUX 10. The equivalent
+ * code in Xlib in SetLocale.c does include locale.h via X11/Xlocale.h.
+ */
+#  include <locale.h>
+#  ifndef _LastCategory
+   /* HPUX 9 and earlier */
+#   define SKIPCOUNT 2
+#   define STARTCHAR ':'
+#   define ENDCHAR ';'
+#  else
+    /* HPUX 10 */
+#   define ENDCHAR ' '
+#  endif
+# else
+#  ifdef ultrix
+#   define SKIPCOUNT 2
+#   define STARTCHAR '\001'
+#   define ENDCHAR '\001'
+#  else
+#   if defined(WIN32) || defined(__UNIXOS2__)
+#    define SKIPCOUNT 1
+#    define STARTCHAR '='
+#    define ENDCHAR ';'
+#    define WHITEFILL
+#   else
+#    if defined(__osf__) || (defined(AIXV3) && !defined(AIXV4))
+#     define STARTCHAR ' '
+#     define ENDCHAR ' '
+#    else
+#     if defined(linux)
+#      define STARTSTR "LC_CTYPE="
+#      define ENDCHAR ';'
+#     else
+#      if !defined(sun) || defined(SVR4)
+#       define STARTCHAR '/'
+#       define ENDCHAR '/'
+#      endif
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+    char           *start;
+    char           *end;
+    int             len;
+# ifdef SKIPCOUNT
+    int		    n;
+# endif
+    static char*    buf = NULL;
+
+    start = lang;
+# ifdef SKIPCOUNT
+    for (n = SKIPCOUNT;
+	 --n >= 0 && start && (start = strchr (start, STARTCHAR));
+	 start++)
+	;
+    if (!start)
+	start = lang;
+# endif
+# ifdef STARTCHAR
+    if (start && (start = strchr (start, STARTCHAR)))
+# elif  defined (STARTSTR)
+    if (start && (start = strstr (start,STARTSTR)))
+# endif
+    {
+# ifdef STARTCHAR
+	start++;
+# elif defined (STARTSTR)
+	start += strlen(STARTSTR);
+# endif
+
+	if ((end = strchr (start, ENDCHAR))) {
+	    len = end - start;
+	    if (buf != NULL) XtFree (buf);
+	    buf = XtMalloc (len + 1);
+	    if (buf == NULL) return NULL;
+	    strncpy(buf, start, len);
+	    *(buf + len) = '\0';
+# ifdef WHITEFILL
+	    for (start = buf; start = strchr(start, ' '); )
+		*start++ = '-';
+# endif
+	    return buf;
+	} else  /* if no ENDCHAR is found we are at the end of the line */
+	    return start;
+    }
+# ifdef WHITEFILL
+    if (strchr(lang, ' ')) {
+	if (buf != NULL) XtFree (buf);
+	else buf = XtMalloc (strlen (lang) + 1);
+	if (buf == NULL) return NULL;
+	strcpy(buf, lang);
+	for (start = buf; start = strchr(start, ' '); )
+	    *start++ = '-';
+	return buf;
+    }
+# endif
+# undef STARTCHAR
+# undef ENDCHAR
+# undef WHITEFILL
+#endif
+
+    return lang;
+}
+
+static void FillInLangSubs(
+    Substitution subs,
+    XtPerDisplay pd)
+{
+    int len;
+    char *string, *p1, *p2, *p3;
+    char **rest;
+    char *ch;
+
+    if (pd->language == NULL ||
+	(pd->language != NULL && pd->language[0] == '\0')) {
+	subs[0].substitution = subs[1].substitution =
+		subs[2].substitution = subs[3].substitution = NULL;
+	return;
+    }
+
+    string = ExtractLocaleName(pd->language);
+
+    if (string == NULL ||
+	(string != NULL && string[0] == '\0')) {
+	subs[0].substitution = subs[1].substitution =
+		subs[2].substitution = subs[3].substitution = NULL;
+	return;
+    }
+
+    len = strlen(string) + 1;
+    subs[0].substitution = string;
+    p1 = subs[1].substitution = __XtMalloc((Cardinal) 3*len);
+    p2 = subs[2].substitution = subs[1].substitution + len;
+    p3 = subs[3].substitution = subs[2].substitution + len;
+
+    /* Everything up to the first "_" goes into p1.  From "_" to "." in
+       p2.  The rest in p3.  If no delimiters, all goes into p1.  We
+       assume p1, p2, and p3 are large enough. */
+
+    *p1 = *p2 = *p3 = '\0';
+
+    ch = strchr(string, '_');
+    if (ch != NULL) {
+	len = ch - string;
+	(void) strncpy(p1, string, len);
+	p1[len] = '\0';
+	string = ch + 1;
+	rest = &p2;
+    } else rest = &p1;
+
+    /* Rest points to where we put the first part */
+
+    ch = strchr(string, '.');
+    if (ch != NULL) {
+	len = ch - string;
+	strncpy(*rest, string, len);
+	(*rest)[len] = '\0';
+	(void) strcpy(p3, ch+1);
+    } else (void) strcpy(*rest, string);
+}
+
+/*
+ * default path used if environment variable XFILESEARCHPATH
+ * is not defined.  Also substitued for %D.
+ * The exact value should be documented in the implementation
+ * notes for any Xt implementation.
+ */
+static char *implementation_default_path(void)
+{
+#if defined(WIN32)
+    static char xfilesearchpath[] = "";
+
+    return xfilesearchpath;
+#elif defined(__UNIXOS2__)
+    /* if you know how to pass % thru the compiler let me know */
+    static char xfilesearchpath[] = XFILESEARCHPATHDEFAULT;
+    static Bool fixed;
+    char *ch;
+
+    if (!fixed) {
+	for (ch = xfilesearchpath; ch = strchr(ch, ';'); ch++)
+	    *ch = '%';
+	fixed = True;
+    }
+    return xfilesearchpath;
+#else
+    return XFILESEARCHPATHDEFAULT;
+#endif
+}
+
+
+static SubstitutionRec defaultSubs[] = {
+    {'N', NULL},
+    {'T', NULL},
+    {'S', NULL},
+    {'C', NULL},
+    {'L', NULL},
+    {'l', NULL},
+    {'t', NULL},
+    {'c', NULL}
+};
+
+
+String XtResolvePathname(
+    Display *dpy,
+    _Xconst char* type,
+    _Xconst char* filename,
+    _Xconst char* suffix,
+    _Xconst char* path,
+    Substitution substitutions,
+    Cardinal num_substitutions,
+    XtFilePredicate predicate)
+{
+    XtPerDisplay pd;
+    static char *defaultPath = NULL;
+    char *impl_default = implementation_default_path();
+    int idef_len = strlen(impl_default);
+    char *massagedPath;
+    int bytesAllocd, bytesLeft;
+    char *ch, *result;
+    Substitution merged_substitutions;
+    XrmRepresentation db_type;
+    XrmValue value;
+    XrmName name_list[3];
+    XrmClass class_list[3];
+    Boolean pathMallocd = False;
+
+    LOCK_PROCESS;
+    pd = _XtGetPerDisplay(dpy);
+    if (path == NULL) {
+#ifndef VMS
+	if (defaultPath == NULL) {
+	    defaultPath = getenv("XFILESEARCHPATH");
+	    if (defaultPath == NULL)
+		defaultPath = impl_default;
+	}
+	path = defaultPath;
+#endif /* VMS */
+    }
+
+    if (path == NULL)
+	path = "";	/* NULL would kill us later */
+
+    if (filename == NULL) {
+	filename = XrmClassToString(pd->class);
+    }
+
+    bytesAllocd = bytesLeft = 1000;
+    massagedPath = ALLOCATE_LOCAL(bytesAllocd);
+    if (massagedPath == NULL) _XtAllocError(NULL);
+
+    if (path[0] == ':') {
+	strcpy(massagedPath, "%N%S");
+	ch = &massagedPath[4];
+	bytesLeft -= 4;
+    } else ch = massagedPath;
+
+    /* Insert %N%S between adjacent colons
+     * and default path for %D.
+     * Default path should not have any adjacent colons of its own.
+     */
+
+    while (*path != '\0') {
+	if (bytesLeft < idef_len) {
+	    int bytesUsed = bytesAllocd - bytesLeft;
+	    char *new;
+	    bytesAllocd +=1000;
+	    new = __XtMalloc((Cardinal) bytesAllocd);
+	    strncpy( new, massagedPath, bytesUsed );
+	    ch = new + bytesUsed;
+	    if (pathMallocd)
+		XtFree(massagedPath);
+	    else
+		DEALLOCATE_LOCAL(massagedPath);
+	    pathMallocd = True;
+	    massagedPath = new;
+	    bytesLeft = bytesAllocd - bytesUsed;
+	}
+	if (*path == '%' && *(path+1) == ':') {
+	    *ch++ = '%';
+	    *ch++ = ':';
+	    path += 2;
+	    bytesLeft -= 2;
+	    continue;
+	}
+	if (*path == ':' && *(path+1) == ':') {
+	    strcpy(ch, ":%N%S:");
+	    ch += 6;
+	    bytesLeft -= 6;
+	    while (*path == ':') path++;
+	    continue;
+	}
+	if (*path == '%' && *(path+1) == 'D') {
+	    strcpy(ch, impl_default);
+	    ch += idef_len;
+	    bytesLeft -= idef_len;
+	    path += 2;
+	    continue;
+	}
+	*ch++ = *path++;
+	bytesLeft--;
+    }
+    *ch = '\0';
+#ifdef XNL_DEBUG
+    printf("Massaged path: %s\n", massagedPath);
+#endif /* XNL_DEBUG */
+
+    if (num_substitutions == 0)
+	merged_substitutions = defaultSubs;
+    else {
+	int i = XtNumber(defaultSubs);
+	Substitution sub, def;
+	merged_substitutions = sub = (Substitution)
+	    ALLOCATE_LOCAL((unsigned)(num_substitutions+i)*sizeof(SubstitutionRec));
+	if (sub == NULL) _XtAllocError(NULL);
+	for (def = defaultSubs; i--; sub++, def++) sub->match = def->match;
+	for (i = num_substitutions; i--; ) *sub++ = *substitutions++;
+    }
+    merged_substitutions[0].substitution = (String)filename;
+    merged_substitutions[1].substitution = (String)type;
+    merged_substitutions[2].substitution = (String)suffix;
+    name_list[0] = pd->name;
+    name_list[1] = XrmPermStringToQuark("customization");
+    name_list[2] = NULLQUARK;
+    class_list[0] = pd->class;
+    class_list[1] = XrmPermStringToQuark("Customization");
+    class_list[2] = NULLQUARK;
+    if (XrmQGetResource(XrmGetDatabase(dpy), name_list, class_list,
+			&db_type, &value) &&
+	db_type == _XtQString)
+	merged_substitutions[3].substitution = (char *)value.addr;
+    else
+	merged_substitutions[3].substitution = NULL;
+    FillInLangSubs(&merged_substitutions[4], pd);
+
+    result = XtFindFile(massagedPath, merged_substitutions,
+			num_substitutions + XtNumber(defaultSubs),
+			predicate);
+
+    if (merged_substitutions[5].substitution != NULL)
+	XtFree( (XtPointer)merged_substitutions[5].substitution );
+
+    if (merged_substitutions != defaultSubs)
+	DEALLOCATE_LOCAL(merged_substitutions);
+
+    if (pathMallocd)
+	XtFree(massagedPath);
+    else
+	DEALLOCATE_LOCAL(massagedPath);
+
+    UNLOCK_PROCESS;
+    return result;
+}
+
+
+Boolean XtCallAcceptFocus(
+    Widget widget,
+    Time *time)
+{
+    XtAcceptFocusProc ac;
+    Boolean retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    ac = XtClass(widget)->core_class.accept_focus;
+    UNLOCK_PROCESS;
+
+    if (ac != NULL)
+	retval = (*ac) (widget, time);
+    else
+	retval = FALSE;
+    UNLOCK_APP(app);
+    return retval;
+}
+
+#ifdef XT_GEO_TATTLER
+/**************************************************************************
+ GeoTattler:  This is used to debug Geometry management in Xt.
+
+  It uses a pseudo resource XtNgeotattler.
+
+  E.G. if those lines are found in the resource database:
+
+    myapp*draw.XmScale.geoTattler: ON
+    *XmScrollBar.geoTattler:ON
+    *XmRowColumn.exit_button.geoTattler:ON
+
+   then:
+
+    all the XmScale children of the widget named draw,
+    all the XmScrollBars,
+    the widget named exit_button in any XmRowColumn
+
+   will return True to the function IsTattled(), and will generate
+   outlined trace to stdout.
+
+*************************************************************************/
+
+#define XtNgeoTattler "geoTattler"
+#define XtCGeoTattler "GeoTattler"
+
+typedef struct { Boolean   geo_tattler ;} GeoDataRec ;
+
+static XtResource geo_resources[] = {
+    { XtNgeoTattler, XtCGeoTattler, XtRBoolean, sizeof(Boolean),
+      XtOffsetOf(GeoDataRec, geo_tattler),
+      XtRImmediate, (XtPointer) False }
+};
+
+/************************************************************************
+  This function uses XtGetSubresources to find out if a widget
+  needs to be geo-spied by the caller. */
+static Boolean IsTattled (Widget widget)
+{
+    GeoDataRec geo_data ;
+
+    XtGetSubresources(widget, (XtPointer)&geo_data,
+                      (String)NULL, (String)NULL,
+		      geo_resources, XtNumber(geo_resources),
+		      NULL, 0);
+
+    return geo_data.geo_tattler;
+
+}  /* IsTattled */
+
+static int n_tab = 0 ;  /* not MT for now */
+
+void
+_XtGeoTab (int direction)  /* +1 or -1 */
+{
+    n_tab += direction ;
+}
+
+
+void
+_XtGeoTrace (Widget widget, ...)
+{
+    va_list args;
+    char *fmt;
+    int i ;
+    if (IsTattled(widget)) {
+	va_start(args, widget);
+	fmt = va_arg(args, char *);
+	for (i=0; i<n_tab; i++) printf("     ");
+	(void) vprintf(fmt, args);
+	va_end(args);
+    }
+}
+
+#endif /* XT_GEO_TATTLER */
+
diff --git a/libXt/src/Keyboard.c b/libXt/src/Keyboard.c
new file mode 100644
index 000000000..6c4a62a18
--- /dev/null
+++ b/libXt/src/Keyboard.c
@@ -0,0 +1,851 @@
+/* $Xorg: Keyboard.c,v 1.5 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/********************************************************
+
+Copyright 1988 by Hewlett-Packard Company
+Copyright 1987, 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+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, and that the names of
+Hewlett-Packard, Digital, or Sun not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+********************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Keyboard.c,v 3.3 2001/08/22 22:52:19 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+#include "PassivGraI.h"
+#include "EventI.h"
+
+#define _GetWindowedAncestor(w) (XtIsWidget(w) ? w : _XtWindowedAncestor(w))
+
+/* InActiveSubtree cache of the current focus source and its ancestors */
+static Widget	*pathTrace = NULL;
+static int	pathTraceDepth = 0;
+static int	pathTraceMax = 0;
+
+/* FindKeyDestination cache of focus destination and ancestors up to source */
+static Widget	*pseudoTrace = NULL;
+static int	pseudoTraceDepth = 0;
+static int	pseudoTraceMax = 0;
+
+void _XtClearAncestorCache(Widget widget)
+{
+    /* the caller must lock the process lock */
+    if (pathTraceDepth && pathTrace[0] == widget)
+	pathTraceDepth = 0;
+}
+
+static XtServerGrabPtr CheckServerGrabs(
+    XEvent	*event,
+    Widget	*trace,
+    Cardinal	traceDepth)
+{
+    XtServerGrabPtr 	grab;
+    Cardinal		i;
+
+    for (i = traceDepth;  i > 0; i--)
+      {
+	 if ((grab = _XtCheckServerGrabsOnWidget(event, trace[i-1], KEYBOARD)))
+	   return (grab);
+     }
+    return (XtServerGrabPtr)0;
+}
+
+static Boolean IsParent(Widget a, Widget b)
+{
+    for (b = XtParent(b); b; b = XtParent(b)) {
+      if (b == a) return TRUE;
+      if (XtIsShell(b)) return FALSE;
+    }
+    return FALSE;
+}
+
+#define RelRtn(lca, type) {*relTypeRtn = type; return lca;}
+
+static Widget CommonAncestor(
+    register Widget a,
+    register Widget b,
+    XtGeneology  * relTypeRtn)
+{
+    if (a == b)
+      {
+	  RelRtn(a, XtMySelf)
+	}
+    else if (IsParent(a, b))
+      {
+	  RelRtn(a, XtMyAncestor)
+	}
+    else if (IsParent(b, a))
+      {
+	  RelRtn(b, XtMyDescendant)
+	}
+    else
+      for (b = XtParent(b);
+	   b && !XtIsShell(b);
+	   b = XtParent(b))
+	if (IsParent(b, a))
+	  {
+	      RelRtn(b, XtMyCousin)
+	    }
+    RelRtn(NULL, XtUnrelated)
+}
+#undef RelRtn
+
+
+
+
+
+static Widget _FindFocusWidget(
+    Widget 	widget,
+    Widget	*trace,
+    int		traceDepth,
+    Boolean	activeCheck,
+    Boolean	*isTarget)
+{
+    int src;
+    Widget dst;
+    XtPerWidgetInput	pwi = NULL;
+
+    /* For each ancestor, starting at the top, see if it's forwarded */
+
+
+    /* first check the trace list till done or we go to branch */
+    for (src = traceDepth-1, dst = widget; src > 0;)
+      {
+	  if ((pwi = _XtGetPerWidgetInput(trace[src], FALSE)))
+	    {
+		if (pwi->focusKid)
+		  {
+		      dst = pwi->focusKid;
+		      for (src--; src > 0 && trace[src] != dst; src--) {}
+		  }
+		else dst = trace[--src];
+	    }
+	  else dst = trace[--src];
+      }
+
+    if (isTarget) {
+	if (pwi && pwi->focusKid == widget)
+	    *isTarget = TRUE;
+	else
+	    *isTarget = FALSE;
+    }
+
+    if (!activeCheck)
+      while (XtIsWidget(dst)
+	     && (pwi = _XtGetPerWidgetInput(dst, FALSE))
+	     && pwi->focusKid)
+	dst = pwi->focusKid;
+
+    return dst;
+}
+
+
+static Widget FindFocusWidget(
+    Widget		widget,
+    XtPerDisplayInput 	pdi)
+{
+    if (pdi->focusWidget)
+      return  pdi->focusWidget;
+    else
+      return _FindFocusWidget(widget, pdi->trace, pdi->traceDepth, FALSE, NULL);
+}
+
+Widget XtGetKeyboardFocusWidget(Widget widget)
+{
+    XtPerDisplayInput pdi;
+    Widget retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    retval = FindFocusWidget(widget, pdi);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+static Boolean IsOutside(
+    XKeyEvent	*e,
+    Widget	w)
+{
+    Position left, right, top, bottom;
+
+    /*
+     * if the pointer is outside the shell or inside
+     * the window try to see if it would recieve the
+     * focus
+     */
+    XtTranslateCoords(w, 0, 0, &left, &top);
+    /* We need to take borders into consideration */
+    left = left - w->core.border_width;
+    top =  top - w->core.border_width;
+    right = left +  w->core.width + w->core.border_width;
+    bottom = top +  w->core.height + w->core.border_width;
+
+    if (
+	(e->x_root < left) || (e->y_root < top) ||
+        (e->x_root > right) || (e->y_root > bottom))
+      return TRUE;
+    else
+      return FALSE;
+}
+
+static Widget 	FindKeyDestination(
+    Widget		widget,
+    XKeyEvent		*event,
+    XtServerGrabPtr	prevGrab,
+    XtServerGrabType 	prevGrabType,
+    XtServerGrabPtr	devGrab,
+    XtServerGrabType	devGrabType,
+    XtPerDisplayInput	pdi)
+{
+
+    Widget		dspWidget;
+    Widget		focusWidget;
+
+    LOCK_PROCESS;
+    dspWidget =
+      focusWidget =
+	pdi->focusWidget =
+	  _GetWindowedAncestor(FindFocusWidget(widget, pdi));
+
+
+    /*
+     * If a grab is active from a previous activation then dispatch
+     * based on owner_events ala protocol but with focus being
+     * determined by XtSetKeyboardFocus.
+     */
+    if 	(IsAnyGrab(prevGrabType))
+      {
+	  if (prevGrab->ownerEvents)
+	    dspWidget = focusWidget;
+	  else
+	    dspWidget = prevGrab->widget;
+      }
+    else
+      {
+	  /*
+           * If the focus widget is the event widget or a descendant
+	   * then we can avoid the rest of this. Else ugh...
+	   */
+	  if (focusWidget != widget)
+	    {
+		XtGeneology 	ewRelFw; /* relationship of event widget to
+					    focusWidget */
+		Widget		lca;
+
+		lca = CommonAncestor(widget, focusWidget, &ewRelFw);
+
+		/*
+		 * if the event widget is an ancestor of focus due to the pointer
+		 * and/or the grab being in an ancestor and it's a passive grab
+		 * send to grab widget.
+		 * we are also dispatching to widget if ownerEvents and the event
+		 * is outside the client
+		 */
+		if ((ewRelFw == XtMyAncestor) &&
+		    (devGrabType == XtPassiveServerGrab))
+		     {
+			 if (IsOutside(event, widget) ||
+			     event->type ==KeyPress
+			     )
+			   dspWidget = devGrab->widget;
+		     }
+		else
+		  {
+		      /*
+		       * if the grab widget is not an ancestor of the focus
+		       * release the grab in order to avoid locking. There
+		       * is a possible case  in that ownerEvents true will fall
+		       * through and if synch is set and the event widget
+		       * could turn it off we'll lock. check for it ? why not
+		       */
+		      if ((ewRelFw != XtMyAncestor)
+			  && (devGrabType == XtPassiveServerGrab)
+			  && (!IsAnyGrab(prevGrabType))
+			  )
+			{
+			    XtUngrabKeyboard(devGrab->widget,
+					     event->time);
+			    devGrabType = XtNoServerGrab;
+			}
+		      /*
+		       * if there isn't a grab with then check
+		       * for a logical grab that would have been activated
+		       * if the server was using Xt focus instead of server
+		       * focus
+		       */
+		      if (
+			  (event->type != KeyPress) ||
+			  (event->keycode == 0) /* Xlib XIM composed input */
+			  )
+			dspWidget = focusWidget;
+		      else
+			{
+			    XtServerGrabPtr	grab;
+
+			    if (!pseudoTraceDepth ||
+				!(focusWidget == pseudoTrace[0]) ||
+				!(lca == pseudoTrace[pseudoTraceDepth]))
+			      {
+				  /*
+				   * fill ancestor list from lca
+				   * (non-inclusive)to focusWidget by
+				   * passing in lca as breakWidget
+				   */
+				  _XtFillAncestorList(&pseudoTrace,
+						   &pseudoTraceMax,
+						   &pseudoTraceDepth,
+						   focusWidget,
+						   lca);
+				  /* ignore lca */
+				  pseudoTraceDepth--;
+			      }
+			    if ((grab = CheckServerGrabs((XEvent*)event,
+							pseudoTrace,
+							pseudoTraceDepth)))
+			      {
+				  XtDevice device = &pdi->keyboard;
+
+				  device->grabType = XtPseudoPassiveServerGrab;
+				  pdi->activatingKey = event->keycode;
+				  device->grab = *grab;
+
+				  if (grab
+				      )
+				    dspWidget = grab->widget;
+				  else
+				    dspWidget = focusWidget;
+			      }
+			}
+		  }
+	    }
+      }
+    UNLOCK_PROCESS;
+    return dspWidget;
+}
+
+Widget _XtProcessKeyboardEvent(
+    XKeyEvent  *event,
+    Widget widget,
+    XtPerDisplayInput pdi)
+{
+    XtDevice		device = &pdi->keyboard;
+    XtServerGrabPtr	newGrab, devGrab = &device->grab;
+    XtServerGrabRec	prevGrabRec;
+    XtServerGrabType	prevGrabType = device->grabType;
+    Widget		dspWidget = NULL;
+    Boolean		deactivateGrab = FALSE;
+
+    prevGrabRec = *devGrab;
+
+    switch (event->type)
+      {
+	case KeyPress:
+	  {
+	      if (event->keycode != 0 && /* Xlib XIM composed input */
+		  !IsServerGrab(device->grabType) &&
+		  (newGrab = CheckServerGrabs((XEvent*)event,
+					      pdi->trace,
+					      pdi->traceDepth)))
+		{
+		    /*
+		     * honor pseudo-grab from prior event by X
+		     * unlocking keyboard. Not Xt Unlock !
+		     */
+		    if (IsPseudoGrab(prevGrabType))
+		      XUngrabKeyboard(XtDisplay(newGrab->widget),
+				      event->time);
+		    else
+		      {
+			  /* Activate the grab */
+			  device->grab = *newGrab;
+			  pdi->activatingKey = event->keycode;
+			  device->grabType = XtPassiveServerGrab;
+		      }
+		}
+	    }
+	  break;
+
+	case KeyRelease:
+	  {
+	      if (IsEitherPassiveGrab(device->grabType) &&
+		  (event->keycode == pdi->activatingKey))
+		deactivateGrab = TRUE;
+	  }
+	  break;
+      }
+    dspWidget = FindKeyDestination(widget, event,
+				   &prevGrabRec, prevGrabType,
+				   devGrab, device->grabType,
+				   pdi);
+    if (deactivateGrab)
+      {
+	  /* Deactivate the grab */
+	  device->grabType = XtNoServerGrab;
+	  pdi->activatingKey = 0;
+      }
+    return dspWidget;
+}
+
+static Widget GetShell(Widget widget)
+{
+    Widget	shell;
+
+    for (shell = widget;
+	 shell && !XtIsShell(shell);
+	 shell = XtParent(shell)){}
+    return shell;
+}
+
+
+/*
+ * Check that widget really has Xt focus due to it having recieved an
+ * event
+ */
+typedef enum {NotActive = 0, IsActive, IsTarget} ActiveType;
+static ActiveType InActiveSubtree(Widget widget)
+{
+    Boolean		isTarget;
+    ActiveType		retval;
+
+    LOCK_PROCESS;
+    if (!pathTraceDepth || widget != pathTrace[0]) {
+	_XtFillAncestorList(&pathTrace,
+			    &pathTraceMax,
+			    &pathTraceDepth,
+			    widget,
+			    NULL);
+    }
+    if (widget == _FindFocusWidget(widget,
+				   pathTrace,
+				   pathTraceDepth,
+				   TRUE,
+				   &isTarget))
+	retval = (isTarget ? IsTarget : IsActive);
+    else
+	retval = NotActive;
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+
+
+
+/* ARGSUSED */
+void _XtHandleFocus(
+    Widget widget,
+    XtPointer client_data,	/* child who wants focus */
+    XEvent *event,
+    Boolean *cont)		/* unused */
+{
+    XtPerDisplayInput 	pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    XtPerWidgetInput	pwi = (XtPerWidgetInput)client_data;
+    XtGeneology		oldFocalPoint = pwi->focalPoint;
+    XtGeneology		newFocalPoint = pwi->focalPoint;
+
+    switch( event->type ) {
+
+      case KeyPress:
+      case KeyRelease:
+	/*
+	 * We're getting the keyevents used to guarantee propagating
+         * child interest ala ForwardEvent in R3
+	 */
+	return;
+
+      case EnterNotify:
+      case LeaveNotify:
+
+	/*
+	 * If operating in a focus driven model, then enter and
+	 * leave events do not affect the keyboard focus.
+	 */
+	if ((event->xcrossing.detail != NotifyInferior)
+	    &&	(event->xcrossing.focus))
+	  {
+	      switch (oldFocalPoint)
+		{
+		  case XtMyAncestor:
+		    if (event->type == LeaveNotify)
+		      newFocalPoint = XtUnrelated;
+		    break;
+		  case XtUnrelated:
+		    if (event->type == EnterNotify)
+		      newFocalPoint = XtMyAncestor;
+		    break;
+		  case XtMySelf:
+		    break;
+		  case XtMyDescendant:
+		    break;
+
+		}
+	  }
+	break;
+      case FocusIn:
+	switch (event->xfocus.detail)
+	  {
+	    case NotifyNonlinear:
+	    case NotifyAncestor:
+	    case NotifyInferior:
+	      newFocalPoint = XtMySelf;
+	      break;
+	    case NotifyNonlinearVirtual:
+	    case NotifyVirtual:
+	      newFocalPoint = XtMyDescendant;
+	      break;
+	    case NotifyPointer:
+	      newFocalPoint = XtMyAncestor;
+	      break;
+	  }
+	break;
+      case FocusOut:
+	switch (event->xfocus.detail)
+	  {
+	    case NotifyPointer:
+	    case NotifyNonlinear:
+	    case NotifyAncestor:
+	    case NotifyNonlinearVirtual:
+	    case NotifyVirtual:
+	      newFocalPoint = XtUnrelated;
+	      break;
+	    case NotifyInferior:
+	      newFocalPoint = XtMyDescendant;
+	      return;
+	      break;
+	  }
+	break;
+    }
+
+    if (newFocalPoint != oldFocalPoint)
+      {
+	  Boolean 	add;
+	  Widget	descendant = pwi->focusKid;
+
+	  pwi->focalPoint = newFocalPoint;
+
+	  if ((oldFocalPoint == XtUnrelated) &&
+	      InActiveSubtree(widget) != NotActive)
+	    {
+		pdi->focusWidget = NULL; /* invalidate the cache */
+		pwi->haveFocus = TRUE;
+		add = TRUE;
+	    }
+	  else if (newFocalPoint == XtUnrelated)
+	    {
+		pdi->focusWidget = NULL; /* invalidate the cache */
+		pwi->haveFocus = FALSE;
+		add = FALSE;
+	    }
+	  else
+	    return;
+
+	  if (descendant)
+	    {
+		if (add)
+		  {
+		      _XtSendFocusEvent(descendant, FocusIn);
+		  }
+		else
+		  {
+		      _XtSendFocusEvent(descendant, FocusOut);
+		  }
+	    }
+      }
+}
+
+
+static void AddFocusHandler(
+    Widget widget,
+    Widget descendant,
+    XtPerWidgetInput pwi,
+    XtPerWidgetInput psi,
+    XtPerDisplayInput pdi,
+    EventMask oldEventMask)
+{
+    EventMask	 	eventMask, targetEventMask;
+    Widget		target;
+
+    /*
+     * widget must now select for key events if the descendant is
+     * interested in them.
+     *
+     * shell borders are not occluded by the child, they're occluded
+     * by reparenting window managers. !!!
+     */
+    target = descendant ? _GetWindowedAncestor(descendant) : NULL;
+    targetEventMask = XtBuildEventMask(target);
+    eventMask = targetEventMask & (KeyPressMask | KeyReleaseMask);
+    eventMask |= FocusChangeMask | EnterWindowMask | LeaveWindowMask;
+
+    if (oldEventMask) {
+	oldEventMask &= KeyPressMask | KeyReleaseMask;
+	oldEventMask |= FocusChangeMask | EnterWindowMask | LeaveWindowMask;
+
+	if (oldEventMask != eventMask)
+	    XtRemoveEventHandler(widget, (oldEventMask & ~eventMask),
+				 False, _XtHandleFocus, (XtPointer)pwi);
+    }
+
+    if (oldEventMask != eventMask)
+	XtAddEventHandler(widget, eventMask, False,
+			  _XtHandleFocus, (XtPointer)pwi);
+
+    /* What follows is too much grief to go through if the
+     * target doesn't actually care about focus change events,
+     * so just invalidate the focus cache & refill it when
+     * the next input event actually arrives.
+     */
+
+    if (!(targetEventMask & FocusChangeMask)) {
+	pdi->focusWidget = NULL;
+	return;
+    }
+
+    if (XtIsRealized(widget) && !pwi->haveFocus) {
+	if (psi->haveFocus) {
+	    Window root, child;
+	    int root_x, root_y, win_x, win_y;
+	    int left, right, top, bottom;
+	    unsigned int modMask;
+	    ActiveType act;
+
+	    /*
+	     * If the shell has the focus but the source widget
+	     * doesn't, it may only be because the source widget
+	     * wasn't previously tracking focus or crossing events.
+	     * If the target wants focus events, we have to
+	     * now determine whether the source has the focus.
+	     */
+
+	    if ((act = InActiveSubtree(widget)) == IsTarget)
+		pwi->haveFocus = TRUE;
+	    else if (act == IsActive) {
+		/*
+		 * An ancestor contains the focus, so if source
+		 * contains the pointer, then source has the focus.
+		 */
+
+		if (XQueryPointer(XtDisplay(widget), XtWindow(widget),
+				  &root, &child,
+				  &root_x, &root_y, &win_x, &win_y, &modMask))
+		{
+		    /* We need to take borders into consideration */
+		    left = top = -((int) widget->core.border_width);
+		    right = (int) (widget->core.width + (widget->core.border_width << 1));
+		    bottom = (int) (widget->core.height + (widget->core.border_width << 1));
+
+		    if (win_x >= left && win_x < right &&
+			win_y >= top && win_y < bottom)
+			pwi->haveFocus = TRUE;
+		}
+	    }
+	}
+    }
+    if (pwi->haveFocus) {
+	  pdi->focusWidget = NULL; /* invalidate the cache */
+	  _XtSendFocusEvent(target, FocusIn);
+    }
+}
+
+
+/* ARGSUSED */
+static void QueryEventMask(
+    Widget widget,		/* child who gets focus */
+    XtPointer client_data,	/* ancestor giving it */
+    XEvent *event,
+    Boolean *cont)		/* unused */
+{
+    /* widget was once the target of an XtSetKeyboardFocus but
+     * was unrealized at the time.   Make sure ancestor still wants
+     * focus set here then install the handler now that we know the
+     * complete event mask.
+     */
+    Widget ancestor = (Widget)client_data;
+    XtPerWidgetInput pwi = _XtGetPerWidgetInput(ancestor, FALSE);
+    Widget target = pwi->queryEventDescendant;
+
+    /* use of 'target' is non-standard hackery; allows focus to non-widget */
+    if (pwi && (pwi->focusKid == target)) {
+	AddFocusHandler(ancestor, target, pwi,
+			_XtGetPerWidgetInput(GetShell(ancestor), TRUE),
+			_XtGetPerDisplayInput(XtDisplay(ancestor)),
+			(EventMask)0);
+    }
+    XtRemoveEventHandler(widget, XtAllEvents, True,
+			 QueryEventMask, client_data);
+    pwi->map_handler_added = FALSE;
+}
+
+
+/* ARGSUSED */
+static void FocusDestroyCallback(
+    Widget  widget,
+    XtPointer closure,		/* Widget */
+    XtPointer call_data)
+{
+    XtSetKeyboardFocus((Widget)closure, NULL);
+}
+
+void XtSetKeyboardFocus(
+    Widget widget,
+    Widget descendant)
+{
+    XtPerDisplayInput pdi;
+    XtPerWidgetInput pwi;
+    Widget oldDesc, oldTarget, target, hookobj;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    pwi = _XtGetPerWidgetInput(widget, TRUE);
+    oldDesc = pwi->focusKid;
+
+    if (descendant == widget) descendant = (Widget)None;
+
+    target = descendant ? _GetWindowedAncestor(descendant) : NULL;
+    oldTarget = oldDesc ? _GetWindowedAncestor(oldDesc) : NULL;
+
+    if (descendant != oldDesc) {
+
+	/* update the forward path */
+	pwi->focusKid = descendant;
+
+
+	/* all the rest handles focus ins and focus outs and misc gunk */
+
+	if (oldDesc) {
+	    /* invalidate FindKeyDestination's ancestor list */
+	    if (pseudoTraceDepth && oldTarget == pseudoTrace[0])
+		pseudoTraceDepth = 0;
+
+	    XtRemoveCallback(oldDesc, XtNdestroyCallback,
+			     FocusDestroyCallback, (XtPointer)widget);
+
+	    if (!oldTarget->core.being_destroyed) {
+		if (pwi->map_handler_added) {
+		    XtRemoveEventHandler(oldTarget, XtAllEvents, True,
+					 QueryEventMask, (XtPointer)widget);
+		    pwi->map_handler_added = FALSE;
+		}
+		if (pwi->haveFocus) {
+		    _XtSendFocusEvent( oldTarget, FocusOut);
+		}
+	    }
+	    else if (pwi->map_handler_added) {
+		pwi->map_handler_added = FALSE;
+	    }
+
+	    if (pwi->haveFocus)
+		pdi->focusWidget = NULL; /* invalidate cache */
+
+	    /*
+	     * If there was a forward path then remove the handler if
+	     * the path is being set to null and it isn't a shell.
+	     * shells always have a handler for tracking focus for the
+	     * hierarchy.
+	     *
+	     * Keep the pwi record on the assumption that the client
+	     * will continue to dynamically assign focus for this widget.
+	     */
+	    if (!XtIsShell(widget) && !descendant) {
+	      XtRemoveEventHandler(widget, XtAllEvents, True,
+				   _XtHandleFocus, (XtPointer)pwi);
+	      pwi->haveFocus = FALSE;
+	  }
+	}
+
+	if (descendant) {
+	    Widget shell = GetShell(widget);
+	    XtPerWidgetInput psi = _XtGetPerWidgetInput(shell, TRUE);
+	    XtAddCallback (descendant, XtNdestroyCallback,
+			   FocusDestroyCallback, (XtPointer) widget);
+
+	    AddFocusHandler(widget, descendant, pwi, psi, pdi,
+			    oldTarget ? XtBuildEventMask(oldTarget) : 0);
+
+	    if (widget != shell)
+		XtAddEventHandler(
+			shell,
+			FocusChangeMask | EnterWindowMask | LeaveWindowMask,
+			False,
+			_XtHandleFocus,
+			(XtPointer)psi
+		       );
+
+	    if (! XtIsRealized(target)) {
+		XtAddEventHandler(target, (EventMask)StructureNotifyMask,
+				  False, QueryEventMask, (XtPointer)widget);
+		pwi->map_handler_added = TRUE;
+		pwi->queryEventDescendant = descendant;
+	    }
+	}
+    }
+    hookobj = XtHooksOfDisplay(XtDisplay(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHsetKeyboardFocus;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) descendant;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
diff --git a/libXt/src/Makefile.am b/libXt/src/Makefile.am
new file mode 100644
index 000000000..a43fb2283
--- /dev/null
+++ b/libXt/src/Makefile.am
@@ -0,0 +1,105 @@
+lib_LTLIBRARIES = libXt.la
+
+BUILT_SOURCES = $(BUILT_FILES)
+CLEANFILES = $(BUILT_SOURCES)
+
+SRCH_DEFINES = -DXFILESEARCHPATHDEFAULT=\"$(XFILESEARCHPATHDEFAULT)\"
+ERRORDB_DEFINES = -DERRORDB=\"$(libdir)/X11/XtErrorDB\"
+
+AM_CFLAGS = $(CWARNFLAGS) $(XT_CFLAGS) $(SRCH_DEFINES) $(ERRORDB_DEFINES) \
+	$(XTMALLOC_ZERO_CFLAGS)
+
+INCLUDES = -I$(top_srcdir)/include/ -I$(top_srcdir)/include/X11 \
+	   -I$(top_builddir)/include -I$(top_builddir)/include/X11
+
+nodist_libXt_la_SOURCES = StringDefs.c
+
+libXt_la_SOURCES = \
+	ActionHook.c \
+	Alloc.c \
+	ArgList.c \
+	Callback.c \
+	ClickTime.c \
+	Composite.c \
+	Constraint.c \
+	Convert.c \
+	Converters.c \
+	Core.c \
+	Create.c \
+	Destroy.c \
+	Display.c \
+	Error.c \
+	Event.c \
+	EventUtil.c \
+	Functions.c \
+	GCManager.c \
+	Geometry.c \
+	GetActKey.c \
+	GetResList.c \
+	GetValues.c \
+	HookObj.c \
+	Hooks.c \
+	Initialize.c \
+	Intrinsic.c \
+	Keyboard.c \
+	Manage.c \
+	NextEvent.c \
+	Object.c \
+	PassivGrab.c \
+	Pointer.c \
+	Popup.c \
+	PopupCB.c \
+	RectObj.c \
+	ResConfig.c \
+	Resources.c \
+	Selection.c \
+	SetSens.c \
+	SetValues.c \
+	SetWMCW.c \
+	Shell.c \
+	TMaction.c \
+	TMgrab.c \
+	TMkey.c \
+	TMparse.c \
+	TMprint.c \
+	TMstate.c \
+	Threads.c \
+	VarCreate.c \
+	VarGet.c \
+	Varargs.c \
+	Vendor.c \
+	sharedlib.c
+
+DISTCLEANFILES = StringDefs.c
+
+libXt_la_LIBADD = @XT_LIBS@
+
+libXt_la_LDFLAGS = -version-number 6:0:0 -no-undefined
+
+#
+# The util directory contains a program that builds some of the sources. 
+# The input to this program is given in files. Unfortunately those input
+# files refers to things like
+# 
+# 	util/foo
+# 
+# so the generating program must be run from the top directory.
+# 
+
+BUILT_SOURCE = StringDefs.c 
+BUILT_HEADER = $(top_builddir)/include/X11/StringDefs.h $(top_builddir)/include/X11/Shell.h
+BUILT_FILES = $(BUILT_SOURCE) $(BUILT_HEADER)
+
+STRING_LIST = $(top_srcdir)/util/string.list
+
+all-local: $(BUILT_FILES)
+
+$(BUILT_HEADER): $(BUILT_SOURCE)
+
+$(BUILT_SOURCE):
+	$(top_builddir)/util/makestrs -i $(top_srcdir) $(STRINGSABIOPTIONS) < $(STRING_LIST) > StringDefs.c
+	mkdir -p $(top_builddir)/src
+	mkdir -p $(top_builddir)/include/X11
+	cp StringDefs.h $(top_builddir)/include/X11
+	cp Shell.h $(top_builddir)/include/X11
+	rm StringDefs.h Shell.h
diff --git a/libXt/src/Makefile.in b/libXt/src/Makefile.in
new file mode 100644
index 000000000..acd2983d9
--- /dev/null
+++ b/libXt/src/Makefile.in
@@ -0,0 +1,729 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
+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 = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+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__installdirs = "$(DESTDIR)$(libdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libXt_la_DEPENDENCIES =
+am_libXt_la_OBJECTS = ActionHook.lo Alloc.lo ArgList.lo Callback.lo \
+	ClickTime.lo Composite.lo Constraint.lo Convert.lo \
+	Converters.lo Core.lo Create.lo Destroy.lo Display.lo Error.lo \
+	Event.lo EventUtil.lo Functions.lo GCManager.lo Geometry.lo \
+	GetActKey.lo GetResList.lo GetValues.lo HookObj.lo Hooks.lo \
+	Initialize.lo Intrinsic.lo Keyboard.lo Manage.lo NextEvent.lo \
+	Object.lo PassivGrab.lo Pointer.lo Popup.lo PopupCB.lo \
+	RectObj.lo ResConfig.lo Resources.lo Selection.lo SetSens.lo \
+	SetValues.lo SetWMCW.lo Shell.lo TMaction.lo TMgrab.lo \
+	TMkey.lo TMparse.lo TMprint.lo TMstate.lo Threads.lo \
+	VarCreate.lo VarGet.lo Varargs.lo Vendor.lo sharedlib.lo
+nodist_libXt_la_OBJECTS = StringDefs.lo
+libXt_la_OBJECTS = $(am_libXt_la_OBJECTS) $(nodist_libXt_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+libXt_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libXt_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libXt_la_SOURCES) $(nodist_libXt_la_SOURCES)
+DIST_SOURCES = $(libXt_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+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@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CHANGELOG_CMD = @CHANGELOG_CMD@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CWARNFLAGS = @CWARNFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
+DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
+DSYMUTIL = @DSYMUTIL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FILE_MAN_DIR = @FILE_MAN_DIR@
+FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_MAN_DIR = @LIB_MAN_DIR@
+LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
+MISC_MAN_DIR = @MISC_MAN_DIR@
+MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
+MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+RAWCPP = @RAWCPP@
+RAWCPPFLAGS = @RAWCPPFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRINGSABIOPTIONS = @STRINGSABIOPTIONS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XFILESEARCHPATHDEFAULT = @XFILESEARCHPATHDEFAULT@
+XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
+XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
+XT_CFLAGS = @XT_CFLAGS@
+XT_LIBS = @XT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+appdefaultdir = @appdefaultdir@
+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@
+distcleancheck_listfiles = @distcleancheck_listfiles@
+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@
+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@
+lib_LTLIBRARIES = libXt.la
+BUILT_SOURCES = $(BUILT_FILES)
+CLEANFILES = $(BUILT_SOURCES)
+SRCH_DEFINES = -DXFILESEARCHPATHDEFAULT=\"$(XFILESEARCHPATHDEFAULT)\"
+ERRORDB_DEFINES = -DERRORDB=\"$(libdir)/X11/XtErrorDB\"
+AM_CFLAGS = $(CWARNFLAGS) $(XT_CFLAGS) $(SRCH_DEFINES) $(ERRORDB_DEFINES) \
+	$(XTMALLOC_ZERO_CFLAGS)
+
+INCLUDES = -I$(top_srcdir)/include/ -I$(top_srcdir)/include/X11 \
+	   -I$(top_builddir)/include -I$(top_builddir)/include/X11
+
+nodist_libXt_la_SOURCES = StringDefs.c
+libXt_la_SOURCES = \
+	ActionHook.c \
+	Alloc.c \
+	ArgList.c \
+	Callback.c \
+	ClickTime.c \
+	Composite.c \
+	Constraint.c \
+	Convert.c \
+	Converters.c \
+	Core.c \
+	Create.c \
+	Destroy.c \
+	Display.c \
+	Error.c \
+	Event.c \
+	EventUtil.c \
+	Functions.c \
+	GCManager.c \
+	Geometry.c \
+	GetActKey.c \
+	GetResList.c \
+	GetValues.c \
+	HookObj.c \
+	Hooks.c \
+	Initialize.c \
+	Intrinsic.c \
+	Keyboard.c \
+	Manage.c \
+	NextEvent.c \
+	Object.c \
+	PassivGrab.c \
+	Pointer.c \
+	Popup.c \
+	PopupCB.c \
+	RectObj.c \
+	ResConfig.c \
+	Resources.c \
+	Selection.c \
+	SetSens.c \
+	SetValues.c \
+	SetWMCW.c \
+	Shell.c \
+	TMaction.c \
+	TMgrab.c \
+	TMkey.c \
+	TMparse.c \
+	TMprint.c \
+	TMstate.c \
+	Threads.c \
+	VarCreate.c \
+	VarGet.c \
+	Varargs.c \
+	Vendor.c \
+	sharedlib.c
+
+DISTCLEANFILES = StringDefs.c
+libXt_la_LIBADD = @XT_LIBS@
+libXt_la_LDFLAGS = -version-number 6:0:0 -no-undefined
+
+#
+# The util directory contains a program that builds some of the sources. 
+# The input to this program is given in files. Unfortunately those input
+# files refers to things like
+# 
+# 	util/foo
+# 
+# so the generating program must be run from the top directory.
+# 
+BUILT_SOURCE = StringDefs.c 
+BUILT_HEADER = $(top_builddir)/include/X11/StringDefs.h $(top_builddir)/include/X11/Shell.h
+BUILT_FILES = $(BUILT_SOURCE) $(BUILT_HEADER)
+STRING_LIST = $(top_srcdir)/util/string.list
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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) --gnu src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: 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__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libXt.la: $(libXt_la_OBJECTS) $(libXt_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libXt_la_LINK) -rpath $(libdir) $(libXt_la_OBJECTS) $(libXt_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ActionHook.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Alloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ArgList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Callback.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClickTime.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Composite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Constraint.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Convert.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Converters.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Core.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Create.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Destroy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Display.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Event.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EventUtil.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Functions.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GCManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Geometry.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GetActKey.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GetResList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GetValues.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HookObj.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Hooks.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Initialize.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intrinsic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Keyboard.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Manage.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NextEvent.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Object.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PassivGrab.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Pointer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Popup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PopupCB.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RectObj.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ResConfig.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Resources.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Selection.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SetSens.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SetValues.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SetWMCW.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Shell.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringDefs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TMaction.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TMgrab.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TMkey.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TMparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TMprint.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TMstate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Threads.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VarCreate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VarGet.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Varargs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Vendor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sharedlib.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(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: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) all-local
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) 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:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+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)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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 "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+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 -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES
+
+.MAKE: all check install install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+	clean-generic clean-libLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool 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-libLTLIBRARIES install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-libLTLIBRARIES
+
+
+all-local: $(BUILT_FILES)
+
+$(BUILT_HEADER): $(BUILT_SOURCE)
+
+$(BUILT_SOURCE):
+	$(top_builddir)/util/makestrs -i $(top_srcdir) $(STRINGSABIOPTIONS) < $(STRING_LIST) > StringDefs.c
+	mkdir -p $(top_builddir)/src
+	mkdir -p $(top_builddir)/include/X11
+	cp StringDefs.h $(top_builddir)/include/X11
+	cp Shell.h $(top_builddir)/include/X11
+	rm StringDefs.h Shell.h
+
+# 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:
diff --git a/libXt/src/Manage.c b/libXt/src/Manage.c
new file mode 100644
index 000000000..05957a2fa
--- /dev/null
+++ b/libXt/src/Manage.c
@@ -0,0 +1,491 @@
+/* $Xorg: Manage.c,v 1.4 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Manage.c,v 3.10tsi Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+static String XtNinvalidChild = "invalidChild";
+static String XtNxtUnmanageChildren = "xtUnmanageChildren";
+static String XtNxtManageChildren = "xtManageChildren";
+static String XtNxtChangeManagedSet = "xtChangeManagedSet";
+
+static void UnmanageChildren(
+    WidgetList children,
+    Cardinal num_children,
+    Widget parent,
+    Cardinal* num_unique_children,
+    Boolean call_change_managed,
+    String caller_func)
+{
+    Widget		child;
+    Cardinal		i;
+    XtWidgetProc	change_managed = NULL;
+    Bool		parent_realized = False;
+
+    *num_unique_children = 0;
+
+    if (XtIsComposite((Widget) parent)) {
+	LOCK_PROCESS;
+        change_managed = ((CompositeWidgetClass) parent->core.widget_class)
+		    ->composite_class.change_managed;
+	UNLOCK_PROCESS;
+	parent_realized = XtIsRealized((Widget)parent);
+    } else {
+        XtAppErrorMsg(XtWidgetToApplicationContext((Widget)parent),
+		      "invalidParent",caller_func, XtCXtToolkitError,
+		   "Attempt to unmanage a child when parent is not Composite",
+		      (String *) NULL, (Cardinal *) NULL);
+    }
+
+    for (i = 0; i < num_children; i++) {
+	child = children[i];
+	if (child == NULL) {
+	    XtAppWarningMsg(XtWidgetToApplicationContext(parent),
+		  XtNinvalidChild,caller_func,XtCXtToolkitError,
+                  "Null child passed to XtUnmanageChildren",
+		  (String *)NULL, (Cardinal *)NULL);
+	    return;
+	}
+        if (child->core.parent != parent) {
+	   XtAppWarningMsg(XtWidgetToApplicationContext(parent),
+		   "ambiguousParent",caller_func,XtCXtToolkitError,
+           "Not all children have same parent in UnmanageChildren",
+             (String *)NULL, (Cardinal *)NULL);
+	} else
+        if (child->core.managed) {
+            (*num_unique_children)++;
+	    CALLGEOTAT(_XtGeoTrace(child,"Child \"%s\" is marked unmanaged\n",
+			   XtName(child)));
+	    child->core.managed = FALSE;
+            if (XtIsWidget(child)
+		&& XtIsRealized(child)
+		&& child->core.mapped_when_managed)
+                    XtUnmapWidget(child);
+            else
+	    { /* RectObj child */
+		Widget pw = child->core.parent;
+		RectObj r = (RectObj) child;
+		while ((pw!=NULL) && (!XtIsWidget(pw))) pw = pw->core.parent;
+		if ((pw!=NULL) && XtIsRealized (pw))
+		    XClearArea (XtDisplay (pw), XtWindow (pw),
+			r->rectangle.x, r->rectangle.y,
+			r->rectangle.width + (r->rectangle.border_width << 1),
+			r->rectangle.height + (r->rectangle.border_width << 1),
+			TRUE);
+	    }
+
+        }
+    }
+    if (call_change_managed && *num_unique_children != 0 &&
+	change_managed != NULL && parent_realized) {
+	CALLGEOTAT(_XtGeoTrace((Widget)parent,
+		       "Call parent: \"%s\"[%d,%d]'s changemanaged proc\n",
+		       XtName((Widget)parent),
+		       parent->core.width,parent->core.height));
+	(*change_managed) (parent);
+    }
+} /* UnmanageChildren */
+
+void XtUnmanageChildren (
+    WidgetList children,
+    Cardinal num_children)
+{
+    Widget parent, hookobj;
+    Cardinal ii;
+#ifdef XTHREADS
+    XtAppContext app;
+#endif
+
+    if (num_children == 0) return;
+    if (children[0] == NULL) {
+	XtWarningMsg(XtNinvalidChild,XtNxtUnmanageChildren,XtCXtToolkitError,
+		     "Null child found in argument list to unmanage",
+		     (String *)NULL, (Cardinal *)NULL);
+	return;
+    }
+#ifdef XTHREADS
+    app = XtWidgetToApplicationContext(children[0]);
+#endif
+    LOCK_APP(app);
+    parent = children[0]->core.parent;
+    if (parent->core.being_destroyed) {
+	UNLOCK_APP(app);
+	return;
+    }
+    UnmanageChildren(children, num_children, parent, &ii,
+		     (Boolean)True, XtNxtUnmanageChildren);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(children[0]));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHunmanageChildren;
+	call_data.widget = parent;
+	call_data.event_data = (XtPointer) children;
+	call_data.num_event_data = num_children;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtUnmanageChildren */
+
+void XtUnmanageChild(
+    Widget child)
+{
+    XtUnmanageChildren(&child, (Cardinal)1);
+} /* XtUnmanageChild */
+
+
+static void ManageChildren(
+    WidgetList  children,
+    Cardinal    num_children,
+    Widget	parent,
+    Boolean	call_change_managed,
+    String	caller_func)
+{
+#define MAXCHILDREN 100
+    Widget		child;
+    Cardinal		num_unique_children, i;
+    XtWidgetProc	change_managed = NULL;
+    WidgetList		unique_children;
+    Widget		cache[MAXCHILDREN];
+    Bool		parent_realized = False;
+
+    if (XtIsComposite((Widget) parent)) {
+	LOCK_PROCESS;
+        change_managed = ((CompositeWidgetClass) parent->core.widget_class)
+		    ->composite_class.change_managed;
+	UNLOCK_PROCESS;
+	parent_realized = XtIsRealized((Widget)parent);
+    } else {
+	XtAppErrorMsg(XtWidgetToApplicationContext((Widget)parent),
+		"invalidParent",caller_func, XtCXtToolkitError,
+	    "Attempt to manage a child when parent is not Composite",
+	    (String *) NULL, (Cardinal *) NULL);
+    }
+
+    /* Construct new list of children that really need to be operated upon. */
+    if (num_children <= MAXCHILDREN) {
+	unique_children = cache;
+    } else {
+	unique_children = (WidgetList) __XtMalloc(num_children * sizeof(Widget));
+    }
+    num_unique_children = 0;
+    for (i = 0; i < num_children; i++) {
+	child = children[i];
+	if (child == NULL) {
+	    XtAppWarningMsg(XtWidgetToApplicationContext((Widget)parent),
+		XtNinvalidChild,caller_func,XtCXtToolkitError,
+		"null child passed to ManageChildren",
+		(String *)NULL, (Cardinal *)NULL);
+	    if (unique_children != cache) XtFree((char *) unique_children);
+	    return;
+	}
+#ifdef DEBUG
+	if (!XtIsRectObj(child)) {
+	    String params[2];
+	    Cardinal num_params = 2;
+	    params[0] = XtName(child);
+	    params[1] = child->core.widget_class->core_class.class_name;
+	    XtAppWarningMsg(XtWidgetToApplicationContext((Widget)parent),
+			    "notRectObj",caller_func,XtCXtToolkitError,
+			    "child \"%s\", class %s is not a RectObj",
+			    params, &num_params);
+	    continue;
+	}
+#endif /*DEBUG*/
+        if (child->core.parent != parent) {
+	    XtAppWarningMsg(XtWidgetToApplicationContext((Widget)parent),
+		    "ambiguousParent",caller_func,XtCXtToolkitError,
+		"Not all children have same parent in XtManageChildren",
+		(String *)NULL, (Cardinal *)NULL);
+	} else if (! child->core.managed && !child->core.being_destroyed) {
+	    unique_children[num_unique_children++] = child;
+	    CALLGEOTAT(_XtGeoTrace(child,
+			   "Child \"%s\"[%d,%d] is marked managed\n",
+			   XtName(child),
+			   child->core.width,child->core.height));
+	    child->core.managed = TRUE;
+	}
+    }
+
+    if ((call_change_managed || num_unique_children != 0) && parent_realized) {
+	/* Compute geometry of new managed set of children. */
+	if (change_managed != NULL) {
+	    CALLGEOTAT(_XtGeoTrace((Widget)parent,
+			   "Call parent: \"%s\"[%d,%d]'s changemanaged\n",
+			   XtName((Widget)parent),
+			   parent->core.width,parent->core.height));
+	    (*change_managed) ((Widget)parent);
+	}
+
+	/* Realize each child if necessary, then map if necessary */
+	for (i = 0; i < num_unique_children; i++) {
+	    child = unique_children[i];
+	    if (XtIsWidget(child)) {
+		if (! XtIsRealized(child)) XtRealizeWidget(child);
+		if (child->core.mapped_when_managed) XtMapWidget(child);
+	    } else { /* RectObj child */
+		Widget pw = child->core.parent;
+		RectObj r = (RectObj) child;
+		while ((pw!=NULL) && (!XtIsWidget(pw)))
+		    pw = pw->core.parent;
+		if (pw != NULL)
+		    XClearArea (XtDisplay (pw), XtWindow (pw),
+		    r->rectangle.x, r->rectangle.y,
+		    r->rectangle.width + (r->rectangle.border_width << 1),
+		    r->rectangle.height + (r->rectangle.border_width << 1),
+		    TRUE);
+            }
+        }
+    }
+
+    if (unique_children != cache) XtFree((char *) unique_children);
+} /* ManageChildren */
+
+void XtManageChildren(
+    WidgetList children,
+    Cardinal num_children)
+{
+    Widget parent, hookobj;
+#ifdef XTHREADS
+    XtAppContext app;
+#endif
+
+    if (num_children == 0) return;
+    if (children[0] == NULL) {
+	XtWarningMsg(XtNinvalidChild, XtNxtManageChildren, XtCXtToolkitError,
+		     "null child passed to XtManageChildren",
+		     (String*)NULL, (Cardinal*)NULL);
+	return;
+    }
+#ifdef XTHREADS
+    app = XtWidgetToApplicationContext(children[0]);
+#endif
+    LOCK_APP(app);
+    parent = children[0]->core.parent;
+    if (parent->core.being_destroyed) {
+	UNLOCK_APP(app);
+	return;
+    }
+    ManageChildren(children, num_children, parent, (Boolean)False,
+		   XtNxtManageChildren);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(children[0]));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHmanageChildren;
+	call_data.widget = parent;
+	call_data.event_data = (XtPointer) children;
+	call_data.num_event_data = num_children;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtManageChildren */
+
+void XtManageChild(
+    Widget child)
+{
+    XtManageChildren(&child, (Cardinal) 1);
+} /* XtManageChild */
+
+
+void XtSetMappedWhenManaged(
+    Widget widget,
+    _XtBoolean mapped_when_managed)
+{
+    Widget hookobj;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (widget->core.mapped_when_managed == mapped_when_managed) {
+	UNLOCK_APP(app);
+	return;
+    }
+    widget->core.mapped_when_managed = mapped_when_managed;
+
+    hookobj = XtHooksOfDisplay(XtDisplay(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHsetMappedWhenManaged;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) (unsigned long) mapped_when_managed;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+
+    if (! XtIsManaged(widget)) {
+	UNLOCK_APP(app);
+	return;
+    }
+
+    if (mapped_when_managed) {
+	/* Didn't used to be mapped when managed.		*/
+	if (XtIsRealized(widget)) XtMapWidget(widget);
+    } else {
+	/* Used to be mapped when managed.			*/
+	if (XtIsRealized(widget)) XtUnmapWidget(widget);
+    }
+    UNLOCK_APP(app);
+} /* XtSetMappedWhenManaged */
+
+
+void XtChangeManagedSet(
+    WidgetList unmanage_children,
+    Cardinal num_unmanage,
+    XtDoChangeProc do_change_proc,
+    XtPointer client_data,
+    WidgetList manage_children,
+    Cardinal num_manage)
+{
+    WidgetList childp;
+    Widget parent;
+    int i;
+    Cardinal some_unmanaged;
+    Boolean call_out;
+    CompositeClassExtension ext;
+    XtAppContext app;
+    Widget hookobj;
+    XtChangeHookDataRec call_data;
+
+    if (num_unmanage == 0 && num_manage == 0)
+	return;
+
+    /* specification doesn't state that library will check for NULL in list */
+
+    childp = num_unmanage ? unmanage_children : manage_children;
+    app = XtWidgetToApplicationContext(*childp);
+    LOCK_APP(app);
+
+    parent = XtParent(*childp);
+    childp = unmanage_children;
+    for (i = num_unmanage; --i >= 0 && XtParent(*childp) == parent; childp++);
+    call_out = (i >= 0);
+    childp = manage_children;
+    for (i = num_manage;   --i >= 0 && XtParent(*childp) == parent; childp++);
+    if (call_out || i >= 0) {
+	XtAppWarningMsg(app, "ambiguousParent", XtNxtChangeManagedSet,
+			XtCXtToolkitError, "Not all children have same parent",
+			(String *)NULL, (Cardinal *)NULL);
+    }
+    if (! XtIsComposite(parent)) {
+	UNLOCK_APP(app);
+	XtAppErrorMsg(app, "invalidParent", XtNxtChangeManagedSet,
+		      XtCXtToolkitError,
+		      "Attempt to manage a child when parent is not Composite",
+		      (String *) NULL, (Cardinal *) NULL);
+    }
+    if (parent->core.being_destroyed) {
+	UNLOCK_APP(app);
+	return;
+    }
+
+    call_out = False;
+    if (do_change_proc) {
+	ext = (CompositeClassExtension)
+	    XtGetClassExtension(parent->core.widget_class,
+				XtOffsetOf(CompositeClassRec,
+					   composite_class.extension),
+				NULLQUARK, XtCompositeExtensionVersion,
+				sizeof(CompositeClassExtensionRec));
+	if (!ext || !ext->allows_change_managed_set)
+	    call_out = True;
+    }
+
+    UnmanageChildren(unmanage_children, num_unmanage, parent,
+		     &some_unmanaged, call_out, XtNxtChangeManagedSet);
+
+    hookobj = XtHooksOfDisplay(XtDisplay(parent));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	call_data.type = XtHunmanageSet;
+	call_data.widget = parent;
+	call_data.event_data = (XtPointer) unmanage_children;
+	call_data.num_event_data = num_unmanage;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer) &call_data);
+    }
+
+    if (do_change_proc)
+	(*do_change_proc)(parent, unmanage_children, &num_unmanage,
+			  manage_children, &num_manage, client_data);
+
+    call_out = (some_unmanaged && !call_out);
+    ManageChildren(manage_children, num_manage, parent, call_out,
+		   XtNxtChangeManagedSet);
+
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	call_data.type = XtHmanageSet;
+	call_data.event_data = (XtPointer) manage_children;
+	call_data.num_event_data = num_manage;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer) &call_data);
+    }
+    UNLOCK_APP(app);
+} /* XtChangeManagedSet */
diff --git a/libXt/src/NextEvent.c b/libXt/src/NextEvent.c
new file mode 100644
index 000000000..c696af336
--- /dev/null
+++ b/libXt/src/NextEvent.c
@@ -0,0 +1,1617 @@
+/* $Xorg: NextEvent.c,v 1.8 2001/02/09 02:03:55 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998, 2001  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.
+
+*/
+/* $XFree86: xc/lib/Xt/NextEvent.c,v 3.26 2002/06/04 21:55:42 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include <stdio.h>
+#include <errno.h>
+
+#ifdef __UNIXOS2__
+#include <sys/time.h>
+#endif
+
+static TimerEventRec* freeTimerRecs;
+static WorkProcRec* freeWorkRecs;
+static SignalEventRec* freeSignalRecs;
+
+/* Some systems running NTP daemons are known to return strange usec
+ * values from gettimeofday.
+ */
+
+#ifndef NEEDS_NTPD_FIXUP
+# if defined(sun) || defined(MOTOROLA) || (defined(__osf__) && defined(__alpha))
+#  define NEEDS_NTPD_FIXUP 1
+# else
+#  define NEEDS_NTPD_FIXUP 0
+# endif
+#endif
+
+#if NEEDS_NTPD_FIXUP
+#define FIXUP_TIMEVAL(t) { \
+	while ((t).tv_usec >= 1000000) { \
+	    (t).tv_usec -= 1000000; \
+	    (t).tv_sec++; \
+	} \
+	while ((t).tv_usec < 0) { \
+	    if ((t).tv_sec > 0) { \
+		(t).tv_usec += 1000000; \
+		(t).tv_sec--; \
+	    } else { \
+		(t).tv_usec = 0; \
+		break; \
+	    } \
+	}}
+#else
+#define FIXUP_TIMEVAL(t)
+#endif /*NEEDS_NTPD_FIXUP*/
+
+/*
+ * Private routines
+ */
+#define ADD_TIME(dest, src1, src2) { \
+	if(((dest).tv_usec = (src1).tv_usec + (src2).tv_usec) >= 1000000) {\
+	      (dest).tv_usec -= 1000000;\
+	      (dest).tv_sec = (src1).tv_sec + (src2).tv_sec + 1 ; \
+	} else { (dest).tv_sec = (src1).tv_sec + (src2).tv_sec ; \
+	   if(((dest).tv_sec >= 1) && (((dest).tv_usec <0))) { \
+	    (dest).tv_sec --;(dest).tv_usec += 1000000; } } }
+
+
+#define TIMEDELTA(dest, src1, src2) { \
+	if(((dest).tv_usec = (src1).tv_usec - (src2).tv_usec) < 0) {\
+	      (dest).tv_usec += 1000000;\
+	      (dest).tv_sec = (src1).tv_sec - (src2).tv_sec - 1;\
+	} else 	(dest).tv_sec = (src1).tv_sec - (src2).tv_sec;  }
+
+#define IS_AFTER(t1, t2) (((t2).tv_sec > (t1).tv_sec) \
+	|| (((t2).tv_sec == (t1).tv_sec)&& ((t2).tv_usec > (t1).tv_usec)))
+
+#define IS_AT_OR_AFTER(t1, t2) (((t2).tv_sec > (t1).tv_sec) \
+	|| (((t2).tv_sec == (t1).tv_sec)&& ((t2).tv_usec >= (t1).tv_usec)))
+
+#ifdef USE_POLL
+#ifndef XT_DEFAULT_FDLIST_SIZE
+#define XT_DEFAULT_FDLIST_SIZE 32
+#endif
+#endif
+
+static void AdjustHowLong (
+	unsigned long *howlong,
+	struct timeval *start_time)
+{
+	struct timeval new_time, time_spent, lstart_time;
+
+	lstart_time = *start_time;
+	X_GETTIMEOFDAY (&new_time);
+	FIXUP_TIMEVAL(new_time);
+	TIMEDELTA(time_spent, new_time, lstart_time);
+	if(*howlong <= (unsigned long)(time_spent.tv_sec*1000+time_spent.tv_usec/1000))
+	    *howlong = (unsigned long)0;  /* Timed out */
+	else
+	    *howlong -= (time_spent.tv_sec*1000+time_spent.tv_usec/1000);
+}
+
+typedef struct {
+    struct timeval cur_time;
+    struct timeval start_time;
+    struct timeval wait_time;
+    struct timeval new_time;
+    struct timeval time_spent;
+    struct timeval max_wait_time;
+#ifndef USE_POLL
+    struct timeval *wait_time_ptr;
+#else
+    int poll_wait;
+#endif
+} wait_times_t, *wait_times_ptr_t;
+
+static struct timeval  zero_time = { 0 , 0};
+#ifndef USE_POLL
+static fd_set zero_fd;
+#else
+#define X_BLOCK -1
+#define X_DONT_BLOCK 0
+#endif
+
+static void InitTimes (
+    Boolean block,
+    unsigned long* howlong,
+    wait_times_ptr_t wt)
+{
+    if (block) {
+	X_GETTIMEOFDAY (&wt->cur_time);
+	FIXUP_TIMEVAL(wt->cur_time);
+	wt->start_time = wt->cur_time;
+	if(howlong == NULL) { /* special case for ever */
+#ifndef USE_POLL
+	    wt->wait_time_ptr = NULL;
+#else
+	    wt->poll_wait = X_BLOCK;
+#endif
+	} else { /* block until at most */
+	    wt->max_wait_time.tv_sec = *howlong/1000;
+	    wt->max_wait_time.tv_usec = (*howlong %1000)*1000;
+#ifndef USE_POLL
+	    wt->wait_time_ptr = &wt->max_wait_time;
+#else
+	    wt->poll_wait = *howlong;
+#endif
+	}
+    } else {  /* don't block */
+	wt->max_wait_time = zero_time;
+#ifndef USE_POLL
+	wt->wait_time_ptr = &wt->max_wait_time;
+#else
+	wt->poll_wait = X_DONT_BLOCK;
+#endif
+    }
+}
+
+typedef struct {
+#ifndef USE_POLL
+    fd_set rmask, wmask, emask;
+    int nfds;
+#else
+    struct pollfd* fdlist;
+    struct pollfd* stack;
+    int fdlistlen, num_dpys;
+#endif
+} wait_fds_t, *wait_fds_ptr_t;
+
+static void InitFds (
+    XtAppContext app,
+    Boolean ignoreEvents,
+    Boolean ignoreInputs,
+    wait_fds_ptr_t wf)
+{
+    int ii;
+    app->rebuild_fdlist = FALSE;
+#ifndef USE_POLL
+    wf->nfds = app->fds.nfds;
+    if( !ignoreInputs ) {
+	wf->rmask = app->fds.rmask;
+	wf->wmask = app->fds.wmask;
+	wf->emask = app->fds.emask;
+     } else
+	wf->rmask = wf->wmask = wf->emask = zero_fd;
+
+     if (!ignoreEvents)
+	for (ii = 0; ii < app->count; ii++) {
+	    FD_SET (ConnectionNumber(app->list[ii]), &wf->rmask);
+	}
+#else
+#ifndef POLLRDNORM
+#define POLLRDNORM 0
+#endif
+
+#ifndef POLLRDBAND
+#define POLLRDBAND 0
+#endif
+
+#ifndef POLLWRNORM
+#define POLLWRNORM 0
+#endif
+
+#ifndef POLLWRBAND
+#define POLLWRBAND 0
+#endif
+
+#define XPOLL_READ (POLLIN|POLLRDNORM|POLLPRI|POLLRDBAND)
+#define XPOLL_WRITE (POLLOUT|POLLWRNORM|POLLWRBAND)
+#define XPOLL_EXCEPT 0
+
+    if (!ignoreEvents)
+	wf->fdlistlen = wf->num_dpys = app->count;
+    else
+	wf->fdlistlen = wf->num_dpys = 0;
+
+    if (!ignoreInputs && app->input_list != NULL) {
+	int ii;
+	for (ii = 0; ii < (int) app->input_max; ii++)
+	    if (app->input_list[ii] != NULL)
+		wf->fdlistlen++;
+    }
+
+    if (!wf->fdlist || wf->fdlist == wf->stack) {
+	wf->fdlist = (struct pollfd*)
+	    XtStackAlloc (sizeof (struct pollfd) * wf->fdlistlen, wf->stack);
+    } else {
+	wf->fdlist = (struct pollfd*)
+	    XtRealloc ((char*) wf->fdlist,
+		       sizeof (struct pollfd) * wf->fdlistlen);
+    }
+
+    if (wf->fdlistlen) {
+	struct pollfd* fdlp = wf->fdlist;
+	InputEvent* iep;
+
+	if (!ignoreEvents)
+	    for (ii = 0 ; ii < wf->num_dpys; ii++, fdlp++) {
+		fdlp->fd = ConnectionNumber (app->list[ii]);
+		fdlp->events = POLLIN;
+	    }
+	if (!ignoreInputs && app->input_list != NULL)
+	    for (ii = 0; ii < app->input_max; ii++)
+		if (app->input_list[ii] != NULL) {
+		    iep = app->input_list[ii];
+		    fdlp->fd = ii;
+		    fdlp->events = 0;
+		    for ( ; iep; iep = iep->ie_next) {
+			if (iep->ie_condition & XtInputReadMask)
+			    fdlp->events |= XPOLL_READ;
+			if (iep->ie_condition & XtInputWriteMask)
+			    fdlp->events |= XPOLL_WRITE;
+			if (iep->ie_condition & XtInputExceptMask)
+			    fdlp->events |= XPOLL_EXCEPT;
+		    }
+		    fdlp++;
+		}
+    }
+#endif
+}
+
+static void AdjustTimes (
+    XtAppContext app,
+    Boolean block,
+    unsigned long* howlong,
+    Boolean ignoreTimers,
+    wait_times_ptr_t wt)
+{
+    if (app->timerQueue != NULL && !ignoreTimers && block) {
+	if (IS_AFTER (wt->cur_time, app->timerQueue->te_timer_value)) {
+	    TIMEDELTA (wt->wait_time, app->timerQueue->te_timer_value, wt->cur_time);
+	    if (howlong == NULL || IS_AFTER (wt->wait_time, wt->max_wait_time))
+#ifndef USE_POLL
+		wt->wait_time_ptr = &wt->wait_time;
+	    else
+		wt->wait_time_ptr = &wt->max_wait_time;
+	} else
+	    wt->wait_time_ptr = &zero_time;
+    }
+#else
+		wt->poll_wait = wt->wait_time.tv_sec * 1000 + wt->wait_time.tv_usec / 1000;
+	    else
+		wt->poll_wait = wt->max_wait_time.tv_sec * 1000 + wt->max_wait_time.tv_usec / 1000;
+	} else
+	    wt->poll_wait = X_DONT_BLOCK;
+    }
+#endif
+}
+
+
+static int IoWait (
+    wait_times_ptr_t wt,
+    wait_fds_ptr_t wf)
+{
+#ifndef USE_POLL
+    return Select (wf->nfds, &wf->rmask, &wf->wmask, &wf->emask,
+		   wt->wait_time_ptr);
+#else
+    return poll (wf->fdlist, wf->fdlistlen, wt->poll_wait);
+#endif
+}
+
+
+static void FindInputs (
+    XtAppContext app,
+    wait_fds_ptr_t wf,
+    int nfds,
+    Boolean ignoreEvents,
+    Boolean ignoreInputs,
+    int* dpy_no,
+    int* found_input)
+{
+    XtInputMask condition;
+    InputEvent *ep;
+    int ii;
+#ifndef USE_POLL /* { check ready file descriptors block */
+#ifdef XTHREADS
+    fd_set rmask;
+#endif
+    int dd;
+    *dpy_no = -1;
+    *found_input = False;
+
+#ifdef XTHREADS
+    rmask = app->fds.rmask;
+    for (dd = app->count; dd-- > 0; )
+	FD_SET (ConnectionNumber (app->list[dd]), &rmask);
+#endif
+
+    for (ii = 0; ii < wf->nfds && nfds > 0; ii++) {
+	condition = 0;
+	if (FD_ISSET (ii, &wf->rmask)
+#ifdef XTHREADS
+	    && FD_ISSET (ii, &rmask)
+#endif
+	) {
+	    nfds--;
+	    if (!ignoreEvents) {
+		for (dd = 0; dd < app->count; dd++) {
+		    if (ii == ConnectionNumber (app->list[dd])) {
+			if (*dpy_no == -1) {
+			    if (XEventsQueued (app->list[dd], QueuedAfterReading ))
+				*dpy_no = dd;
+				/*
+				 * An error event could have arrived
+				 * without any real events, or events
+				 * could have been swallowed by Xlib,
+				 * or the connection may be broken.
+				 * We can't tell the difference, so
+				 * assume Xlib will eventually discover
+				 * a broken connection.
+				 */
+			}
+			goto ENDILOOP;
+		    }
+		}
+	    }
+	    condition = XtInputReadMask;
+	}
+	if (FD_ISSET (ii, &wf->wmask)
+#ifdef XTHREADS
+	    && FD_ISSET (ii, &app->fds.wmask)
+#endif
+	) {
+	    condition |= XtInputWriteMask;
+	    nfds--;
+	}
+	if (FD_ISSET (ii, &wf->emask)
+#ifdef XTHREADS
+	    && FD_ISSET (ii, &app->fds.emask)
+#endif
+	) {
+	    condition |= XtInputExceptMask;
+	    nfds--;
+	}
+	if (condition) {
+	    for (ep = app->input_list[ii]; ep; ep = ep->ie_next)
+		if (condition & ep->ie_condition) {
+		    /* make sure this input isn't already marked outstanding */
+		    InputEvent	*oq;
+		    for (oq = app->outstandingQueue; oq; oq = oq->ie_oq)
+			if (oq == ep)
+			    break;
+		    if (!oq)
+		    {
+			ep->ie_oq = app->outstandingQueue;
+			app->outstandingQueue = ep;
+		    }
+		}
+	    *found_input = True;
+	}
+ENDILOOP:   ;
+    } /* endfor */
+#else /* }{ */
+    struct pollfd* fdlp;
+
+    *dpy_no = -1;
+    *found_input = False;
+
+    if (!ignoreEvents) {
+	fdlp = wf->fdlist;
+	for (ii = 0; ii < wf->num_dpys; ii++, fdlp++) {
+	    if (*dpy_no == -1 && fdlp->revents & (POLLIN|POLLHUP|POLLERR) &&
+#ifdef XTHREADS
+		!(fdlp->revents & POLLNVAL) &&
+#endif
+		XEventsQueued (app->list[ii], QueuedAfterReading)) {
+		*dpy_no = ii;
+		break;
+	    }
+	}
+    }
+
+    if (!ignoreInputs) {
+	fdlp = &wf->fdlist[wf->num_dpys];
+	for (ii = wf->num_dpys; ii < wf->fdlistlen; ii++, fdlp++) {
+	    condition = 0;
+	    if (fdlp->revents) {
+		if (fdlp->revents & (XPOLL_READ|POLLHUP|POLLERR)
+#ifdef XTHREADS
+		    && !(fdlp->revents & POLLNVAL)
+#endif
+		)
+		    condition = XtInputReadMask;
+		if (fdlp->revents & XPOLL_WRITE)
+		    condition |= XtInputWriteMask;
+		if (fdlp->revents & XPOLL_EXCEPT)
+		    condition |= XtInputExceptMask;
+	    }
+	    if (condition) {
+		*found_input = True;
+		for (ep = app->input_list[fdlp->fd]; ep; ep = ep->ie_next)
+		    if (condition & ep->ie_condition) {
+			InputEvent	*oq;
+			/* make sure this input isn't already marked outstanding */
+			for (oq = app->outstandingQueue; oq; oq = oq->ie_oq)
+			    if (oq == ep)
+				break;
+			if (!oq)
+			{
+			    ep->ie_oq = app->outstandingQueue;
+			    app->outstandingQueue = ep;
+			}
+		    }
+	    }
+	}
+    }
+#endif /* } */
+}
+
+/*
+ * Routine to block in the toolkit.  This should be the only call to select.
+ *
+ * This routine returns when there is something to be done.
+ *
+ * Before calling this with ignoreInputs==False, app->outstandingQueue should
+ * be checked; this routine will not verify that an alternate input source
+ * has not already been enqueued.
+ *
+ *
+ * _XtWaitForSomething( appContext,
+ *                      ignoreEvent, ignoreTimers, ignoreInputs, ignoreSignals,
+ *			block, drop_lock, howlong)
+ * XtAppContext app;	     (Displays to check wait on)
+ *
+ * Boolean ignoreEvents;     (Don't return if XEvents are available
+ *                              Also implies forget XEvents exist)
+ *
+ * Boolean ignoreTimers;     (Ditto for timers)
+ *
+ * Boolean ignoreInputs;     (Ditto for input callbacks )
+ *
+ * Boolean ignoreSignals;    (Ditto for signals)
+ *
+ * Boolean block;	     (Okay to block)
+ *
+ * Boolean drop_lock         (drop lock before going into select/poll)
+ *
+ * TimeVal howlong;	     (howlong to wait for if blocking and not
+ *				doing Timers... Null means forever.
+ *				Maybe should mean shortest of both)
+ * Returns display for which input is available, if any
+ * and if ignoreEvents==False, else returns -1
+ *
+ * if ignoring everything && block=True && howlong=NULL, you'll have
+ * lots of time for coffee; better not try it!  In fact, it probably
+ * makes little sense to do this regardless of the value of howlong
+ * (bottom line is, we don't bother checking here).
+ *
+ * If drop_lock is FALSE, the app->lock->mutex is not unlocked before
+ * entering select/poll. It is illegal for drop_lock to be FALSE if
+ * ignoreTimers, ignoreInputs, or ignoreSignals is FALSE.
+ */
+int _XtWaitForSomething(
+    XtAppContext app,
+    _XtBoolean ignoreEvents,
+    _XtBoolean ignoreTimers,
+    _XtBoolean ignoreInputs,
+    _XtBoolean ignoreSignals,
+    _XtBoolean block,
+#ifdef XTHREADS
+    _XtBoolean drop_lock,
+#endif
+    unsigned long *howlong)
+{
+    wait_times_t wt;
+    wait_fds_t wf;
+    int nfds, dpy_no, found_input, dd;
+#ifdef XTHREADS
+    Boolean push_thread = TRUE;
+    Boolean pushed_thread = FALSE;
+    int level = 0;
+#endif
+#ifdef USE_POLL
+    struct pollfd fdlist[XT_DEFAULT_FDLIST_SIZE];
+#endif
+
+#ifdef XTHREADS
+    /* assert ((ignoreTimers && ignoreInputs && ignoreSignals) || drop_lock); */
+    /* If not multi-threaded, never drop lock */
+    if (app->lock == (ThreadAppProc) NULL)
+	drop_lock = FALSE;
+#endif
+
+    InitTimes (block, howlong, &wt);
+
+#ifdef USE_POLL
+    wf.fdlist = NULL;
+    wf.stack = fdlist;
+    wf.fdlistlen = wf.num_dpys = 0;
+#endif
+
+WaitLoop:
+    app->rebuild_fdlist = TRUE;
+
+    while (1) {
+	AdjustTimes (app, block, howlong, ignoreTimers, &wt);
+
+	if (block && app->block_hook_list) {
+	    BlockHook hook;
+	    for (hook = app->block_hook_list;
+		 hook != NULL;
+		 hook = hook->next)
+		(*hook->proc) (hook->closure);
+
+	    if (!ignoreEvents)
+		/* see if the hook(s) generated any protocol */
+		for (dd = 0; dd < app->count; dd++)
+		    if (XEventsQueued(app->list[dd], QueuedAlready)) {
+#ifdef USE_POLL
+			XtStackFree ((XtPointer) wf.fdlist, fdlist);
+#endif
+			return dd;
+		    }
+	}
+
+	if (app->rebuild_fdlist)
+	    InitFds (app, ignoreEvents, ignoreInputs, &wf);
+
+#ifdef XTHREADS /* { */
+	if (drop_lock) {
+	    YIELD_APP_LOCK(app, &push_thread, &pushed_thread, &level);
+	    nfds = IoWait (&wt, &wf);
+	    RESTORE_APP_LOCK(app, level, &pushed_thread);
+	} else
+#endif /* } */
+	nfds = IoWait (&wt, &wf);
+	if (nfds == -1) {
+	    /*
+	     *  interrupt occured recalculate time value and wait again.
+	     */
+	    if (errno == EINTR || errno == EAGAIN) {
+		if (errno == EAGAIN) {
+		    errno = 0;  /* errno is not self reseting */
+		    continue;
+		}
+	        errno = 0;  /* errno is not self reseting */
+
+		/* was it interrupted by a signal that we care about? */
+		if (!ignoreSignals && app->signalQueue != NULL) {
+		    SignalEventRec *se_ptr = app->signalQueue;
+		    while (se_ptr != NULL) {
+			if (se_ptr->se_notice) {
+			    if (block && howlong != NULL)
+				AdjustHowLong (howlong, &wt.start_time);
+#ifdef USE_POLL
+			    XtStackFree ((XtPointer) wf.fdlist, fdlist);
+#endif
+			    return -1;
+			}
+			se_ptr = se_ptr->se_next;
+		    }
+		}
+
+		if (!ignoreEvents)
+		    /* get Xlib to detect a bad connection */
+		    for (dd = 0; dd < app->count; dd++)
+			if (XEventsQueued(app->list[dd], QueuedAfterReading)) {
+#ifdef USE_POLL
+			    XtStackFree ((XtPointer) wf.fdlist, fdlist);
+#endif
+			    return dd;
+			}
+
+		if (block) {
+#ifndef USE_POLL
+		    if (wt.wait_time_ptr == NULL)
+#else
+		    if (wt.poll_wait == X_BLOCK)
+#endif
+			continue;
+		    X_GETTIMEOFDAY (&wt.new_time);
+		    FIXUP_TIMEVAL (wt.new_time);
+		    TIMEDELTA (wt.time_spent, wt.new_time, wt.cur_time);
+		    wt.cur_time = wt.new_time;
+#ifndef USE_POLL
+		    if (IS_AFTER (wt.time_spent, *wt.wait_time_ptr)) {
+			TIMEDELTA (wt.wait_time, *wt.wait_time_ptr, wt.time_spent);
+			wt.wait_time_ptr = &wt.wait_time;
+			continue;
+		    } else
+#else
+		    if ((wt.time_spent.tv_sec * 1000 + wt.time_spent.tv_usec / 1000) < wt.poll_wait) {
+			wt.poll_wait -= (wt.time_spent.tv_sec * 1000 + wt.time_spent.tv_usec / 1000);
+			continue;
+		    } else
+#endif
+			nfds = 0;
+		}
+	    } else {
+		char Errno[12];
+		String param = Errno;
+		Cardinal param_count = 1;
+
+		sprintf( Errno, "%d", errno);
+		XtAppWarningMsg(app, "communicationError","select",
+			XtCXtToolkitError,"Select failed; error code %s",
+			&param, &param_count);
+		continue;
+	    }
+	} /* timed out or input available */
+	break;
+    }
+
+    if (nfds == 0) {
+	/* Timed out */
+	if (howlong)
+	    *howlong = (unsigned long)0;
+#ifdef USE_POLL
+	XtStackFree ((XtPointer) wf.fdlist, fdlist);
+#endif
+	return -1;
+    }
+
+    if (block && howlong != NULL)
+	AdjustHowLong (howlong, &wt.start_time);
+
+    if (ignoreInputs && ignoreEvents) {
+#ifdef USE_POLL
+	XtStackFree ((XtPointer) wf.fdlist, fdlist);
+#endif
+	return -1;
+    } else
+	FindInputs (app, &wf, nfds,
+		    ignoreEvents, ignoreInputs,
+		    &dpy_no, &found_input);
+
+    if (dpy_no >= 0 || found_input) {
+#ifdef USE_POLL
+	XtStackFree ((XtPointer) wf.fdlist, fdlist);
+#endif
+	return dpy_no;
+    }
+    goto WaitLoop;
+}
+
+#define IeCallProc(ptr) \
+    (*ptr->ie_proc) (ptr->ie_closure, &ptr->ie_source, (XtInputId*)&ptr);
+
+#define TeCallProc(ptr) \
+    (*ptr->te_proc) (ptr->te_closure, (XtIntervalId*)&ptr);
+
+#define SeCallProc(ptr) \
+    (*ptr->se_proc) (ptr->se_closure, (XtSignalId*)&ptr);
+
+/*
+ * Public Routines
+ */
+
+XtIntervalId XtAddTimeOut(
+	unsigned long interval,
+	XtTimerCallbackProc proc,
+	XtPointer closure)
+{
+	return XtAppAddTimeOut(_XtDefaultAppContext(),
+		interval, proc, closure);
+}
+
+static void QueueTimerEvent(
+    XtAppContext app,
+    TimerEventRec *ptr)
+{
+        TimerEventRec *t,**tt;
+        tt = &app->timerQueue;
+        t  = *tt;
+        while (t != NULL &&
+                IS_AFTER(t->te_timer_value, ptr->te_timer_value)) {
+          tt = &t->te_next;
+          t  = *tt;
+         }
+         ptr->te_next = t;
+         *tt = ptr;
+}
+
+XtIntervalId XtAppAddTimeOut(
+	XtAppContext app,
+	unsigned long interval,
+	XtTimerCallbackProc proc,
+	XtPointer closure)
+{
+	TimerEventRec *tptr;
+	struct timeval current_time;
+
+	LOCK_APP(app);
+	LOCK_PROCESS;
+	if (freeTimerRecs) {
+	    tptr = freeTimerRecs;
+	    freeTimerRecs = tptr->te_next;
+	}
+	else tptr = XtNew(TimerEventRec);
+	UNLOCK_PROCESS;
+
+	tptr->te_next = NULL;
+	tptr->te_closure = closure;
+	tptr->te_proc = proc;
+	tptr->app = app;
+	tptr->te_timer_value.tv_sec = interval/1000;
+	tptr->te_timer_value.tv_usec = (interval%1000)*1000;
+        X_GETTIMEOFDAY (&current_time);
+	FIXUP_TIMEVAL(current_time);
+        ADD_TIME(tptr->te_timer_value,tptr->te_timer_value,current_time);
+	QueueTimerEvent(app, tptr);
+	UNLOCK_APP(app);
+	return( (XtIntervalId) tptr);
+}
+
+void  XtRemoveTimeOut(
+	XtIntervalId id)
+{
+	TimerEventRec *t, *last, *tid = (TimerEventRec *) id;
+	XtAppContext app = tid->app;
+
+	/* find it */
+	LOCK_APP(app);
+	for(t = app->timerQueue, last = NULL;
+	    t != NULL && t != tid;
+	    t = t->te_next) last = t;
+
+	if (t == NULL) {
+	    UNLOCK_APP(app);
+	    return; /* couldn't find it */
+	}
+	if(last == NULL) { /* first one on the list */
+	    app->timerQueue = t->te_next;
+	} else last->te_next = t->te_next;
+
+	LOCK_PROCESS;
+	t->te_next = freeTimerRecs;
+	freeTimerRecs = t;
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+}
+
+XtWorkProcId XtAddWorkProc(
+	XtWorkProc proc,
+	XtPointer closure)
+{
+	return XtAppAddWorkProc(_XtDefaultAppContext(), proc, closure);
+}
+
+XtWorkProcId XtAppAddWorkProc(
+	XtAppContext app,
+	XtWorkProc proc,
+	XtPointer closure)
+{
+	WorkProcRec *wptr;
+
+	LOCK_APP(app);
+	LOCK_PROCESS;
+	if (freeWorkRecs) {
+	    wptr = freeWorkRecs;
+	    freeWorkRecs = wptr->next;
+	} else wptr = XtNew(WorkProcRec);
+	UNLOCK_PROCESS;
+	wptr->next = app->workQueue;
+	wptr->closure = closure;
+	wptr->proc = proc;
+	wptr->app = app;
+	app->workQueue = wptr;
+	UNLOCK_APP(app);
+	return (XtWorkProcId) wptr;
+}
+
+void  XtRemoveWorkProc(
+	XtWorkProcId id)
+{
+	WorkProcRec *wid= (WorkProcRec *) id, *w, *last;
+	XtAppContext app = wid->app;
+
+	LOCK_APP(app);
+	/* find it */
+	for(w = app->workQueue, last = NULL;
+	    w != NULL && w != wid; w = w->next) last = w;
+
+	if (w == NULL) {
+	    UNLOCK_APP(app);
+	    return; /* couldn't find it */
+	}
+
+	if(last == NULL) app->workQueue = w->next;
+	else last->next = w->next;
+	LOCK_PROCESS;
+	w->next = freeWorkRecs;
+	freeWorkRecs = w;
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+}
+
+XtSignalId XtAddSignal(
+	XtSignalCallbackProc proc,
+	XtPointer closure)
+{
+	return XtAppAddSignal(_XtDefaultAppContext(), proc, closure);
+}
+
+XtSignalId XtAppAddSignal(
+	XtAppContext app,
+	XtSignalCallbackProc proc,
+	XtPointer closure)
+{
+	SignalEventRec *sptr;
+
+	LOCK_APP(app);
+	LOCK_PROCESS;
+	if (freeSignalRecs) {
+	    sptr = freeSignalRecs;
+	    freeSignalRecs = sptr->se_next;
+	} else
+	    sptr = XtNew(SignalEventRec);
+	UNLOCK_PROCESS;
+	sptr->se_next = app->signalQueue;
+	sptr->se_closure = closure;
+	sptr->se_proc = proc;
+	sptr->app = app;
+	sptr->se_notice = FALSE;
+	app->signalQueue = sptr;
+	UNLOCK_APP(app);
+	return (XtSignalId) sptr;
+}
+
+void XtRemoveSignal(
+	XtSignalId id)
+{
+	SignalEventRec *sid = (SignalEventRec*) id, *s, *last = NULL;
+	XtAppContext app = sid->app;
+
+	LOCK_APP(app);
+	for (s = app->signalQueue; s != NULL && s != sid; s = s->se_next)
+	    last = s;
+	if (s == NULL) {
+	    UNLOCK_APP(app);
+	    return;
+	}
+	if (last == NULL)
+	    app->signalQueue = s->se_next;
+	else
+	    last->se_next = s->se_next;
+	LOCK_PROCESS;
+	s->se_next = freeSignalRecs;
+	freeSignalRecs = s;
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+}
+
+void XtNoticeSignal(
+	XtSignalId id)
+{
+	/*
+	 * It would be overkill to lock the app to set this flag.
+	 * In the worst case, 2..n threads would be modifying this
+	 * flag. The last one wins. Since signals occur asynchronously
+	 * anyway, this can occur with or without threads.
+	 *
+	 * The other issue is that thread t1 sets the flag in a
+	 * signalrec that has been deleted in thread t2. We rely
+	 * on a detail of the implementation, i.e. free'd signalrecs
+	 * aren't really free'd, they're just moved to a list of
+	 * free recs, so deref'ing one won't hurt anything.
+	 *
+	 * Lastly, and perhaps most importantly, since POSIX threads
+	 * says that the handling of asynchronous signals in a synchronous
+	 * threads environment is undefined. Therefor it would be an
+	 * error for both signals and threads to be in use in the same
+	 * program.
+	 */
+	SignalEventRec *sid = (SignalEventRec*) id;
+	sid->se_notice = TRUE;
+}
+
+XtInputId XtAddInput(
+	int source,
+	XtPointer Condition,
+	XtInputCallbackProc proc,
+	XtPointer closure)
+{
+	return XtAppAddInput(_XtDefaultAppContext(),
+		source, Condition, proc, closure);
+}
+
+XtInputId XtAppAddInput(
+	XtAppContext app,
+	int source,
+	XtPointer Condition,
+	XtInputCallbackProc proc,
+	XtPointer closure)
+{
+	InputEvent* sptr;
+	XtInputMask condition = (XtInputMask) Condition;
+
+	LOCK_APP(app);
+	if (!condition ||
+	    condition & ~(XtInputReadMask|XtInputWriteMask|XtInputExceptMask))
+	    XtAppErrorMsg(app,"invalidParameter","xtAddInput",XtCXtToolkitError,
+			  "invalid condition passed to XtAppAddInput",
+			  (String *)NULL, (Cardinal *)NULL);
+
+	if (app->input_max <= source) {
+	    Cardinal n = source + 1;
+	    int ii;
+	    app->input_list = (InputEvent**)XtRealloc((char*) app->input_list,
+						      n * sizeof(InputEvent*));
+	    for (ii = app->input_max; ii < (int) n; ii++)
+		app->input_list[ii] = (InputEvent*) NULL;
+	    app->input_max = n;
+	}
+	sptr = XtNew(InputEvent);
+	sptr->ie_proc = proc;
+	sptr->ie_closure = closure;
+	sptr->app = app;
+	sptr->ie_oq = NULL;
+	sptr->ie_source = source;
+	sptr->ie_condition = condition;
+	sptr->ie_next = app->input_list[source];
+	app->input_list[source] = sptr;
+
+#ifndef USE_POLL
+	if (condition & XtInputReadMask)   FD_SET(source, &app->fds.rmask);
+	if (condition & XtInputWriteMask)  FD_SET(source, &app->fds.wmask);
+	if (condition & XtInputExceptMask) FD_SET(source, &app->fds.emask);
+
+	if (app->fds.nfds < (source+1)) app->fds.nfds = source+1;
+#else
+	if (sptr->ie_next == NULL)
+	    app->fds.nfds++;
+#endif
+	app->input_count++;
+	app->rebuild_fdlist = TRUE;
+	UNLOCK_APP(app);
+	return((XtInputId)sptr);
+}
+
+void XtRemoveInput(
+	register XtInputId  id)
+{
+  	register InputEvent *sptr, *lptr;
+	XtAppContext app = ((InputEvent *)id)->app;
+	register int source = ((InputEvent *)id)->ie_source;
+	Boolean found = False;
+
+	LOCK_APP(app);
+	sptr = app->outstandingQueue;
+	lptr = NULL;
+	for (; sptr != NULL; sptr = sptr->ie_oq) {
+	    if (sptr == (InputEvent *)id) {
+		if (lptr == NULL) app->outstandingQueue = sptr->ie_oq;
+		else lptr->ie_oq = sptr->ie_oq;
+	    }
+	    lptr = sptr;
+	}
+
+	if(app->input_list && (sptr = app->input_list[source]) != NULL) {
+		for( lptr = NULL ; sptr; sptr = sptr->ie_next ){
+			if(sptr == (InputEvent *) id) {
+#ifndef USE_POLL
+				XtInputMask condition = 0;
+#endif
+				if(lptr == NULL) {
+				    app->input_list[source] = sptr->ie_next;
+				} else {
+				    lptr->ie_next = sptr->ie_next;
+				}
+#ifndef USE_POLL
+				for (lptr = app->input_list[source];
+				     lptr; lptr = lptr->ie_next)
+				    condition |= lptr->ie_condition;
+				if ((sptr->ie_condition & XtInputReadMask) &&
+				    !(condition & XtInputReadMask))
+				   FD_CLR(source, &app->fds.rmask);
+				if ((sptr->ie_condition & XtInputWriteMask) &&
+				    !(condition & XtInputWriteMask))
+				   FD_CLR(source, &app->fds.wmask);
+				if ((sptr->ie_condition & XtInputExceptMask) &&
+				    !(condition & XtInputExceptMask))
+				   FD_CLR(source, &app->fds.emask);
+#endif
+				XtFree((char *) sptr);
+				found = True;
+				break;
+			}
+			lptr = sptr;
+		}
+	}
+
+	if (found) {
+	    app->input_count--;
+#ifdef USE_POLL
+	    if (app->input_list[source] == NULL)
+		app->fds.nfds--;
+#endif
+	    app->rebuild_fdlist = TRUE;
+	} else
+	    XtAppWarningMsg(app, "invalidProcedure","inputHandler",
+			    XtCXtToolkitError,
+			    "XtRemoveInput: Input handler not found",
+			    (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+}
+
+void _XtRemoveAllInputs(
+    XtAppContext app)
+{
+    int i;
+    for (i = 0; i < app->input_max; i++) {
+	InputEvent* ep = app->input_list[i];
+	while (ep) {
+	    InputEvent *next = ep->ie_next;
+	    XtFree( (char*)ep );
+	    ep = next;
+	}
+    }
+    XtFree((char *) app->input_list);
+}
+
+/* Do alternate input and timer callbacks if there are any */
+
+static void DoOtherSources(
+	XtAppContext app)
+{
+	TimerEventRec *te_ptr;
+	InputEvent *ie_ptr;
+	struct timeval  cur_time;
+
+#define DrainQueue() \
+	for (ie_ptr = app->outstandingQueue; ie_ptr != NULL;) { \
+	    app->outstandingQueue = ie_ptr->ie_oq;		\
+	    ie_ptr ->ie_oq = NULL;				\
+	    IeCallProc(ie_ptr);					\
+	    ie_ptr = app->outstandingQueue;			\
+	}
+/*enddef*/
+	DrainQueue();
+	if (app->input_count > 0) {
+	    /* Call _XtWaitForSomething to get input queued up */
+	    (void) _XtWaitForSomething (app,
+					TRUE, TRUE, FALSE, TRUE,
+					FALSE,
+#ifdef XTHREADS
+					TRUE,
+#endif
+					(unsigned long *)NULL);
+	    DrainQueue();
+	}
+	if (app->timerQueue != NULL) {	/* check timeout queue */
+	    X_GETTIMEOFDAY (&cur_time);
+	    FIXUP_TIMEVAL(cur_time);
+	    while(IS_AT_OR_AFTER (app->timerQueue->te_timer_value, cur_time)) {
+		te_ptr = app->timerQueue;
+		app->timerQueue = te_ptr->te_next;
+		te_ptr->te_next = NULL;
+		if (te_ptr->te_proc != NULL)
+		    TeCallProc(te_ptr);
+		LOCK_PROCESS;
+		te_ptr->te_next = freeTimerRecs;
+		freeTimerRecs = te_ptr;
+		UNLOCK_PROCESS;
+		if (app->timerQueue == NULL) break;
+	    }
+	}
+	if (app->signalQueue != NULL) {
+	    SignalEventRec *se_ptr = app->signalQueue;
+	    while (se_ptr != NULL) {
+		if (se_ptr->se_notice) {
+		    se_ptr->se_notice = FALSE;
+		    if (se_ptr->se_proc != NULL)
+			SeCallProc(se_ptr);
+		}
+		se_ptr = se_ptr->se_next;
+	    }
+	}
+#undef DrainQueue
+}
+
+/* If there are any work procs, call them.  Return whether we did so */
+
+static Boolean CallWorkProc(
+	XtAppContext app)
+{
+	register WorkProcRec *w = app->workQueue;
+	Boolean delete;
+
+	if (w == NULL) return FALSE;
+
+	app->workQueue = w->next;
+
+	delete = (*(w->proc)) (w->closure);
+
+	if (delete) {
+	    LOCK_PROCESS;
+	    w->next = freeWorkRecs;
+	    freeWorkRecs = w;
+	    UNLOCK_PROCESS;
+	}
+	else {
+	    w->next = app->workQueue;
+	    app->workQueue = w;
+	}
+	return TRUE;
+}
+
+/*
+ * XtNextEvent()
+ * return next event;
+ */
+
+void XtNextEvent(
+	XEvent *event)
+{
+	XtAppNextEvent(_XtDefaultAppContext(), event);
+}
+
+void _XtRefreshMapping(
+    XEvent* event,
+    _XtBoolean dispatch)
+{
+    XtPerDisplay pd;
+
+    LOCK_PROCESS;
+    pd = _XtGetPerDisplay(event->xmapping.display);
+    if (event->xmapping.request != MappingPointer &&
+	pd && pd->keysyms && (event->xmapping.serial >= pd->keysyms_serial))
+	_XtBuildKeysymTables( event->xmapping.display, pd );
+    XRefreshKeyboardMapping(&event->xmapping);
+    if (dispatch && pd && pd->mapping_callbacks)
+	XtCallCallbackList((Widget) NULL,
+			   (XtCallbackList)pd->mapping_callbacks,
+			   (XtPointer)event );
+    UNLOCK_PROCESS;
+}
+
+void XtAppNextEvent(
+	XtAppContext app,
+	XEvent *event)
+{
+    int i, d;
+
+    LOCK_APP(app);
+    for (;;) {
+	if (app->count == 0)
+	    DoOtherSources(app);
+	else {
+	    for (i = 1; i <= app->count; i++) {
+		d = (i + app->last) % app->count;
+		if (d == 0) DoOtherSources(app);
+		if (XEventsQueued(app->list[d], QueuedAfterReading))
+		    goto GotEvent;
+	    }
+	    for (i = 1; i <= app->count; i++) {
+		d = (i + app->last) % app->count;
+		if (XEventsQueued(app->list[d], QueuedAfterFlush))
+		    goto GotEvent;
+	    }
+	}
+
+	/* We're ready to wait...if there is a work proc, call it */
+	if (CallWorkProc(app)) continue;
+
+	d = _XtWaitForSomething (app,
+				 FALSE, FALSE, FALSE, FALSE,
+				 TRUE,
+#ifdef XTHREADS
+				 TRUE,
+#endif
+				 (unsigned long *) NULL);
+
+	if (d != -1) {
+	  GotEvent:
+	    XNextEvent (app->list[d], event);
+#ifdef XTHREADS
+	    /* assert(app->list[d] == event->xany.display); */
+#endif
+	    app->last = d;
+	    if (event->xany.type == MappingNotify)
+		_XtRefreshMapping(event, False);
+	    UNLOCK_APP(app);
+	    return;
+	}
+
+    } /* for */
+}
+
+void XtProcessEvent(
+	XtInputMask mask)
+{
+	XtAppProcessEvent(_XtDefaultAppContext(), mask);
+}
+
+void XtAppProcessEvent(
+	XtAppContext app,
+	XtInputMask mask)
+{
+	int i, d;
+	XEvent event;
+	struct timeval cur_time;
+
+	LOCK_APP(app);
+	if (mask == 0) {
+	    UNLOCK_APP(app);
+	    return;
+	}
+
+	for (;;) {
+
+	    if (mask & XtIMSignal && app->signalQueue != NULL) {
+		SignalEventRec *se_ptr = app->signalQueue;
+		while (se_ptr != NULL) {
+		    if (se_ptr->se_notice) {
+			se_ptr->se_notice = FALSE;
+			SeCallProc(se_ptr);
+			UNLOCK_APP(app);
+			return;
+		    }
+		    se_ptr = se_ptr->se_next;
+		}
+	    }
+
+	    if (mask & XtIMTimer && app->timerQueue != NULL) {
+		X_GETTIMEOFDAY (&cur_time);
+		FIXUP_TIMEVAL(cur_time);
+		if (IS_AT_OR_AFTER(app->timerQueue->te_timer_value, cur_time)){
+		    TimerEventRec *te_ptr = app->timerQueue;
+		    app->timerQueue = app->timerQueue->te_next;
+		    te_ptr->te_next = NULL;
+                    if (te_ptr->te_proc != NULL)
+		        TeCallProc(te_ptr);
+		    LOCK_PROCESS;
+		    te_ptr->te_next = freeTimerRecs;
+		    freeTimerRecs = te_ptr;
+		    UNLOCK_PROCESS;
+		    UNLOCK_APP(app);
+		    return;
+		}
+	    }
+
+	    if (mask & XtIMAlternateInput) {
+		if (app->input_count > 0 && app->outstandingQueue == NULL) {
+		    /* Call _XtWaitForSomething to get input queued up */
+		    (void) _XtWaitForSomething (app,
+						TRUE, TRUE, FALSE, TRUE,
+						FALSE,
+#ifdef XTHREADS
+						TRUE,
+#endif
+						(unsigned long *)NULL);
+		}
+		if (app->outstandingQueue != NULL) {
+		    InputEvent *ie_ptr = app->outstandingQueue;
+		    app->outstandingQueue = ie_ptr->ie_oq;
+		    ie_ptr->ie_oq = NULL;
+		    IeCallProc(ie_ptr);
+		    UNLOCK_APP(app);
+		    return;
+		}
+	    }
+
+	    if (mask & XtIMXEvent) {
+		for (i = 1; i <= app->count; i++) {
+		    d = (i + app->last) % app->count;
+		    if (XEventsQueued(app->list[d], QueuedAfterReading))
+			goto GotEvent;
+		}
+		for (i = 1; i <= app->count; i++) {
+		    d = (i + app->last) % app->count;
+		    if (XEventsQueued(app->list[d], QueuedAfterFlush))
+			goto GotEvent;
+		}
+	    }
+
+	    /* Nothing to do...wait for something */
+
+	    if (CallWorkProc(app)) continue;
+
+	    d = _XtWaitForSomething (app,
+				    (mask & XtIMXEvent ? FALSE : TRUE),
+				    (mask & XtIMTimer ? FALSE : TRUE),
+				    (mask & XtIMAlternateInput ? FALSE : TRUE),
+				    (mask & XtIMSignal ? FALSE : TRUE),
+				    TRUE,
+#ifdef XTHREADS
+				    TRUE,
+#endif
+				    (unsigned long *) NULL);
+
+	    if (mask & XtIMXEvent && d != -1) {
+	      GotEvent:
+		XNextEvent(app->list[d], &event);
+#ifdef XTHREADS
+		/* assert(app->list[d] == event.xany.display); */
+#endif
+		app->last = d;
+		if (event.xany.type == MappingNotify) {
+		    _XtRefreshMapping(&event, False);
+		}
+		XtDispatchEvent(&event);
+		UNLOCK_APP(app);
+		return;
+	    }
+
+	}
+}
+
+Boolean XtPending(void)
+{
+	return (XtAppPending(_XtDefaultAppContext()) != 0);
+}
+
+XtInputMask XtAppPending(
+	XtAppContext app)
+{
+	struct timeval cur_time;
+	int d;
+	XtInputMask ret = 0;
+
+/*
+ * Check for pending X events
+ */
+	LOCK_APP(app);
+	for (d = 0; d < app->count; d++) {
+	    if (XEventsQueued(app->list[d], QueuedAfterReading)) {
+		ret = XtIMXEvent;
+		break;
+	    }
+	}
+	if (ret == 0) {
+	    for (d = 0; d < app->count; d++) {
+		if (XEventsQueued(app->list[d], QueuedAfterFlush)) {
+		    ret = XtIMXEvent;
+		    break;
+		}
+	    }
+	}
+
+	if (app->signalQueue != NULL) {
+	    SignalEventRec *se_ptr = app->signalQueue;
+	    while (se_ptr != NULL) {
+		if (se_ptr->se_notice) {
+		    ret |= XtIMSignal;
+		    break;
+		}
+		se_ptr = se_ptr->se_next;
+	    }
+	}
+
+/*
+ * Check for pending alternate input
+ */
+	if (app->timerQueue != NULL) {	/* check timeout queue */
+	    X_GETTIMEOFDAY (&cur_time);
+	    FIXUP_TIMEVAL(cur_time);
+	    if ((IS_AT_OR_AFTER(app->timerQueue->te_timer_value, cur_time))  &&
+                (app->timerQueue->te_proc != NULL)) {
+		ret |= XtIMTimer;
+	    }
+	}
+
+	if (app->outstandingQueue != NULL) ret |= XtIMAlternateInput;
+	else {
+	    /* This won't cause a wait, but will enqueue any input */
+
+	    if(_XtWaitForSomething (app,
+				    FALSE, TRUE, FALSE, TRUE,
+				    FALSE,
+#ifdef XTHREADS
+				    TRUE,
+#endif
+				    (unsigned long *) NULL) != -1)
+		ret |= XtIMXEvent;
+	    if (app->outstandingQueue != NULL) ret |= XtIMAlternateInput;
+	}
+	UNLOCK_APP(app);
+	return ret;
+}
+
+/* Peek at alternate input and timer callbacks if there are any */
+
+static Boolean PeekOtherSources(
+	XtAppContext app)
+{
+	struct timeval  cur_time;
+
+	if (app->outstandingQueue != NULL) return TRUE;
+
+	if (app->signalQueue != NULL) {
+	    SignalEventRec *se_ptr = app->signalQueue;
+	    while (se_ptr != NULL) {
+		if (se_ptr->se_notice)
+		    return TRUE;
+		se_ptr = se_ptr->se_next;
+	    }
+	}
+
+	if (app->input_count > 0) {
+	    /* Call _XtWaitForSomething to get input queued up */
+	    (void) _XtWaitForSomething (app,
+					TRUE, TRUE, FALSE, TRUE,
+					FALSE,
+#ifdef XTHREADS
+					TRUE,
+#endif
+					(unsigned long *)NULL);
+	    if (app->outstandingQueue != NULL) return TRUE;
+	}
+
+	if (app->timerQueue != NULL) {	/* check timeout queue */
+	    X_GETTIMEOFDAY (&cur_time);
+	    FIXUP_TIMEVAL(cur_time);
+	    if (IS_AT_OR_AFTER (app->timerQueue->te_timer_value, cur_time))
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+Boolean XtPeekEvent(
+	XEvent *event)
+{
+	return XtAppPeekEvent(_XtDefaultAppContext(), event);
+}
+
+Boolean XtAppPeekEvent_SkipTimer;
+
+Boolean XtAppPeekEvent(
+	XtAppContext app,
+	XEvent *event)
+{
+	int i, d;
+	Boolean foundCall = FALSE;
+
+	LOCK_APP(app);
+	for (i = 1; i <= app->count; i++) {
+	    d = (i + app->last) % app->count;
+	    if (d == 0) foundCall = PeekOtherSources(app);
+	    if (XEventsQueued(app->list[d], QueuedAfterReading))
+		goto GotEvent;
+	}
+	for (i = 1; i <= app->count; i++) {
+	    d = (i + app->last) % app->count;
+	    if (XEventsQueued(app->list[d], QueuedAfterFlush))
+		goto GotEvent;
+	}
+
+	if (foundCall) {
+	    event->xany.type = 0;
+	    event->xany.display = NULL;
+	    event->xany.window = 0;
+	    UNLOCK_APP(app);
+	    return FALSE;
+	}
+
+	while (1) {
+		d = _XtWaitForSomething (app,
+			FALSE, FALSE, FALSE, FALSE,
+			TRUE,
+#ifdef XTHREADS
+			TRUE,
+#endif
+			(unsigned long *) NULL);
+
+		if (d != -1) {  /* event */
+			GotEvent:
+			XPeekEvent(app->list[d], event);
+			app->last = (d == 0 ? app->count : d) - 1;
+			UNLOCK_APP(app);
+			return TRUE;
+		}
+		else {  /* input or timer or signal */
+			/*
+			 * Check to see why a -1 was returned, if a timer expired,
+			 * call it and block some more
+			 */
+			if ((app->timerQueue != NULL) && ! XtAppPeekEvent_SkipTimer) {  /* timer */
+				struct timeval cur_time;
+				Bool did_timer = False;
+
+				X_GETTIMEOFDAY (&cur_time);
+				FIXUP_TIMEVAL(cur_time);
+				while (IS_AT_OR_AFTER(app->timerQueue->te_timer_value, cur_time)) {
+					TimerEventRec *te_ptr = app->timerQueue;
+					app->timerQueue = app->timerQueue->te_next;
+					te_ptr->te_next = NULL;
+					if (te_ptr->te_proc != NULL) {
+					    TeCallProc(te_ptr);
+					    did_timer = True;
+					}
+					LOCK_PROCESS;
+					te_ptr->te_next = freeTimerRecs;
+					freeTimerRecs = te_ptr;
+					UNLOCK_PROCESS;
+					if (app->timerQueue == NULL) break;
+				}
+				if (did_timer)
+				{
+				    for (d = 0; d < app->count; d++)
+				    /* the timer's procedure may have caused an event */
+					    if (XEventsQueued(app->list[d], QueuedAfterFlush)) {
+						    goto GotEvent;
+					    }
+				    continue;  /* keep blocking */
+				}
+			}
+			/*
+			 * spec is vague here; we'll assume signals also return FALSE,
+			 * of course to determine whether a signal is pending requires
+			 * walking the signalQueue looking for se_notice flags which
+			 * this code doesn't do.
+			 */
+#if 0
+			if (app->signalQueue != NULL) {  /* signal */
+				event->xany.type = 0;
+				event->xany.display = NULL;
+				event->xany.window = 0;
+				UNLOCK_APP(app);
+				return FALSE;
+			}
+			else
+#endif
+			{  /* input */
+				event->xany.type = 0;
+				event->xany.display = NULL;
+				event->xany.window = 0;
+				UNLOCK_APP(app);
+				return FALSE;
+			}
+		}
+	} /* end while */
+}
diff --git a/libXt/src/Object.c b/libXt/src/Object.c
new file mode 100644
index 000000000..777fd68ae
--- /dev/null
+++ b/libXt/src/Object.c
@@ -0,0 +1,296 @@
+/* $Xorg: Object.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Object.c,v 1.5 2001/01/17 19:43:06 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+
+static XtResource resources[] = {
+        {XtNdestroyCallback, XtCCallback, XtRCallback,sizeof(XtPointer),
+         XtOffsetOf(ObjectRec,object.destroy_callbacks),
+	 XtRCallback, (XtPointer)NULL}
+    };
+
+static void ObjectClassPartInitialize(WidgetClass);
+static Boolean ObjectSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+static void ObjectDestroy(Widget);
+
+externaldef(objectclassrec) ObjectClassRec objectClassRec = {
+  {
+    /* superclass	  */	NULL,
+    /* class_name	  */	"Object",
+    /* widget_size	  */	sizeof(ObjectRec),
+    /* class_initialize   */    NULL,
+    /* class_part_initialize*/	ObjectClassPartInitialize,
+    /* class_inited       */	FALSE,
+    /* initialize	  */	NULL,
+    /* initialize_hook    */	NULL,
+    /* pad                */    NULL,
+    /* pad		  */	NULL,
+    /* pad       	  */	0,
+    /* resources	  */	resources,
+    /* num_resources	  */    XtNumber(resources),
+    /* xrm_class	  */	NULLQUARK,
+    /* pad                */    FALSE,
+    /* pad                */    FALSE,
+    /* pad                */    FALSE,
+    /* pad                */    FALSE,
+    /* destroy		  */	ObjectDestroy,
+    /* pad		  */	NULL,
+    /* pad		  */	NULL,
+    /* set_values	  */	ObjectSetValues,
+    /* set_values_hook    */	NULL,
+    /* pad                */    NULL,
+    /* get_values_hook    */	NULL,
+    /* pad                */    NULL,
+    /* version		  */	XtVersion,
+    /* callback_offsets   */    NULL,
+    /* pad                */    NULL,
+    /* pad                */    NULL,
+    /* pad                */    NULL,
+    /* extension	    */  NULL
+}
+};
+
+externaldef(objectClass) WidgetClass objectClass
+                          = (WidgetClass)&objectClassRec;
+
+/*
+ * Start of object routines.
+ */
+
+
+static void ConstructCallbackOffsets(
+    WidgetClass widgetClass)
+{
+    static XrmQuark QCallback = NULLQUARK;
+    register int i;
+    register int tableSize;
+    register CallbackTable newTable;
+    register CallbackTable superTable;
+    register XrmResourceList resourceList;
+    ObjectClass objectClass = (ObjectClass)widgetClass;
+
+    /*
+      This function builds an array of pointers to the resource
+      structures which describe the callbacks for this widget class.
+      This array is special in that the 0th entry is the number of
+      callback pointers.
+     */
+
+    if (QCallback == NULLQUARK)
+	QCallback = XrmPermStringToQuark(XtRCallback);
+
+    if (objectClass->object_class.superclass != NULL) {
+	superTable = (CallbackTable)
+	    ((ObjectClass) objectClass->object_class.superclass)->
+		object_class.callback_private;
+	tableSize = (int)(long) superTable[0];
+    } else {
+	superTable = (CallbackTable) NULL;
+	tableSize = 0;
+    }
+
+    /* Count the number of callbacks */
+    resourceList = (XrmResourceList) objectClass->object_class.resources;
+    for (i = objectClass->object_class.num_resources; --i >= 0; resourceList++)
+	if (resourceList->xrm_type == QCallback)
+	    tableSize++;
+
+    /*
+     * Allocate and load the table.  Make sure that the new callback
+     * offsets occur in the table ahead of the superclass callback
+     * offsets so that resource overrides work.
+     */
+    newTable = (CallbackTable)
+	__XtMalloc(sizeof(XrmResource *) * (tableSize + 1));
+
+    newTable[0] = (XrmResource *)(long) tableSize;
+
+    if (superTable)
+	tableSize -= (int)(long) superTable[0];
+    resourceList = (XrmResourceList) objectClass->object_class.resources;
+    for (i=1; tableSize > 0; resourceList++)
+	if (resourceList->xrm_type == QCallback) {
+	    newTable[i++] = resourceList;
+	    tableSize--;
+	}
+
+    if (superTable)
+	for (tableSize = (int)(long) *superTable++;
+	    --tableSize >= 0; superTable++)
+	    newTable[i++] = *superTable;
+
+    objectClass->object_class.callback_private = (XtPointer) newTable;
+}
+
+static void InheritObjectExtensionMethods(
+    WidgetClass widget_class)
+{
+    ObjectClass oc = (ObjectClass) widget_class;
+    ObjectClassExtension ext, super_ext = NULL;
+
+    ext = (ObjectClassExtension)
+	XtGetClassExtension(widget_class,
+		    XtOffsetOf(ObjectClassRec, object_class.extension),
+			    NULLQUARK, XtObjectExtensionVersion,
+			    sizeof(ObjectClassExtensionRec));
+
+    if (oc->object_class.superclass)
+	super_ext = (ObjectClassExtension)
+	    XtGetClassExtension(oc->object_class.superclass,
+			XtOffsetOf(ObjectClassRec, object_class.extension),
+				NULLQUARK, XtObjectExtensionVersion,
+				sizeof(ObjectClassExtensionRec));
+    LOCK_PROCESS;
+    if (ext) {
+	if (ext->allocate == XtInheritAllocate)
+	    ext->allocate = (super_ext ? super_ext->allocate : NULL);
+	if (ext->deallocate == XtInheritDeallocate)
+	    ext->deallocate = (super_ext ? super_ext->deallocate : NULL);
+    } else if (super_ext) {
+	/* Be careful to inherit only what is appropriate */
+	ext = (ObjectClassExtension)
+	    __XtCalloc(1, sizeof(ObjectClassExtensionRec));
+	ext->next_extension = oc->object_class.extension;
+	ext->record_type = NULLQUARK;
+	ext->version = XtObjectExtensionVersion;
+	ext->record_size = sizeof(ObjectClassExtensionRec);
+	ext->allocate = super_ext->allocate;
+	ext->deallocate = super_ext->deallocate;
+	oc->object_class.extension = (XtPointer) ext;
+    }
+    UNLOCK_PROCESS;
+}
+
+static void ObjectClassPartInitialize(
+    register WidgetClass wc)
+{
+   ObjectClass oc = (ObjectClass)wc;
+
+   oc->object_class.xrm_class =
+       XrmPermStringToQuark(oc->object_class.class_name);
+
+   if (oc->object_class.resources)
+       _XtCompileResourceList(oc->object_class.resources,
+			      oc->object_class.num_resources);
+
+   ConstructCallbackOffsets(wc);
+   _XtResourceDependencies(wc);
+   InheritObjectExtensionMethods(wc);
+}
+
+
+/*ARGSUSED*/
+static Boolean ObjectSetValues(
+    Widget	old,
+    Widget	request,
+    Widget	widget,
+    ArgList	args,
+    Cardinal *	num_args)
+{
+    register CallbackTable offsets;
+    register int i;
+    register InternalCallbackList *ol, *nl;
+
+    LOCK_PROCESS;
+    /* Compile any callback lists into internal form */
+    offsets = (CallbackTable) XtClass(widget)->core_class.callback_private;
+
+    for (i= (int)(long) *(offsets++); --i >= 0; offsets++) {
+	ol = (InternalCallbackList *)
+	    ((char *) old - (*offsets)->xrm_offset - 1);
+	nl = (InternalCallbackList *)
+	    ((char *) widget - (*offsets)->xrm_offset - 1);
+	if (*ol != *nl) {
+	    if (*ol != NULL)
+		XtFree((char *) *ol);
+	    if (*nl != NULL)
+		*nl = _XtCompileCallbackList((XtCallbackList) *nl);
+	}
+    }
+    UNLOCK_PROCESS;
+    return False;
+}
+
+
+static void ObjectDestroy (
+    register Widget    widget)
+{
+    register CallbackTable offsets;
+    register int i;
+    register InternalCallbackList cl;
+
+    /* Remove all callbacks associated with widget */
+    LOCK_PROCESS;
+    offsets = (CallbackTable)
+	widget->core.widget_class->core_class.callback_private;
+
+    for (i = (int)(long) *(offsets++); --i >= 0; offsets++) {
+	cl = *(InternalCallbackList *)
+	    ((char *) widget - (*offsets)->xrm_offset - 1);
+	if (cl) XtFree((char *) cl);
+    }
+    UNLOCK_PROCESS;
+} /* ObjectDestroy */
diff --git a/libXt/src/PassivGrab.c b/libXt/src/PassivGrab.c
new file mode 100644
index 000000000..377efdcd5
--- /dev/null
+++ b/libXt/src/PassivGrab.c
@@ -0,0 +1,1053 @@
+/* $Xorg: PassivGrab.c,v 1.5 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/********************************************************
+
+Copyright 1988 by Hewlett-Packard Company
+Copyright 1987, 1988, 1989,1990 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+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, and that the names of
+Hewlett-Packard, Digital, or Sun not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+********************************************************/
+/* $XFree86$ */
+
+/*
+
+Copyright 1987, 1988, 1989, 1990, 1994, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "PassivGraI.h"
+
+/* typedef unsigned long Mask; */
+#define BITMASK(i) (((Mask)1) << ((i) & 31))
+#define MASKIDX(i) ((i) >> 5)
+#define MASKWORD(buf, i) buf[MASKIDX(i)]
+#define BITSET(buf, i) MASKWORD(buf, i) |= BITMASK(i)
+#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i)
+#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i))
+#define MasksPerDetailMask 8
+
+#define pDisplay(grabPtr) (((grabPtr)->widget)->core.screen->display)
+#define pWindow(grabPtr) (((grabPtr)->widget)->core.window)
+
+
+/***************************************************************************/
+/*********************** Internal Support Routines *************************/
+/***************************************************************************/
+
+/*
+ * Turn off (clear) the bit in the specified detail mask which is associated
+ * with the detail.
+ */
+
+static void DeleteDetailFromMask(
+    Mask **ppDetailMask,
+    unsigned short detail)
+{
+    Mask *pDetailMask = *ppDetailMask;
+
+    if (!pDetailMask) {
+	int i;
+	pDetailMask = (Mask *)__XtMalloc(sizeof(Mask) * MasksPerDetailMask);
+	for (i = MasksPerDetailMask; --i >= 0; )
+	    pDetailMask[i] = ~0;
+	*ppDetailMask = pDetailMask;
+    }
+    BITCLEAR((pDetailMask), detail);
+}
+
+
+/*
+ * Make an exact copy of the specified detail mask.
+ */
+
+static Mask *CopyDetailMask(
+    Mask *pOriginalDetailMask)
+{
+    Mask *pTempMask;
+    int i;
+
+    if (!pOriginalDetailMask)
+	return NULL;
+
+    pTempMask = (Mask *)__XtMalloc(sizeof(Mask) * MasksPerDetailMask);
+
+    for ( i = 0; i < MasksPerDetailMask; i++)
+      pTempMask[i]= pOriginalDetailMask[i];
+
+    return pTempMask;
+}
+
+
+/*
+ * Allocate a new grab entry, and fill in all of the fields using the
+ * specified parameters.
+ */
+
+static XtServerGrabPtr CreateGrab(
+    Widget	widget,
+    Boolean	ownerEvents,
+    Modifiers	modifiers,
+    KeyCode 	keybut,
+    int		pointer_mode,
+    int		keyboard_mode,
+    Mask	event_mask,
+    Window 	confine_to,
+    Cursor 	cursor,
+    Boolean	need_ext)
+{
+    XtServerGrabPtr grab;
+
+    if (confine_to || cursor)
+	need_ext = True;
+    grab = (XtServerGrabPtr)__XtMalloc(sizeof(XtServerGrabRec) +
+				     (need_ext ? sizeof(XtServerGrabExtRec)
+				      : 0));
+    grab->next = NULL;
+    grab->widget = widget;
+    grab->ownerEvents = ownerEvents;
+    grab->pointerMode = pointer_mode;
+    grab->keyboardMode = keyboard_mode;
+    grab->eventMask = event_mask;
+    grab->hasExt = need_ext;
+    grab->confineToIsWidgetWin = (XtWindow (widget) == confine_to);
+    grab->modifiers = modifiers;
+    grab->keybut = keybut;
+    if (need_ext) {
+	XtServerGrabExtPtr ext = GRABEXT(grab);
+	ext->pModifiersMask = NULL;
+	ext->pKeyButMask = NULL;
+	ext->confineTo = confine_to;
+	ext->cursor = cursor;
+    }
+    return grab;
+}
+
+
+/*
+ * Free up the space occupied by a grab entry.
+ */
+
+static void FreeGrab(
+    XtServerGrabPtr pGrab)
+{
+    if (pGrab->hasExt) {
+	XtServerGrabExtPtr ext = GRABEXT(pGrab);
+	if (ext->pModifiersMask)
+	    XtFree((char *)ext->pModifiersMask);
+	if (ext->pKeyButMask)
+	    XtFree((char *)ext->pKeyButMask);
+    }
+    XtFree((char *)pGrab);
+}
+
+typedef struct _DetailRec {
+    unsigned short 	exact;
+    Mask  		*pMask;
+} DetailRec, *DetailPtr;
+
+/*
+ * If the first detail is set to 'exception' and the second detail
+ * is contained in the mask of the first, then TRUE is returned.
+ */
+
+static Bool IsInGrabMask(
+    register DetailPtr firstDetail,
+    register DetailPtr secondDetail,
+    unsigned short exception)
+{
+    if (firstDetail->exact == exception) {
+	if (!firstDetail->pMask)
+	    return TRUE;
+
+	/* (at present) never called with two non-null pMasks */
+	if (secondDetail->exact == exception)
+	    return FALSE;
+
+	if (GETBIT(firstDetail->pMask, secondDetail->exact))
+	    return TRUE;
+    }
+
+    return FALSE;
+}
+
+
+/*
+ * If neither of the details is set to 'exception', and they match
+ * exactly, then TRUE is returned.
+ */
+
+static Bool IdenticalExactDetails(
+    unsigned short firstExact,
+    unsigned short secondExact,
+    unsigned short exception)
+{
+    if ((firstExact == exception) || (secondExact == exception))
+	return FALSE;
+
+    if (firstExact == secondExact)
+	return TRUE;
+
+    return FALSE;
+}
+
+
+/*
+ * If the first detail is set to 'exception', and its mask has the bit
+ * enabled which corresponds to the second detail, OR if neither of the
+ * details is set to 'exception' and the details match exactly, then
+ * TRUE is returned.
+ */
+
+static Bool DetailSupersedesSecond(
+    register DetailPtr firstDetail,
+    register DetailPtr secondDetail,
+    unsigned short exception)
+{
+    if (IsInGrabMask(firstDetail, secondDetail, exception))
+	return TRUE;
+
+    if (IdenticalExactDetails(firstDetail->exact, secondDetail->exact,
+			      exception))
+	return TRUE;
+
+    return FALSE;
+}
+
+
+/*
+ * If the two grab events match exactly, or if the first grab entry
+ * 'encompasses' the second grab entry, then TRUE is returned.
+ */
+
+static Bool GrabSupersedesSecond(
+    register XtServerGrabPtr pFirstGrab,
+    register XtServerGrabPtr pSecondGrab)
+{
+    DetailRec first, second;
+
+    first.exact = pFirstGrab->modifiers;
+    if (pFirstGrab->hasExt)
+	first.pMask = GRABEXT(pFirstGrab)->pModifiersMask;
+    else
+	first.pMask = NULL;
+    second.exact = pSecondGrab->modifiers;
+    if (pSecondGrab->hasExt)
+	second.pMask = GRABEXT(pSecondGrab)->pModifiersMask;
+    else
+	second.pMask = NULL;
+    if (!DetailSupersedesSecond(&first, &second, (unsigned short)AnyModifier))
+      return FALSE;
+
+    first.exact = pFirstGrab->keybut;
+    if (pFirstGrab->hasExt)
+	first.pMask = GRABEXT(pFirstGrab)->pKeyButMask;
+    else
+	first.pMask = NULL;
+    second.exact = pSecondGrab->keybut;
+    if (pSecondGrab->hasExt)
+	second.pMask = GRABEXT(pSecondGrab)->pKeyButMask;
+    else
+	second.pMask = NULL;
+    if (DetailSupersedesSecond(&first, &second, (unsigned short)AnyKey))
+      return TRUE;
+
+    return FALSE;
+}
+
+
+/*
+ * Two grabs are considered to be matching if either of the following are true:
+ *
+ * 1) The two grab entries match exactly, or the first grab entry
+ *    encompasses the second grab entry.
+ * 2) The second grab entry encompasses the first grab entry.
+ * 3) The keycodes match exactly, and one entry's modifiers encompasses
+ *    the others.
+ * 4) The keycode for one entry encompasses the other, and the detail
+ *    for the other entry encompasses the first.
+ */
+
+static Bool GrabMatchesSecond(
+    register XtServerGrabPtr pFirstGrab,
+    register XtServerGrabPtr pSecondGrab)
+{
+    DetailRec firstD, firstM, secondD, secondM;
+
+    if (pDisplay(pFirstGrab) != pDisplay(pSecondGrab))
+	return FALSE;
+
+    if (GrabSupersedesSecond(pFirstGrab, pSecondGrab))
+	return TRUE;
+
+    if (GrabSupersedesSecond(pSecondGrab, pFirstGrab))
+	return TRUE;
+
+    firstD.exact = pFirstGrab->keybut;
+    firstM.exact = pFirstGrab->modifiers;
+    if (pFirstGrab->hasExt) {
+	firstD.pMask = GRABEXT(pFirstGrab)->pKeyButMask;
+	firstM.pMask = GRABEXT(pFirstGrab)->pModifiersMask;
+    } else {
+	firstD.pMask = NULL;
+	firstM.pMask = NULL;
+    }
+    secondD.exact = pSecondGrab->keybut;
+    secondM.exact = pSecondGrab->modifiers;
+    if (pSecondGrab->hasExt) {
+	secondD.pMask = GRABEXT(pSecondGrab)->pKeyButMask;
+	secondM.pMask = GRABEXT(pSecondGrab)->pModifiersMask;
+    } else {
+	secondD.pMask = NULL;
+	secondM.pMask = NULL;
+    }
+
+    if (DetailSupersedesSecond(&secondD, &firstD, (unsigned short)AnyKey) &&
+	DetailSupersedesSecond(&firstM, &secondM, (unsigned short)AnyModifier))
+	return TRUE;
+
+    if (DetailSupersedesSecond(&firstD, &secondD, (unsigned short)AnyKey) &&
+	DetailSupersedesSecond(&secondM, &firstM, (unsigned short)AnyModifier))
+	return TRUE;
+
+    return FALSE;
+}
+
+
+/*
+ * Delete a grab combination from the passive grab list.  Each entry will
+ * be checked to see if it is affected by the grab being deleted.  This
+ * may result in multiple entries being modified/deleted.
+ */
+
+static void DeleteServerGrabFromList(
+    XtServerGrabPtr 	*passiveListPtr,
+    XtServerGrabPtr 	pMinuendGrab)
+{
+    register XtServerGrabPtr *next;
+    register XtServerGrabPtr grab;
+    register XtServerGrabExtPtr ext;
+
+    for (next = passiveListPtr; (grab = *next); )
+    {
+	if (GrabMatchesSecond(grab, pMinuendGrab) &&
+	    (pDisplay(grab) == pDisplay(pMinuendGrab)))
+	{
+	    if (GrabSupersedesSecond(pMinuendGrab, grab))
+	    {
+		/*
+		 * The entry being deleted encompasses the list entry,
+		 * so delete the list entry.
+		 */
+		*next = grab->next;
+		FreeGrab(grab);
+		continue;
+	    }
+
+	    if (!grab->hasExt) {
+		grab = (XtServerGrabPtr)
+		    XtRealloc((char *)grab, (sizeof(XtServerGrabRec) +
+					     sizeof(XtServerGrabExtRec)));
+		*next = grab;
+		grab->hasExt = True;
+		ext = GRABEXT(grab);
+		ext->pKeyButMask = NULL;
+		ext->pModifiersMask = NULL;
+		ext->confineTo = None;
+		ext->cursor = None;
+	    } else
+		ext = GRABEXT(grab);
+	    if ((grab->keybut == AnyKey) && (grab->modifiers != AnyModifier))
+	    {
+		/*
+		 * If the list entry has the key detail of AnyKey, and
+		 * a modifier detail not set to AnyModifier, then we
+		 * simply need to turn off the key detail bit in the
+		 * list entry's key detail mask.
+		 */
+		DeleteDetailFromMask(&ext->pKeyButMask, pMinuendGrab->keybut);
+	    } else if ((grab->modifiers == AnyModifier) &&
+		       (grab->keybut != AnyKey)) {
+		/*
+		 * The list entry has a specific key detail, but its
+		 * modifier detail is set to AnyModifier; so, we only
+		 * need to turn off the specified modifier combination
+		 * in the list entry's modifier mask.
+		 */
+		DeleteDetailFromMask(&ext->pModifiersMask,
+				     pMinuendGrab->modifiers);
+	    } else if ((pMinuendGrab->keybut != AnyKey) &&
+		       (pMinuendGrab->modifiers != AnyModifier)) {
+		/*
+		 * The list entry has a key detail of AnyKey and a
+		 * modifier detail of AnyModifier; the entry being
+		 * deleted has a specific key and a specific modifier
+		 * combination.  Therefore, we need to mask off the
+		 * keycode from the list entry, and also create a
+		 * new entry for this keycode, which has a modifier
+		 * mask set to AnyModifier & ~(deleted modifiers).
+		 */
+		XtServerGrabPtr pNewGrab;
+
+		DeleteDetailFromMask(&ext->pKeyButMask, pMinuendGrab->keybut);
+		pNewGrab = CreateGrab(grab->widget,
+				      (Boolean)grab->ownerEvents,
+				      (Modifiers)AnyModifier,
+				      pMinuendGrab->keybut,
+				      (int)grab->pointerMode,
+				      (int)grab->keyboardMode,
+				      (Mask)0, (Window)0, (Cursor)0, True);
+		GRABEXT(pNewGrab)->pModifiersMask =
+		    CopyDetailMask(ext->pModifiersMask);
+
+		DeleteDetailFromMask(&GRABEXT(pNewGrab)->pModifiersMask,
+				     pMinuendGrab->modifiers);
+
+		pNewGrab->next = *passiveListPtr;
+		*passiveListPtr = pNewGrab;
+	    } else if (pMinuendGrab->keybut == AnyKey) {
+		/*
+		 * The list entry has keycode AnyKey and modifier
+		 * AnyModifier; the entry being deleted has
+		 * keycode AnyKey and specific modifiers.  So we
+		 * simply need to mask off the specified modifier
+		 * combination.
+		 */
+		DeleteDetailFromMask(&ext->pModifiersMask,
+				     pMinuendGrab->modifiers);
+	    } else {
+		/*
+		 * The list entry has keycode AnyKey and modifier
+		 * AnyModifier; the entry being deleted has a
+		 * specific keycode and modifier AnyModifier.  So
+		 * we simply need to mask off the specified
+		 * keycode.
+		 */
+		DeleteDetailFromMask(&ext->pKeyButMask, pMinuendGrab->keybut);
+	    }
+	}
+	next = &(*next)->next;
+    }
+}
+
+static void DestroyPassiveList(
+    XtServerGrabPtr	*passiveListPtr)
+{
+    XtServerGrabPtr	next, grab;
+
+    for (next = *passiveListPtr; next; ) {
+	grab = next;
+	next = grab->next;
+
+	/* not necessary to explicitly ungrab key or button;
+	 * window is being destroyed so server will take care of it.
+	 */
+
+	FreeGrab(grab);
+    }
+}
+
+
+/*
+ * This function is called at widget destroy time to clean up
+ */
+/*ARGSUSED*/
+void _XtDestroyServerGrabs(
+    Widget		w,
+    XtPointer		closure,
+    XtPointer		call_data) /* unused */
+{
+    XtPerWidgetInput	pwi = (XtPerWidgetInput)closure;
+    XtPerDisplayInput	pdi;
+
+    LOCK_PROCESS;
+    pdi = _XtGetPerDisplayInput(XtDisplay(w));
+    _XtClearAncestorCache(w);
+    UNLOCK_PROCESS;
+
+    /* Remove the active grab, if necessary */
+    if ((pdi->keyboard.grabType != XtNoServerGrab) &&
+	(pdi->keyboard.grab.widget == w)) {
+	pdi->keyboard.grabType = XtNoServerGrab;
+	pdi->activatingKey = (KeyCode)0;
+    }
+    if ((pdi->pointer.grabType != XtNoServerGrab) &&
+	(pdi->pointer.grab.widget == w))
+	pdi->pointer.grabType = XtNoServerGrab;
+
+    DestroyPassiveList(&pwi->keyList);
+    DestroyPassiveList(&pwi->ptrList);
+
+    _XtFreePerWidgetInput(w, pwi);
+}
+
+/*
+ * If the incoming event is on the passive grab list, then activate
+ * the grab.  The grab will remain in effect until the key is released.
+ */
+
+XtServerGrabPtr _XtCheckServerGrabsOnWidget (
+    XEvent 		*event,
+    Widget		widget,
+    _XtBoolean		isKeyboard)
+{
+    register XtServerGrabPtr grab;
+    XtServerGrabRec 	tempGrab;
+    XtServerGrabPtr	*passiveListPtr;
+    XtPerWidgetInput	pwi;
+
+    LOCK_PROCESS;
+    pwi = _XtGetPerWidgetInput(widget, FALSE);
+    UNLOCK_PROCESS;
+    if (!pwi)
+	return (XtServerGrabPtr)NULL;
+    if (isKeyboard)
+	passiveListPtr = &pwi->keyList;
+    else
+	passiveListPtr = &pwi->ptrList;
+
+    /*
+     * if either there is no entry in the context manager or the entry
+     * is empty, or the keyboard is grabed, then no work to be done
+     */
+    if (!*passiveListPtr)
+	return (XtServerGrabPtr)NULL;
+
+    /* Take only the lower thirteen bits as modifier state.  The X Keyboard
+     * Extension may be representing keyboard group state in two upper bits.
+     */
+    tempGrab.widget = widget;
+    tempGrab.keybut = event->xkey.keycode; /* also xbutton.button */
+    tempGrab.modifiers = event->xkey.state & 0x1FFF; /*also xbutton.state*/
+    tempGrab.hasExt = False;
+
+    for (grab = *passiveListPtr; grab; grab = grab->next) {
+	if (GrabMatchesSecond(&tempGrab, grab))
+	    return (grab);
+    }
+    return (XtServerGrabPtr)NULL;
+}
+
+/*
+ * This handler is needed to guarantee that we see releases on passive
+ * button grabs for widgets that haven't selected for button release.
+ */
+
+/*ARGSUSED*/
+static void  ActiveHandler (
+    Widget 		widget,
+    XtPointer		pdi,
+    XEvent 		*event,
+    Boolean		*cont)
+{
+    /* nothing */
+}
+
+
+/*
+ *	MakeGrab
+ */
+static void  MakeGrab(
+    XtServerGrabPtr	grab,
+    XtServerGrabPtr	*passiveListPtr,
+    Boolean		isKeyboard,
+    XtPerDisplayInput	pdi,
+    XtPerWidgetInput	pwi)
+{
+    if (!isKeyboard && !pwi->active_handler_added) {
+	XtAddEventHandler(grab->widget, ButtonReleaseMask, FALSE,
+			  ActiveHandler, (XtPointer)pdi);
+	pwi->active_handler_added = TRUE;
+    }
+
+    if (isKeyboard) {
+	XGrabKey(pDisplay(grab),
+		 grab->keybut, grab->modifiers,
+		 pWindow(grab), grab->ownerEvents,
+		 grab->pointerMode, grab->keyboardMode);
+    } else {
+	Window confineTo = None;
+	Cursor cursor = None;
+
+	if (grab->hasExt) {
+	    if (grab->confineToIsWidgetWin)
+		confineTo = XtWindow (grab->widget);
+	    else
+		confineTo = GRABEXT(grab)->confineTo;
+	    cursor = GRABEXT(grab)->cursor;
+	}
+	XGrabButton(pDisplay(grab),
+		    grab->keybut, grab->modifiers,
+		    pWindow(grab), grab->ownerEvents, grab->eventMask,
+		    grab->pointerMode, grab->keyboardMode,
+		    confineTo, cursor);
+    }
+
+    /* Add the new grab entry to the passive key grab list */
+    grab->next = *passiveListPtr;
+    *passiveListPtr = grab;
+}
+
+static void MakeGrabs(
+    XtServerGrabPtr	*passiveListPtr,
+    Boolean		isKeyboard,
+    XtPerDisplayInput	pdi)
+{
+    XtServerGrabPtr	next = *passiveListPtr;
+    XtServerGrabPtr	grab;
+    XtPerWidgetInput	pwi;
+    /*
+     * make MakeGrab build a new list that has had the merge
+     * processing done on it. Start with an empty list
+     * (passiveListPtr).
+     */
+    LOCK_PROCESS;
+    *passiveListPtr = NULL;
+    while (next)
+      {
+	  grab = next;
+	  next = grab->next;
+	  pwi = _XtGetPerWidgetInput(grab->widget, FALSE);
+	  MakeGrab(grab, passiveListPtr, isKeyboard, pdi, pwi);
+      }
+    UNLOCK_PROCESS;
+}
+
+/*
+ * This function is the event handler attached to the associated widget
+ * when grabs need to be added, but the widget is not yet realized.  When
+ * it is first mapped, this handler will be invoked, and it will add all
+ * needed grabs.
+ */
+
+/*ARGSUSED*/
+static void  RealizeHandler (
+    Widget 		widget,
+    XtPointer		closure,
+    XEvent 		*event,	/* unused */
+    Boolean		*cont)	/* unused */
+{
+    XtPerWidgetInput	pwi = (XtPerWidgetInput)closure;
+    XtPerDisplayInput	pdi;
+
+    LOCK_PROCESS;
+    pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    UNLOCK_PROCESS;
+    MakeGrabs(&pwi->keyList, KEYBOARD, pdi);
+    MakeGrabs(&pwi->ptrList, POINTER, pdi);
+
+    XtRemoveEventHandler(widget, XtAllEvents, True,
+			 RealizeHandler, (XtPointer)pwi);
+    pwi->realize_handler_added = FALSE;
+}
+
+/***************************************************************************/
+/**************************** Global Routines ******************************/
+/***************************************************************************/
+
+
+/*
+ * Routine used by an application to set up a passive grab for a key/modifier
+ * combination.
+ */
+
+static
+void GrabKeyOrButton (
+    Widget	widget,
+    KeyCode	keyOrButton,
+    Modifiers	modifiers,
+    Boolean	owner_events,
+    int 	pointer_mode,
+    int 	keyboard_mode,
+    Mask	event_mask,
+    Window 	confine_to,
+    Cursor 	cursor,
+    Boolean	isKeyboard)
+{
+    XtServerGrabPtr	*passiveListPtr;
+    XtServerGrabPtr 	newGrab;
+    XtPerWidgetInput	pwi;
+    XtPerDisplayInput	pdi;
+
+
+    XtCheckSubclass(widget, coreWidgetClass, "in XtGrabKey or XtGrabButton");
+    LOCK_PROCESS;
+    pwi = _XtGetPerWidgetInput(widget, TRUE);
+    if (isKeyboard)
+      passiveListPtr = &pwi->keyList;
+    else
+      passiveListPtr = &pwi->ptrList;
+    pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    UNLOCK_PROCESS;
+    newGrab = CreateGrab(widget, owner_events, modifiers,
+			 keyOrButton, pointer_mode, keyboard_mode,
+			 event_mask, confine_to, cursor, False);
+    /*
+     *  if the widget is realized then process the entry into the grab
+     * list. else if the list is empty (i.e. first time) then add the
+     * event handler. then add the raw entry to the list for processing
+     * in the handler at realize time.
+     */
+    if (XtIsRealized(widget))
+      MakeGrab(newGrab, passiveListPtr, isKeyboard, pdi, pwi);
+    else {
+	if (!pwi->realize_handler_added)
+	    {
+		XtAddEventHandler(widget, StructureNotifyMask, FALSE,
+				  RealizeHandler,
+				  (XtPointer)pwi);
+		pwi->realize_handler_added = TRUE;
+	    }
+
+	while (*passiveListPtr)
+	    passiveListPtr = &(*passiveListPtr)->next;
+	*passiveListPtr = newGrab;
+    }
+}
+
+
+static
+void   UngrabKeyOrButton (
+    Widget	widget,
+    int		keyOrButton,
+    Modifiers	modifiers,
+    Boolean	isKeyboard)
+{
+    XtServerGrabRec 	tempGrab;
+    XtPerWidgetInput	pwi;
+
+    XtCheckSubclass(widget, coreWidgetClass,
+		    "in XtUngrabKey or XtUngrabButton");
+
+    /* Build a temporary grab list entry */
+    tempGrab.widget = widget;
+    tempGrab.modifiers = modifiers;
+    tempGrab.keybut = keyOrButton;
+    tempGrab.hasExt = False;
+
+    LOCK_PROCESS;
+    pwi = _XtGetPerWidgetInput(widget, FALSE);
+    UNLOCK_PROCESS;
+    /*
+     * if there is no entry in the context manager then somethings wrong
+     */
+    if (!pwi)
+      {
+	  XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		       "invalidGrab", "ungrabKeyOrButton", XtCXtToolkitError,
+		       "Attempt to remove nonexistent passive grab",
+		       (String *)NULL, (Cardinal *)NULL);
+	  return;
+      }
+
+    if (XtIsRealized(widget))
+      {
+	  if (isKeyboard)
+	    XUngrabKey(widget->core.screen->display,
+		       keyOrButton, (unsigned int)modifiers,
+		       widget->core.window);
+	  else
+	    XUngrabButton(widget->core.screen->display,
+			  keyOrButton, (unsigned int)modifiers,
+			  widget->core.window);
+      }
+
+
+    /* Delete all entries which are encompassed by the specified grab. */
+    DeleteServerGrabFromList(isKeyboard ? &pwi->keyList : &pwi->ptrList,
+			     &tempGrab);
+}
+
+void  XtGrabKey (
+    Widget	widget,
+    _XtKeyCode	keycode,
+    Modifiers	modifiers,
+    _XtBoolean	owner_events,
+    int 	pointer_mode,
+    int 	keyboard_mode)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    GrabKeyOrButton(widget, (KeyCode)keycode, modifiers, owner_events,
+		    pointer_mode, keyboard_mode,
+		    (Mask)0, (Window)None, (Cursor)None, KEYBOARD);
+    UNLOCK_APP(app);
+}
+
+void  XtGrabButton(
+    Widget	widget,
+    int		button,
+    Modifiers	modifiers,
+    _XtBoolean	owner_events,
+    unsigned int event_mask,
+    int 	pointer_mode,
+    int 	keyboard_mode,
+    Window 	confine_to,
+    Cursor 	cursor)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    GrabKeyOrButton(widget, (KeyCode)button, modifiers, owner_events,
+		    pointer_mode, keyboard_mode,
+		    (Mask)event_mask, confine_to, cursor, POINTER);
+    UNLOCK_APP(app);
+}
+
+
+/*
+ * Routine used by an application to clear a passive grab for a key/modifier
+ * combination.
+ */
+
+void   XtUngrabKey (
+    Widget	widget,
+    _XtKeyCode	keycode,
+    Modifiers	modifiers)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    UngrabKeyOrButton(widget, (int)keycode, modifiers, KEYBOARD);
+    UNLOCK_APP(app);
+}
+
+void   XtUngrabButton (
+    Widget	widget,
+    unsigned int button,
+    Modifiers	modifiers)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    UngrabKeyOrButton(widget, (KeyCode)button, modifiers, POINTER);
+    UNLOCK_APP(app);
+}
+
+/*
+ * Active grab of Device. clear any client side grabs so we dont lock
+ */
+static int GrabDevice (
+    Widget	widget,
+    Boolean	owner_events,
+    int 	pointer_mode,
+    int 	keyboard_mode,
+    Mask	event_mask,
+    Window 	confine_to,
+    Cursor 	cursor,
+    Time	time,
+    Boolean	isKeyboard)
+{
+    XtPerDisplayInput	pdi;
+    int			returnVal;
+
+    XtCheckSubclass(widget, coreWidgetClass,
+		    "in XtGrabKeyboard or XtGrabPointer");
+    if (!XtIsRealized(widget))
+	return GrabNotViewable;
+    LOCK_PROCESS;
+    pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    UNLOCK_PROCESS;
+    if (!isKeyboard)
+      returnVal = XGrabPointer(XtDisplay(widget), XtWindow(widget),
+			       owner_events, event_mask,
+			       pointer_mode, keyboard_mode,
+			       confine_to, cursor, time);
+    else
+      returnVal = XGrabKeyboard(XtDisplay(widget), XtWindow(widget),
+				owner_events, pointer_mode,
+				keyboard_mode, time);
+
+    if (returnVal == GrabSuccess) {
+	  XtDevice		device;
+
+	  device = isKeyboard ? &pdi->keyboard : &pdi->pointer;
+	  /* fill in the server grab rec */
+	  device->grab.widget = widget;
+	  device->grab.modifiers = 0;
+	  device->grab.keybut = 0;
+	  device->grab.ownerEvents = owner_events;
+	  device->grab.pointerMode = pointer_mode;
+	  device->grab.keyboardMode = keyboard_mode;
+	  device->grab.hasExt = False;
+	  device->grabType = XtActiveServerGrab;
+	  pdi->activatingKey = (KeyCode)0;
+      }
+    return returnVal;
+}
+
+static void   UngrabDevice(
+    Widget	widget,
+    Time	time,
+    Boolean	isKeyboard)
+{
+    XtPerDisplayInput pdi;
+    XtDevice device;
+
+    LOCK_PROCESS;
+    pdi = _XtGetPerDisplayInput(XtDisplay(widget));
+    UNLOCK_PROCESS;
+    device = isKeyboard ? &pdi->keyboard : &pdi->pointer;
+    XtCheckSubclass(widget, coreWidgetClass,
+		    "in XtUngrabKeyboard or XtUngrabPointer");
+
+    if (device->grabType != XtNoServerGrab) {
+
+	if (device->grabType != XtPseudoPassiveServerGrab
+	    && XtIsRealized(widget)) {
+	    if (isKeyboard)
+		XUngrabKeyboard(XtDisplay(widget), time);
+	    else
+		XUngrabPointer(XtDisplay(widget), time);
+	}
+	device->grabType = XtNoServerGrab;
+	pdi->activatingKey = (KeyCode)0;
+    }
+}
+
+
+/*
+ * Active grab of keyboard. clear any client side grabs so we dont lock
+ */
+int XtGrabKeyboard (
+    Widget	widget,
+    _XtBoolean	owner_events,
+    int 	pointer_mode,
+    int 	keyboard_mode,
+    Time	time)
+{
+    int retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    retval = GrabDevice (widget, owner_events,
+			pointer_mode, keyboard_mode,
+			(Mask)0, (Window)None, (Cursor)None, time, KEYBOARD);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+
+/*
+ * Ungrab the keyboard
+ */
+
+void   XtUngrabKeyboard(
+    Widget	widget,
+    Time	time)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    UngrabDevice(widget, time, KEYBOARD);
+    UNLOCK_APP(app);
+}
+
+
+
+
+/*
+ * grab the pointer
+ */
+int XtGrabPointer (
+    Widget	widget,
+    _XtBoolean	owner_events,
+    unsigned int event_mask,
+    int 	pointer_mode,
+    int 	keyboard_mode,
+    Window 	confine_to,
+    Cursor 	cursor,
+    Time	time)
+{
+    int retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    retval = GrabDevice (widget, owner_events,
+			pointer_mode, keyboard_mode,
+			(Mask)event_mask, confine_to,
+			cursor, time, POINTER);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+
+/*
+ * Ungrab the pointer
+ */
+
+void   XtUngrabPointer(
+    Widget	widget,
+    Time	time)
+{
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    UngrabDevice(widget, time, POINTER);
+    UNLOCK_APP(app);
+}
+
+
+void _XtRegisterPassiveGrabs (
+    Widget	widget)
+{
+    XtPerWidgetInput	pwi = _XtGetPerWidgetInput (widget, FALSE);
+
+    if (pwi != NULL && !pwi->realize_handler_added) {
+	XtAddEventHandler(widget, StructureNotifyMask, FALSE,
+			  RealizeHandler,
+			  (XtPointer)pwi);
+	pwi->realize_handler_added = TRUE;
+    }
+}
diff --git a/libXt/src/Pointer.c b/libXt/src/Pointer.c
new file mode 100644
index 000000000..bbcb13371
--- /dev/null
+++ b/libXt/src/Pointer.c
@@ -0,0 +1,115 @@
+/* $Xorg: Pointer.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/********************************************************
+
+Copyright 1988 by Hewlett-Packard Company
+Copyright 1987, 1988, 1989 by Digital Equipment Corporation, Maynard
+
+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, and that the names of
+Hewlett-Packard or Digital not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+********************************************************/
+
+/*
+
+Copyright 1987, 1988, 1989, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "PassivGraI.h"
+
+
+#define AllButtonsMask (Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask)
+
+Widget _XtProcessPointerEvent(
+    XButtonEvent  	*event,
+    Widget 		widget,
+    XtPerDisplayInput 	pdi)
+{
+    XtDevice		device = &pdi->pointer;
+    XtServerGrabPtr	newGrab = NULL, devGrab = &device->grab;
+    Widget		dspWidget = NULL;
+    Boolean		deactivateGrab = FALSE;
+
+    switch (event->type)
+      {
+	case ButtonPress:
+	  {
+	      if (!IsServerGrab(device->grabType))
+		{
+		    Cardinal		i;
+
+		    for (i = pdi->traceDepth;
+			 i > 0 && !newGrab;
+			 i--)
+		      newGrab = _XtCheckServerGrabsOnWidget((XEvent*)event,
+							    pdi->trace[i-1],
+							    POINTER);
+		}
+	      if (newGrab)
+		{
+		    /* Activate the grab */
+		    device->grab = *newGrab;
+		    device->grabType = XtPassiveServerGrab;
+		}
+	  }
+	  break;
+
+	case ButtonRelease:
+	  {
+	      if ((device->grabType == XtPassiveServerGrab) &&
+		  !(event->state & ~(Button1Mask << (event->button - 1)) &
+		    AllButtonsMask))
+		deactivateGrab = TRUE;
+	  }
+	  break;
+      }
+
+    if (IsServerGrab(device->grabType) && !(devGrab)->ownerEvents)
+      dspWidget = (devGrab)->widget;
+    else
+      dspWidget = widget;
+
+    if (deactivateGrab)
+      device->grabType = XtNoServerGrab;
+
+    return dspWidget;
+}
diff --git a/libXt/src/Popup.c b/libXt/src/Popup.c
new file mode 100644
index 000000000..aac712da1
--- /dev/null
+++ b/libXt/src/Popup.c
@@ -0,0 +1,198 @@
+/* $Xorg: Popup.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86$ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "ShellP.h"
+
+void _XtPopup(
+    Widget      widget,
+    XtGrabKind  grab_kind,
+    _XtBoolean  spring_loaded)
+{
+    register ShellWidget shell_widget = (ShellWidget) widget;
+
+    if (! XtIsShell(widget)) {
+	XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+		"invalidClass","xtPopup",XtCXtToolkitError,
+                "XtPopup requires a subclass of shellWidgetClass",
+                  (String *)NULL, (Cardinal *)NULL);
+    }
+
+    if (! shell_widget->shell.popped_up) {
+	XtGrabKind call_data = grab_kind;
+	XtCallCallbacks(widget, XtNpopupCallback, (XtPointer)&call_data);
+	shell_widget->shell.popped_up = TRUE;
+	shell_widget->shell.grab_kind = grab_kind;
+	shell_widget->shell.spring_loaded = spring_loaded;
+	if (shell_widget->shell.create_popup_child_proc != NULL) {
+	    (*(shell_widget->shell.create_popup_child_proc))(widget);
+	}
+	if (grab_kind == XtGrabExclusive) {
+	    XtAddGrab(widget, TRUE, spring_loaded);
+	} else if (grab_kind == XtGrabNonexclusive) {
+	    XtAddGrab(widget, FALSE, spring_loaded);
+	}
+	XtRealizeWidget(widget);
+	XMapRaised(XtDisplay(widget), XtWindow(widget));
+    } else
+	XRaiseWindow(XtDisplay(widget), XtWindow(widget));
+
+} /* _XtPopup */
+
+void XtPopup (Widget widget, XtGrabKind grab_kind)
+{
+    Widget hookobj;
+
+    switch (grab_kind) {
+
+      case XtGrabNone:
+      case XtGrabExclusive:
+      case XtGrabNonexclusive:
+	break;
+
+      default:
+	XtAppWarningMsg(
+		XtWidgetToApplicationContext(widget),
+		"invalidGrabKind","xtPopup",XtCXtToolkitError,
+		"grab kind argument has invalid value; XtGrabNone assumed",
+		(String *)NULL, (Cardinal *)NULL);
+	grab_kind = XtGrabNone;
+    }
+
+    _XtPopup(widget, grab_kind, FALSE);
+
+    hookobj = XtHooksOfDisplay(XtDisplay(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHpopup;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer)grab_kind;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+} /* XtPopup */
+
+void XtPopupSpringLoaded (
+    Widget widget)
+{
+    Widget hookobj;
+
+    _XtPopup(widget, XtGrabExclusive, True);
+
+    hookobj = XtHooksOfDisplay(XtDisplay(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHpopupSpringLoaded;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+}
+
+void XtPopdown(
+    Widget  widget)
+{
+    /* Unmap a shell widget if it is mapped, and remove from grab list */
+    Widget hookobj;
+    ShellWidget shell_widget = (ShellWidget) widget;
+    XtGrabKind grab_kind;
+
+    if (! XtIsShell(widget)) {
+	XtAppErrorMsg(XtWidgetToApplicationContext(widget),
+		"invalidClass","xtPopdown",XtCXtToolkitError,
+            "XtPopdown requires a subclass of shellWidgetClass",
+              (String *)NULL, (Cardinal *)NULL);
+    }
+
+#ifndef X_NO_XT_POPDOWN_CONFORMANCE
+    if (!shell_widget->shell.popped_up)
+        return;
+#endif
+
+    grab_kind = shell_widget->shell.grab_kind;
+    XWithdrawWindow(XtDisplay(widget), XtWindow(widget),
+		    XScreenNumberOfScreen(XtScreen(widget)));
+    if (grab_kind != XtGrabNone)
+	XtRemoveGrab(widget);
+    shell_widget->shell.popped_up = FALSE;
+    XtCallCallbacks(widget, XtNpopdownCallback, (XtPointer)&grab_kind);
+
+    hookobj = XtHooksOfDisplay(XtDisplay(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHpopdown;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+} /* XtPopdown */
+
+/* ARGSUSED */
+void XtCallbackPopdown(
+    Widget  widget,
+    XtPointer closure,
+    XtPointer call_data)
+{
+    register XtPopdownID id = (XtPopdownID) closure;
+
+    XtPopdown(id->shell_widget);
+    if (id->enable_widget != NULL) {
+	XtSetSensitive(id->enable_widget, TRUE);
+    }
+} /* XtCallbackPopdown */
diff --git a/libXt/src/PopupCB.c b/libXt/src/PopupCB.c
new file mode 100644
index 000000000..be5fd8502
--- /dev/null
+++ b/libXt/src/PopupCB.c
@@ -0,0 +1,84 @@
+/* $Xorg: PopupCB.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+/* ARGSUSED */
+void XtCallbackNone(
+    Widget  widget,
+    XtPointer closure,
+    XtPointer call_data)
+{
+    XtSetSensitive(widget, FALSE);
+    _XtPopup((Widget) closure, XtGrabNone, FALSE);
+} /* XtCallbackNone */
+
+/* ARGSUSED */
+void XtCallbackNonexclusive(
+    Widget  widget,
+    XtPointer closure,
+    XtPointer call_data)
+{
+
+    XtSetSensitive(widget, FALSE);
+    _XtPopup((Widget) closure, XtGrabNonexclusive, FALSE);
+} /* XtCallbackNonexclusive */
+
+/* ARGSUSED */
+void XtCallbackExclusive(
+    Widget  widget,
+    XtPointer closure,
+    XtPointer call_data)
+{
+    XtSetSensitive(widget, FALSE);
+    _XtPopup((Widget) closure, XtGrabExclusive, FALSE);
+} /* XtCallbackExclusive */
diff --git a/libXt/src/RectObj.c b/libXt/src/RectObj.c
new file mode 100644
index 000000000..0835d5b47
--- /dev/null
+++ b/libXt/src/RectObj.c
@@ -0,0 +1,193 @@
+/* $Xorg: RectObj.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/RectObj.c,v 1.2 2001/08/22 22:52:19 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "CreateI.h"
+
+/******************************************************************
+ *
+ * Rectangle Object Resources
+ *
+ ******************************************************************/
+
+static void XtCopyAncestorSensitive(Widget, int, XrmValue *);
+
+static XtResource resources[] = {
+
+    {XtNancestorSensitive, XtCSensitive, XtRBoolean, sizeof(Boolean),
+      XtOffsetOf(RectObjRec,rectangle.ancestor_sensitive),XtRCallProc,
+      (XtPointer)XtCopyAncestorSensitive},
+    {XtNx, XtCPosition, XtRPosition, sizeof(Position),
+         XtOffsetOf(RectObjRec,rectangle.x), XtRImmediate, (XtPointer)0},
+    {XtNy, XtCPosition, XtRPosition, sizeof(Position),
+         XtOffsetOf(RectObjRec,rectangle.y), XtRImmediate, (XtPointer)0},
+    {XtNwidth, XtCWidth, XtRDimension, sizeof(Dimension),
+         XtOffsetOf(RectObjRec,rectangle.width), XtRImmediate, (XtPointer)0},
+    {XtNheight, XtCHeight, XtRDimension, sizeof(Dimension),
+         XtOffsetOf(RectObjRec,rectangle.height), XtRImmediate, (XtPointer)0},
+    {XtNborderWidth, XtCBorderWidth, XtRDimension, sizeof(Dimension),
+         XtOffsetOf(RectObjRec,rectangle.border_width), XtRImmediate,
+	 (XtPointer)1},
+    {XtNsensitive, XtCSensitive, XtRBoolean, sizeof(Boolean),
+         XtOffsetOf(RectObjRec,rectangle.sensitive), XtRImmediate,
+	 (XtPointer)True}
+    };
+
+static void RectClassPartInitialize(WidgetClass);
+static void RectSetValuesAlmost(Widget, Widget, XtWidgetGeometry *, XtWidgetGeometry *);
+
+externaldef(rectobjclassrec) RectObjClassRec rectObjClassRec = {
+  {
+    /* superclass	  */	(WidgetClass)&objectClassRec,
+    /* class_name	  */	"Rect",
+    /* widget_size	  */	sizeof(RectObjRec),
+    /* class_initialize   */    NULL,
+    /* class_part_initialize*/	RectClassPartInitialize,
+    /* class_inited       */	FALSE,
+    /* initialize	  */	NULL,
+    /* initialize_hook    */	NULL,
+    /* realize		  */	NULL,
+    /* actions		  */	NULL,
+    /* num_actions	  */	0,
+    /* resources	  */	resources,
+    /* num_resources	  */	XtNumber(resources),
+    /* xrm_class	  */	NULLQUARK,
+    /* compress_motion	  */	FALSE,
+    /* compress_exposure  */	TRUE,
+    /* compress_enterleave*/ 	FALSE,
+    /* visible_interest	  */	FALSE,
+    /* destroy		  */	NULL,
+    /* resize		  */	NULL,
+    /* expose		  */	NULL,
+    /* set_values	  */	NULL,
+    /* set_values_hook    */	NULL,
+    /* set_values_almost  */	RectSetValuesAlmost,
+    /* get_values_hook    */	NULL,
+    /* accept_focus	  */	NULL,
+    /* version		  */	XtVersion,
+    /* callback_offsets   */    NULL,
+    /* tm_table           */    NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */	NULL,
+    /* extension	    */  NULL
+  }
+};
+
+externaldef(rectObjClass)
+WidgetClass rectObjClass = (WidgetClass)&rectObjClassRec;
+
+/*ARGSUSED*/
+static void XtCopyAncestorSensitive(
+    Widget      widget,
+    int		offset,
+    XrmValue    *value)
+{
+    static Boolean  sensitive;
+    Widget parent = widget->core.parent;
+
+    sensitive = (parent->core.ancestor_sensitive & parent->core.sensitive);
+    value->addr = (XPointer)(&sensitive);
+}
+
+
+/*
+ * Start of rectangle object methods
+ */
+
+
+static void RectClassPartInitialize(
+    register WidgetClass wc)
+{
+    register RectObjClass roc = (RectObjClass)wc;
+    register RectObjClass super = ((RectObjClass)roc->rect_class.superclass);
+
+    /* We don't need to check for null super since we'll get to object
+       eventually, and it had better define them!  */
+
+
+    if (roc->rect_class.resize == XtInheritResize) {
+	roc->rect_class.resize = super->rect_class.resize;
+    }
+
+    if (roc->rect_class.expose == XtInheritExpose) {
+	roc->rect_class.expose = super->rect_class.expose;
+    }
+
+    if (roc->rect_class.set_values_almost == XtInheritSetValuesAlmost) {
+	roc->rect_class.set_values_almost = super->rect_class.set_values_almost;
+    }
+
+
+    if (roc->rect_class.query_geometry == XtInheritQueryGeometry) {
+	roc->rect_class.query_geometry = super->rect_class.query_geometry;
+    }
+}
+
+/*
+ * Why there isn't an Initialize Method:
+ *
+ * Initialization of the RectObj non-Resource field is done by the
+ * intrinsics in _XtCreateWidget in order that the field is initialized
+ * for use by converters during instance resource resolution.
+ */
+
+/*ARGSUSED*/
+static void RectSetValuesAlmost(
+    Widget		old,
+    Widget		new,
+    XtWidgetGeometry    *request,
+    XtWidgetGeometry    *reply)
+{
+    *request = *reply;
+}
diff --git a/libXt/src/ResConfig.c b/libXt/src/ResConfig.c
new file mode 100644
index 000000000..fd6d057c9
--- /dev/null
+++ b/libXt/src/ResConfig.c
@@ -0,0 +1,1023 @@
+/* $Xorg: ResConfig.c,v 1.5 2001/02/09 02:03:56 xorgcvs Exp $ */
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/*****************************************************************
+
+(C) COPYRIGHT International Business Machines Corp. 1992,1997
+    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.
+
+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 IBM CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 IBM Corporation 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 IBM
+Corporation.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/ResConfig.c,v 3.7 2001/08/22 22:52:19 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Intrinsic.h"
+#include "IntrinsicI.h"
+#include "Core.h"
+#include "CoreP.h"
+#include "ShellP.h"
+#include "StringDefs.h"
+#include "ResConfigP.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define MAX_BUFFER 512
+
+static void _search_child(Widget, char *, char *, char *, char *, char, char *);
+static void _set_and_search(Widget, char *, char *, char *, char *, char , char *);
+static int _locate_children(Widget, Widget **);
+
+#if defined(sun) && !defined(SVR4)
+# define Strtoul(a,b,c) (unsigned long)strtol(a,b,c)
+#else
+# define Strtoul(a,b,c) strtoul(a,b,c)
+#endif
+
+
+/*
+ * NAME: _set_resource_values
+ *
+ * FUNCTION:
+ *	This function sets the value on the widget.  It must first determine
+ *	if the last part is a valid resource for that widget.  (eg.
+ *	labelString is a valid resource for label but not for bulletin board)
+ *	It must also add the resource to the application's resource database
+ *	and then query it out using specific resource strings that it builds
+ *	from the widget information.  This ensures that a customizing tool
+ *	on-the-fly paradigm is followed:  an application that is
+ *	instantaneously updated should look the same as one that is restarted
+ *	and uses the .Xdefaults file.
+ *
+ * PARAMETERS:
+ *	w		the widget to match
+ *	resource	the resource string to be matched
+ *	value		the value to be set
+ *	last_part	the last resource part (e.g. *background)
+ *
+ * RETURN VALUES: void
+ *
+ * ERRORS: none
+ */
+static void
+_set_resource_values (
+	Widget w,
+	char *resource,
+	char *value,
+	char *last_part)
+{
+	XrmDatabase 	db = NULL;
+	char		*resource_name = NULL;
+	char		*resource_class = NULL;
+	char		*return_type;
+	XrmValue	return_value;
+	char		*resource_value;
+	Widget		cur = w;
+	char		*temp;
+	XtResourceList	resources_return = NULL;
+	Cardinal 	num_resources_return = 0;
+	Cardinal	res_index;
+	Boolean		found_resource = False;
+	Display		*dpy;
+	XrmDatabase	tmp_db;
+
+	if (!XtIsWidget (w))
+		dpy = XtDisplay (w->core.parent);
+	else
+		dpy = XtDisplay (w);
+	tmp_db = XtDatabase(dpy);
+
+	/*
+	 * get a list of all the valid resources for this widget
+	 */
+	XtGetResourceList (w->core.widget_class,
+		&resources_return, &num_resources_return);
+
+	/*
+	 * try to match the last_part of the resource string with
+	 * a resource in this resource list
+	 */
+	for (res_index=0; res_index<num_resources_return; res_index++) {
+		if ((strcmp (last_part,
+			resources_return[res_index].resource_name) == 0) ||
+		    (strcmp (last_part,
+			resources_return[res_index].resource_class) == 0)) {
+			found_resource = True;
+			break;
+		}
+	}
+
+	/*
+	 * if resource is not a valid resource for this widget
+	 * or the resource name or class are NULL
+	 * then exit this function
+	 */
+	if (!found_resource
+		|| !resources_return[res_index].resource_name
+		|| !resources_return[res_index].resource_class) {
+		XtFree ((char *) resources_return);
+		return;
+	}
+
+	/*
+	 * build the full resource name and class specifications so
+	 * that you can query the resource database
+	 * 	eg: .app.button1.foreground
+	 * 	    .App.XmPushButton.Foreground
+	 */
+	while (cur != NULL) {
+		/*
+		 * create resource name string
+		 */
+		if (resource_name) {
+			temp = XtMalloc (sizeof(char) *
+				(2 + strlen(cur->core.name)
+			   	+ strlen(resource_name)));
+			sprintf (temp, ".%s%s", cur->core.name, resource_name);
+			XtFree (resource_name);
+		} else if (!XtIsWidget (cur) || !cur->core.name) {
+			cur = XtParent(cur);
+			continue;
+		} else {
+			temp = XtMalloc (sizeof(char) *
+				(2 + strlen(cur->core.name)));
+			sprintf (temp, ".%s", cur->core.name);
+		}
+		resource_name = temp;
+
+		/*
+		 * create resource class string
+		 */
+		if ((XtIsTopLevelShell (cur)) && (XtParent (cur) == NULL)) {
+			ApplicationShellWidget	top =
+				(ApplicationShellWidget) (cur);
+
+			if (resource_class) {
+				temp = XtMalloc (sizeof(char) *
+					(2 + strlen(top->application.class)
+					+ strlen(resource_class)));
+				sprintf (temp, ".%s%s",
+					top->application.class, resource_class);
+			} else {
+				temp = XtMalloc (sizeof(char) *
+					(2 + strlen(top->application.class)));
+				sprintf (temp, ".%s",
+					top->application.class);
+			}
+		} else {
+			if (resource_class) {
+				temp = XtMalloc (sizeof(char) *
+					(2 + strlen(
+					cur->core.widget_class->core_class.class_name)
+					+ strlen(resource_class)));
+				sprintf (temp, ".%s%s",
+					cur->core.widget_class->core_class.class_name,
+					resource_class);
+			} else {
+				temp = XtMalloc (sizeof(char) *
+					(2 + strlen(
+					cur->core.widget_class->core_class.class_name)));
+				sprintf (temp, ".%s",
+					cur->core.widget_class->core_class.class_name);
+			}
+		}
+		if (resource_class != NULL)
+			XtFree (resource_class);
+		resource_class = temp;
+
+		cur = XtParent(cur);
+	}
+
+	/*
+	 * add the resource name to the end of the resource name string
+	 */
+	temp = XtMalloc (2 + strlen(resource_name) +
+		strlen(resources_return[res_index].resource_name));
+	sprintf (temp, "%s.%s", resource_name,
+		resources_return[res_index].resource_name);
+	if (resource_name != NULL)
+		XtFree (resource_name);
+	resource_name = temp;
+
+	/*
+	 * add the resource class to the end of the resource class string
+	 */
+	temp = XtMalloc (2 + strlen(resource_class) +
+		strlen(resources_return[res_index].resource_class));
+	sprintf (temp, "%s.%s", resource_class,
+		resources_return[res_index].resource_class);
+	if (resource_class != NULL)
+		XtFree (resource_class);
+	resource_class = temp;
+
+#ifdef DEBUG
+	fprintf (stderr, "resource_name = %s\n", resource_name);
+	fprintf (stderr, "resource_class = %s\n", resource_class);
+#endif
+
+	/*
+	 * put the resource and its value in a resource database and
+	 * then query it back out again using the specific name and
+	 * class resource strings that were built above.  This is
+	 * necessary to maintain a precedence similar to the .Xdefaults
+	 * file
+	 */
+	XrmPutStringResource (&db, resource, value);
+	XrmMergeDatabases (db, &tmp_db);
+	XrmGetResource (tmp_db, resource_name, resource_class,
+		&return_type, &return_value);
+	if (return_type)
+		resource_value = XtNewString (return_value.addr);
+	else
+		resource_value = XtNewString (value);
+
+#ifdef DEBUG
+	fprintf (stderr,
+		"Apply:\n\twidget = %s\n\tlast_part = %s\n\tvalue = %s\n",
+		(w->core.name == NULL) ? "NULL" : w->core.name,
+		resources_return[res_index].resource_name,
+		resource_value);
+#endif
+	/*
+	 * use XtVaSetValues with XtVaTypedArg to convert the value of
+	 * type String the the same type as the resource (last_part).
+	 * Then set the value.
+	 */
+	XtVaSetValues (w,
+		XtVaTypedArg, resources_return[res_index].resource_name,
+		XtRString, resource_value,
+		strlen (resource_value) + 1,
+		NULL);
+
+	XtFree ((char *) resources_return);
+	XtFree (resource_name);
+	XtFree (resource_class);
+	XtFree (resource_value);
+}
+
+/*
+ * NAME: _apply_values_to_children
+ *
+ * FUNCTION:
+ *	Once the resource string matches the value must be applied to
+ *	all children if applicable. (eg. App*Form.background must apply
+ *	background to all children of the Form widget)
+ *
+ * PARAMETERS:
+ *	w		the widget to match
+ *	remainder	the part of the resource string left over
+ *	resource	the resource string to be matched
+ *	value		the value to be set
+ *	last_token	the last * or . before the final resoruce part
+ *	last_part	the last resource part (e.g. *background)
+ *
+ * RETURN VALUES: void
+ *
+ * ERRORS: none
+ */
+static void
+_apply_values_to_children (
+	Widget w,
+	char *remainder,
+	char *resource,
+	char *value,
+	char last_token,
+	char *last_part)
+{
+	int 	i;
+	int	num_children;
+	Widget	*children;
+
+	/*
+	 * Recursively search through the children
+	 */
+	num_children = _locate_children (w, &children);
+
+	for (i=0; i<num_children; i++) {
+
+#ifdef DEBUG
+		if (XtIsWidget (children[i]) && XtIsWidget (w))
+			fprintf (stderr, "searching child %s of parent %s\n",
+				children[i]->core.name, w->core.name);
+		else
+			fprintf (stderr,"searching child (NULL) of parent %s\n",
+				w->core.name);
+		if (!XtIsWidget (children[i]))
+			fprintf (stderr, "children[%d] is NOT a widget\n", i);
+		if (!XtIsWidget (w))
+			fprintf (stderr, "w is NOT a widget\n");
+#endif
+
+		_set_resource_values (children[i], resource, value, last_part);
+		_apply_values_to_children (children[i], remainder,
+				resource, value, last_token, last_part);
+	}
+
+	XtFree ((char *)children);
+}
+
+/*
+ * NAME: _search_child
+ *
+ * FUNCTION:
+ *	descends through each child of the tree
+ *
+ * PARAMETERS:
+ *	w		the widget whose children are to be searched
+ *	indx		index into the resource string
+ *	remainder	the remaining part of the resource string
+ *	resource	the resource string to be matched
+ *	value		the value to be applied
+ *	last_token	the last * or . before the final resoruce part
+ *	last_part	the last resource part (e.g. *background)
+ *
+ * RETURN VALUES: none
+ *
+ * ERRORS: none
+ */
+static void
+_search_child (
+	Widget w,
+	char *indx,
+	char *remainder,
+	char *resource,
+	char *value,
+	char last_token,
+	char *last_part)
+{
+	int 	i;
+	int	num_children;
+	Widget	*children;
+
+	/*
+	 * Recursively search through the children
+	 */
+	num_children = _locate_children (w, &children);
+	for (i=0; i<num_children; i++) {
+		_set_and_search (children[i], indx, remainder, resource,
+			value, last_token, last_part);
+	}
+
+	XtFree ((char *)children);
+}
+
+/*
+ * NAME: _get_part
+ *
+ * FUNCTION:
+ * 	This routine will return the token and following part of the resource
+ * 	when given the current index it will update the index accordingly
+ *
+ * PARAMETERS:
+ *	remainder	the part of the resource string left over
+ *	indx		the index into the resource string
+ *	part		the parsed off part of the resource string
+ *
+ * RETURN VALUES:
+ *	char		the token (* or . or ?) preceding the resource part
+ *	indx		the index into the resource string
+ *	part		the parsed off part of the resource string
+ *
+ * ERRORS: none
+ */
+/* ARGSUSED */
+static char
+_get_part (
+	char *remainder,
+	char **indx,
+	char **part)
+{
+	char	buffer[MAX_BUFFER];
+	char	*buf_ptr;
+	char	token = **indx;
+	int	i = 0;
+
+	/*
+	 * copy the remainder part into the buffer
+	 */
+	buf_ptr = buffer;
+	(*indx)++;			/* get rid of the token		*/
+	while (**indx && (**indx != '.') && (**indx != '*')) {
+		*buf_ptr++ = *(*indx)++;
+		if (++i >= MAX_BUFFER - 1)
+			break;
+	}
+	*buf_ptr = '\0';
+
+	*part = XtNewString (buffer);	/* return a new string to part	*/
+
+	if (strcmp (*indx, "") == 0)
+		*indx = NULL;
+
+	return (token);			/* return the token		*/
+}
+
+/*
+ * NAME: _match_resource_to_widget
+ *
+ * FUNCTION:
+ *	This function matches the resource part to the widget name or class
+ *
+ * PARAMETERS:
+ *	w		the widget to match
+ *	part		the parsed off part of the resource string
+ *
+ * RETURN VALUES:
+ *	Boolean		true if a match occurs
+ *
+ * ERRORS: none
+ */
+static Boolean
+_match_resource_to_widget (
+	Widget w,
+	char *part)
+{
+	/*
+	 * Match any widget at this level if the ? is used
+	 */
+	if (strcmp (part, "?") == 0)
+		return (True);
+
+	/*
+	 * if the object is really a widget then its name can be matched
+	 * otherwise only use its class.  Note that if you try to reference
+	 * a widget name when the object is not a widget, you may get a
+	 * core dump from an invalid pointer reference.
+	 */
+	if (XtIsWidget (w)) {
+		if ((strcmp (w->core.name, part) == 0) ||
+		    (strcmp (w->core.widget_class->core_class.class_name,
+							part) == 0))
+			return (True);
+		else
+			return (False);
+	} else {
+		if ((strcmp (w->core.widget_class->core_class.class_name,
+							part) == 0))
+			return (True);
+		else
+			return (False);
+	}
+}
+
+/*
+ * NAME: _set_and_search
+ *
+ * FUNCTION:
+ * 	The algorithm to search the widget tree and apply a resource string
+ *
+ * PARAMETERS:
+ *	w		the widget to match
+ *	indx		the index into the resource string
+ *	remainder	the part of the resource string left over
+ *	resource	the resource string to be matched
+ *	value		the value to be set
+ *	last_token	the last * or . before the final resoruce part
+ *	last_part	the last resource part (e.g. *background)
+ *
+ * RETURN VALUES: none
+ *
+ * ERRORS: none
+ *
+ * ALGORITHM:
+ * loop (look at all children)
+ * 	if (resource segment and current widget match)
+ *		if '.'
+ *			if at end of resource string
+ *				set values (	.=over all children
+ *						*=this widget only)
+ *			else
+ *				descend the widget tree
+ *				and parse off resource segment
+ *			exit the loop
+ *		if '*'
+ *			if at end of resource string
+ *				set values (	.=over all children
+ *						*=this widget only)
+ *			descend and parse
+ *	else
+ *		if '.'
+ *			continue looping
+ *		if '*'
+ *			descend but don't parse
+ *			continue looping
+ * end loop
+ *
+ * NOTE:  the _set_resource_values routine will not allow a value to be
+ *	set on a resource against the rules of the resource database manager
+ */
+static void
+_set_and_search (
+	Widget w,
+	char *indx,
+	char *remainder,
+	char *resource,
+	char *value,
+	char last_token,
+	char *last_part)
+{
+	char	*part;
+	char	*local_index = indx;
+	char	token;
+
+	/*
+	 * parse off one part, return token and the new index
+	 */
+	token = _get_part (remainder, &local_index, &part);
+
+	if (_match_resource_to_widget (w, part)) {
+		if (token == '.') {
+			if (local_index == NULL) {
+				if (last_token == '.') {
+					_set_resource_values (w, resource,
+						value, last_part);
+				} else if (last_token == '*') {
+					_set_resource_values (w, resource,
+						value, last_part);
+					_apply_values_to_children (w,
+						remainder, resource, value,
+						last_token, last_part);
+				}
+			} else
+				_search_child (w, local_index, remainder,
+					resource, value, last_token, last_part);
+			return;
+		}
+		if (token == '*') {
+			if (local_index == NULL) {
+				if (last_token == '.') {
+					_set_resource_values (w, resource,
+						value, last_part);
+				} else if (last_token == '*') {
+					_set_resource_values (w, resource,
+						value, last_part);
+					_apply_values_to_children ( w,
+						remainder, resource, value,
+						last_token, last_part);
+				}
+			} else
+				_search_child (w, local_index, remainder,
+					resource, value, last_token, last_part);
+		}
+	} else {/* if the widget name and class don't match the part */
+		/* if (token == '.') just continue looping */
+
+		if (token == '*') {
+			_search_child (w, indx, remainder, resource, value,
+				last_token, last_part);
+		}
+	}
+
+	XtFree (part);
+}
+
+/*
+ * NAME: _get_last_part
+ *
+ * FUNCTION:
+ * 	This routine will parse off the last segment of a resource string
+ * 	and its token and return them.  the remainder of resource is also
+ * 	returned.  strcoll is used to guarantee no problems with
+ *	international strings.
+ *
+ * PARAMETERS:
+ *	remainder	the part of the resource string left over
+ *	part		the parsed off part of the resource string
+ *
+ * RETURN VALUES:
+ *	char		the token (* or . or ?) preceding the resource part
+ *	remainder	the part of the resource string left over
+ *	part		the parsed off part of the resource string
+ *
+ * ERRORS: none
+ */
+static char
+_get_last_part (
+	char *remainder,
+	char **part)
+{
+	char	*loose, *tight;
+
+	loose = strrchr (remainder, '*');
+	tight = strrchr (remainder, '.');
+
+	if ((loose == NULL) && (tight == NULL)) {
+		*part = XtNewString (remainder);
+		return ('.');
+	}
+	if ((loose == NULL) || (tight && (strcoll (loose, tight) < 0))) {
+		*tight++ = '\0';	/* shorten the remainder string */
+		*part = XtNewString (tight);
+		return ('.');
+	}
+	if ((tight == NULL) || (loose && (strcoll (tight, loose) < 0))) {
+		*loose++ = '\0';
+		*part = XtNewString (loose);
+		return ('*');
+	}
+	*part = NULL;
+
+	return ('0');	/* error - return 0 */
+}
+
+/*
+ * NAME: _search_widget_tree
+ *
+ * FUNCTION:
+ *	This function tries to match a resource string to the widgets
+ *	it applies to.  The functions it invokes to do this then set
+ *	the value for that resource to each widget.
+ *
+ *	The resource string has to be parsed into the following format:
+ *		resource = App*Form*button1.background
+ *		remainder = *Form*button1
+ *		last_part = background		last_token = .
+ *	As the widget tree is recursively descended, these variables are
+ *	passed.  The remainder is parsed at each level in the widget
+ *	tree as the _set_and_search function attempts to match
+ *	the resource part (eg. part = Form  token = *) to a widget.  When
+ *	the entire resource string has been matched, the _set_resource_values
+ *	functions is called to apply the value to the widget or widgets.
+ *
+ * PARAMETERS:
+ *	w		a widget from whose toplevel shell ancestor
+ *			the search will start
+ *	resource	the resource string to match
+ *	value		the value to apply
+ *
+ * RETURN VALUES: none
+ *
+ * ERRORS: none
+ */
+static void
+_search_widget_tree (
+	Widget w,
+	char *resource,
+	char *value)
+{
+	Widget	parent = w;
+	char	*last_part;
+	char	*remainder = NULL;
+	char	last_token;
+	char	*indx, *copy;
+	char	*loose, *tight;
+	int	loose_len, tight_len;
+
+	/*
+	 * Find the root of the tree given any widget
+	 */
+	while (XtParent(parent) != NULL) {
+		parent = XtParent(parent);
+	}
+#ifdef DEBUG
+	if (XtIsWidget (w) && XtIsWidget (parent))
+		fprintf (stderr, "widget = %s parent = %s\n",
+			w->core.name, parent->core.name);
+	else
+		fprintf (stderr, "widget = NULL parent = NULL\n");
+#endif
+
+	/*
+	 * parse off the Class name that was prepended to this string in
+	 * a customizing tool
+	 */
+	loose = strchr (resource, '*');
+	tight = strchr (resource, '.');
+	if ((loose == NULL) && (tight == NULL))
+		return;
+
+	loose_len = (loose) ? strlen (loose) : 0;
+	tight_len = (tight) ? strlen (tight) : 0;
+
+	if ((loose == NULL) || (tight_len > loose_len))
+		remainder = XtNewString (tight);
+	else if ((tight == NULL) || (loose_len > tight_len))
+		remainder = XtNewString (loose);
+
+	/*
+	 * Parse last segment off of resource string, (eg. background, font,
+	 * etc.)
+	 */
+	last_token = _get_last_part (remainder, &last_part);
+	/*
+	 * this case covers resources of only one level (eg. *background)
+	 */
+	if (strcmp (remainder, "") == 0) {
+		_set_resource_values (w, resource, value, last_part);
+		if (last_token == '*')
+			_apply_values_to_children (parent, remainder, resource,
+				value, last_token, last_part);
+	/*
+	 * all other resource strings are recursively applied to the widget tree.
+	 * Prepend a '.' to the remainder string if there is no leading token.
+	 */
+	} else {
+		if (remainder[0] != '*' && remainder[0] != '.') {
+			copy = XtMalloc (strlen(remainder) + 2);
+			sprintf (copy, ".%s", remainder);
+			XtFree (remainder);
+			remainder = copy;
+		}
+		indx = remainder;
+		_set_and_search (parent, indx, remainder, resource, value,
+			last_token, last_part);
+	}
+
+	XtFree (remainder);
+	XtFree (last_part);
+}
+
+/*
+ * NAME: _locate_children
+ *
+ * FUNCTION:
+ *	returns a list of all of a widget's children
+ *
+ * PARAMETERS:
+ *	w		the parent to search for its children
+ *	children	the list of children that is created
+ *	normal		flag for normal children
+ *	popup		flag for popup children
+ *
+ * RETURN VALUES:
+ *	int		the number of children
+ *	children	the list of children found
+ *
+ * ERRORS: none
+ */
+static int
+_locate_children (
+	Widget parent,
+	Widget **children)
+{
+	CompositeWidget comp = (CompositeWidget) parent;
+	Cardinal	i;
+	int	num_children = 0;
+	int	current = 0;
+
+	/*
+	 * count the number of children
+	 */
+	if (XtIsWidget (parent))
+		num_children += parent->core.num_popups;
+	if (XtIsComposite (parent))
+		num_children += comp->composite.num_children;
+	if (num_children == 0) {
+		*children = NULL;
+		return (0);
+	}
+
+	*children = (Widget *)
+		XtMalloc ((Cardinal) sizeof(Widget) * num_children);
+
+	if (XtIsComposite (parent)) {
+		for (i=0; i<comp->composite.num_children; i++) {
+			(*children)[current] = comp->composite.children[i];
+			current++;
+		}
+	}
+
+	if (XtIsWidget (parent)) {
+		for (i=0; i<parent->core.num_popups; i++) {
+			(*children)[current] = comp->core.popup_list[i];
+			current++;
+		}
+	}
+
+	return (num_children);
+}
+
+#ifdef DEBUG
+/*
+ * NAME: dump_widget_tree
+ *
+ * FUNCTION:
+ *	recursively printout entire widget tree
+ *
+ * PARAMETERS:
+ *	w		the widget to match
+ *	indent		the amount to indent each line
+ *
+ * RETURN VALUES: void
+ *
+ * ERRORS: none
+ */
+static void
+dump_widget_tree (
+	Widget w,
+	int	indent)
+{
+	int 	i,j;
+	int	num_children;
+	Widget	*children;
+
+	/*
+	 * Recursively search through the children
+	 */
+	num_children = _locate_children (w, &children);
+	indent += 2;
+	for (i=0; i<num_children; i++) {
+		if (children[i] != NULL) {
+			for (j=0; j<indent; j++)
+				fprintf (stderr, " ");
+			if (XtIsWidget (children[i])) {
+				fprintf (stderr, "(%s)\t",children[i]->core.name);
+				fprintf (stderr, "(%s)\n",
+			children[i]->core.widget_class->core_class.class_name);
+			} else {
+				fprintf (stderr, "(NULL)\t");
+				fprintf (stderr, "(%s)\n",
+			children[i]->core.widget_class->core_class.class_name);
+			}
+		}
+		dump_widget_tree (children[i], indent);
+	}
+
+	XtFree ((char *)children);
+}
+#endif
+
+/*
+ * NAME: _XtResourceConfiguationEH
+ *
+ * FUNCTION:
+ *	This function is the event handler for the on-the-fly communication
+ *	with a resource customization tool.  This event handler must be
+ *      registered for the toplevel shell of each app.  This is best done
+ *      in the _XtCreatePopupShell and _XtAppCreateShell functions in Xt's
+ *	Create.c source file.
+ *
+ * 	The property used to communicate with a customizing tool is
+ *	placed on the toplevel shell window of the application.  The
+ *	customizing tool places a property on this window which causes
+ *	this event handler to be invoked via the PropertyNotify event.
+ *	This event handler reads the property and then deletes it from
+ *	the server.  The contents of the property are a resource string
+ *	and value.  The event handler then calls functions to walk the
+ *	applications widget tree, determining which widgets are affected
+ *	by the resource string, and then applying the value with XtSetValues.
+ *
+ * PARAMETERS:
+ *	w		the widget that invoked this event handler
+ *	client_data	not used
+ *	event		the event structure
+ *
+ * RETURN VALUES: none
+ *
+ * ERRORS: none
+ */
+/* ARGSUSED */
+void
+_XtResourceConfigurationEH (
+	Widget w,
+	XtPointer client_data,
+	XEvent *event)
+{
+	Atom		actual_type;
+	int		actual_format;
+	unsigned long	nitems;
+	unsigned long	leftover;
+	unsigned char	*data = NULL;
+	unsigned long	resource_len;
+	char		*data_ptr;
+	char		*resource;
+	char		*value;
+#ifdef DEBUG
+	int		indent = 0;
+#endif
+	XtPerDisplay	pd;
+
+#ifdef DEBUG
+	fprintf (stderr, "in _XtResourceConfiguationEH atom = %d\n",event->xproperty.atom);
+	fprintf (stderr, "    window = %x\n", XtWindow (w));
+	if (XtIsWidget (w))
+		fprintf (stderr, "    widget = %x   name = %s\n", w, w->core.name);
+#endif
+
+	pd = _XtGetPerDisplay (XtDisplay (w));
+
+	/*
+	 * The window on which a customizing tool places the property
+	 * is determined at this point.  It should be the applications
+	 * toplevel shell window.
+	 *
+	 * A customizing tool sends a "ping" to the application on
+	 * the RCM_INIT property.  The application answers the ping
+	 * by deleting the property.
+	 */
+	if (event->xproperty.atom == pd->rcm_init) {
+		XDeleteProperty (XtDisplay(w), XtWindow (w), pd->rcm_init);
+
+#ifdef DEBUG
+		if (XtIsWidget (w))
+			fprintf (stderr, "%s\n", w->core.name);
+		else
+			fprintf (stderr, "NULL name\n");
+		dump_widget_tree(w, indent);
+
+		fprintf (stderr, "answer ping\n");
+#endif
+	}
+
+	/*
+	 * This event handler ignores any property notify events that
+	 * are not RCM_INIT or RCM_DATA
+	 */
+	if (event->xproperty.atom != pd->rcm_data)
+		return;
+
+	/*
+	 * Retrieve the data from the property
+	 */
+#ifdef DEBUG
+	fprintf (stderr, "receiving RCM_DATA property\n");
+#endif
+	if (XGetWindowProperty (XtDisplay(w),
+		XtWindow (w),
+		pd->rcm_data, 0L, 8192L,
+		TRUE, XA_STRING,
+		&actual_type, &actual_format, &nitems, &leftover,
+		&data ) == Success && actual_type == XA_STRING
+			   && actual_format == 8) {
+	/*
+	 *      data format is:
+	 *
+	 *      resource_length, resource, value
+	 *
+	 *      convert the resource_length to a long, skip over it, put a
+	 *      zero byte at the end of the resource, and pick off the
+	 *      resource and value fields.
+	 */
+		if (data) {
+			resource_len = Strtoul ((void *)data, &data_ptr, 10);
+			data_ptr++;
+
+			data_ptr[resource_len] = '\0';
+
+			resource = XtNewString (data_ptr);
+			value = XtNewString (&data_ptr[resource_len + 1]);
+#ifdef DEBUG
+			fprintf (stderr, "resource_len=%d\n",resource_len);
+			fprintf (stderr, "resource = %s\t value = %s\n",
+					resource, value);
+#endif
+			/*
+			 * descend the application widget tree and
+			 * apply the value to the appropriate widgets
+			 */
+			_search_widget_tree (w, resource, value);
+
+			XtFree (resource);
+			XtFree (value);
+		}
+	}
+
+	if (data)
+		XFree ((char *)data);
+}
diff --git a/libXt/src/Resources.c b/libXt/src/Resources.c
new file mode 100644
index 000000000..8e56b864f
--- /dev/null
+++ b/libXt/src/Resources.c
@@ -0,0 +1,1267 @@
+/* $Xorg: Resources.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+/* $XFree86: xc/lib/Xt/Resources.c,v 1.11tsi Exp $ */
+
+/*LINTLIBRARY*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "VarargsI.h"
+#include "Shell.h"
+#include "ShellP.h"
+#include "StringDefs.h"
+#include <stdio.h>
+
+static XrmClass	QBoolean, QString, QCallProc, QImmediate;
+static XrmName QinitialResourcesPersistent, QInitialResourcesPersistent;
+static XrmClass QTranslations, QTranslationTable;
+static XrmName Qtranslations, QbaseTranslations;
+static XrmName Qscreen;
+static XrmClass QScreen;
+
+#ifdef CRAY
+void Cjump();
+char *Cjumpp = (char *) Cjump;
+void Cjump() {}
+#endif
+
+void _XtCopyFromParent(
+    Widget      widget,
+    int		offset,
+    XrmValue    *value)
+{
+    if (widget->core.parent == NULL) {
+	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"invalidParent","xtCopyFromParent",XtCXtToolkitError,
+                  "CopyFromParent must have non-NULL parent",
+		  (String *)NULL, (Cardinal *)NULL);
+        value->addr = NULL;
+        return;
+    }
+    value->addr = (XPointer)(((char *)widget->core.parent) + offset);
+} /* _XtCopyFromParent */
+
+
+/* If the alignment characteristics of your machine are right, these may be
+   faster */
+
+#ifdef UNALIGNED
+
+void _XtCopyFromArg(
+    XtArgVal src,
+    char* dst,
+    register unsigned int size)
+{
+    if	    (size == sizeof(long))	*(long *)dst = (long)src;
+    else if (size == sizeof(short))	*(short *)dst = (short)src;
+    else if (size == sizeof(char))	*(char *)dst = (char)src;
+    else if (size == sizeof(XtPointer))	*(XtPointer *)dst = (XtPointer)src;
+    else if (size == sizeof(char*))	*(char **)dst = (char*)src;
+    else if (size == sizeof(XtArgVal))	*(XtArgVal *)dst = src;
+    else if (size > sizeof(XtArgVal))
+	(void) memmove((char *) dst, (char *)  src, (int) size);
+    else
+	(void) memmove((char *) dst, (char *) &src, (int) size);
+} /* _XtCopyFromArg */
+
+void _XtCopyToArg(
+    char* src,
+    XtArgVal *dst,
+    register unsigned int size)
+{
+    if (! (*dst)) {
+#ifdef GETVALUES_BUG
+	/* old GetValues semantics (storing directly into arglists) are bad,
+	 * but preserve for compatibility as long as arglist contains NULL.
+	 */
+        if	(size == sizeof(long))	   *dst = (XtArgVal)*(long*)src;
+	else if (size == sizeof(short))    *dst = (XtArgVal)*(short*)src;
+	else if (size == sizeof(char))	   *dst = (XtArgVal)*(char*)src;
+	else if (size == sizeof(XtPointer)) *dst = (XtArgVal)*(XtPointer*)src;
+	else if (size == sizeof(char*))    *dst = (XtArgVal)*(char**)src;
+	else if (size == sizeof(XtArgVal)) *dst = *(XtArgVal*)src;
+	else (void) memmove((char*)dst, (char*)src, (int)size);
+#else
+	XtErrorMsg("invalidGetValues", "xtGetValues", XtCXtToolkitError,
+	    "NULL ArgVal in XtGetValues", (String*) NULL, (Cardinal*) NULL);
+#endif
+    }
+    else {
+	/* proper GetValues semantics: argval is pointer to destination */
+	if	(size == sizeof(long))	   *((long*)*dst) = *(long*)src;
+	else if (size == sizeof(short))    *((short*)*dst) = *(short*)src;
+	else if (size == sizeof(char))	   *((char*)*dst) = *(char*)src;
+	else if (size == sizeof(XtPointer)) *((XtPointer*)*dst) = *(XtPointer*)src;
+	else if (size == sizeof(char*))    *((char**)*dst) = *(char**)src;
+	else if (size == sizeof(XtArgVal)) *((XtArgVal*)*dst)= *(XtArgVal*)src;
+	else (void) memmove((char*)*dst, (char*)src, (int)size);
+    }
+} /* _XtCopyToArg */
+
+static void CopyToArg(
+    char* src,
+    XtArgVal *dst,
+    register unsigned int size)
+{
+    if (! (*dst)) {
+	/* old GetValues semantics (storing directly into arglists) are bad,
+	 * but preserve for compatibility as long as arglist contains NULL.
+	 */
+        if	(size == sizeof(long))	   *dst = (XtArgVal)*(long*)src;
+	else if (size == sizeof(short))    *dst = (XtArgVal)*(short*)src;
+	else if (size == sizeof(char))	   *dst = (XtArgVal)*(char*)src;
+	else if (size == sizeof(XtPointer)) *dst = (XtArgVal)*(XtPointer*)src;
+	else if (size == sizeof(char*))    *dst = (XtArgVal)*(char**)src;
+	else if (size == sizeof(XtArgVal)) *dst = *(XtArgVal*)src;
+	else (void) memmove((char*)dst, (char*)src, (int)size);
+    }
+    else {
+	/* proper GetValues semantics: argval is pointer to destination */
+	if	(size == sizeof(long))	   *((long*)*dst) = *(long*)src;
+	else if (size == sizeof(short))    *((short*)*dst) = *(short*)src;
+	else if (size == sizeof(char))	   *((char*)*dst) = *(char*)src;
+	else if (size == sizeof(XtPointer)) *((XtPointer*)*dst) = *(XtPointer*)src;
+	else if (size == sizeof(char*))    *((char**)*dst) = *(char**)src;
+	else if (size == sizeof(XtArgVal)) *((XtArgVal*)*dst)= *(XtArgVal*)src;
+	else (void) memmove((char*)*dst, (char*)src, (int)size);
+    }
+} /* CopyToArg */
+
+#else
+void _XtCopyFromArg(
+    XtArgVal src,
+    char* dst,
+    register unsigned int size)
+{
+    if (size > sizeof(XtArgVal))
+	(void) memmove((char *) dst, (char *)  src, (int) size);
+    else {
+	union {
+	    long	longval;
+#ifdef LONG64
+	    int		intval;
+#endif
+	    short	shortval;
+	    char	charval;
+	    char*	charptr;
+	    XtPointer	ptr;
+	} u;
+	char *p = (char*)&u;
+	if	(size == sizeof(long))	    u.longval = (long)src;
+#ifdef LONG64
+	else if (size == sizeof(int))	    u.intval = (int)src;
+#endif
+	else if (size == sizeof(short))	    u.shortval = (short)src;
+	else if (size == sizeof(char))	    u.charval = (char)src;
+	else if (size == sizeof(XtPointer)) u.ptr = (XtPointer)src;
+	else if (size == sizeof(char*))	    u.charptr = (char*)src;
+	else				    p = (char*)&src;
+
+	(void) memmove(dst, p, (int) size);
+    }
+} /* _XtCopyFromArg */
+
+void _XtCopyToArg(
+    char* src,
+    XtArgVal *dst,
+    register unsigned int size)
+{
+    if (!*dst) {
+#ifdef GETVALUES_BUG
+	/* old GetValues semantics (storing directly into arglists) are bad,
+	 * but preserve for compatibility as long as arglist contains NULL.
+	 */
+	union {
+	    long	longval;
+#ifdef LONG64
+	    int		intval;
+#endif
+	    short	shortval;
+	    char	charval;
+	    char*	charptr;
+	    XtPointer	ptr;
+	} u;
+	if (size <= sizeof(XtArgVal)) {
+	    (void) memmove((char*)&u, (char*)src, (int)size );
+	    if	    (size == sizeof(long)) 	*dst = (XtArgVal)u.longval;
+#ifdef LONG64
+	    else if (size == sizeof(int))	*dst = (XtArgVal)u.intval;
+#endif
+	    else if (size == sizeof(short))	*dst = (XtArgVal)u.shortval;
+	    else if (size == sizeof(char))	*dst = (XtArgVal)u.charval;
+	    else if (size == sizeof(char*))	*dst = (XtArgVal)u.charptr;
+	    else if (size == sizeof(XtPointer))	*dst = (XtArgVal)u.ptr;
+	    else (void) memmove((char*)dst, (char*)src, (int)size );
+	}
+	else
+	    (void) memmove((char*)dst, (char*)src, (int)size );
+#else
+	XtErrorMsg("invalidGetValues", "xtGetValues", XtCXtToolkitError,
+	    "NULL ArgVal in XtGetValues", (String*) NULL, (Cardinal*) NULL);
+#endif
+    }
+    else {
+	/* proper GetValues semantics: argval is pointer to destination */
+	(void) memmove((char*)*dst, (char*)src, (int)size );
+    }
+} /* _XtCopyToArg */
+
+static void CopyToArg(
+    char* src,
+    XtArgVal *dst,
+    register unsigned int size)
+{
+    if (!*dst) {
+	/* old GetValues semantics (storing directly into arglists) are bad,
+	 * but preserve for compatibility as long as arglist contains NULL.
+	 */
+	union {
+	    long	longval;
+#ifdef LONG64
+	    int		intval;
+#endif
+	    short	shortval;
+	    char	charval;
+	    char*	charptr;
+	    XtPointer	ptr;
+	} u;
+	if (size <= sizeof(XtArgVal)) {
+	    (void) memmove((char*)&u, (char*)src, (int)size );
+	    if	    (size == sizeof(long)) 	*dst = (XtArgVal)u.longval;
+#ifdef LONG64
+	    else if (size == sizeof(int))	*dst = (XtArgVal)u.intval;
+#endif
+	    else if (size == sizeof(short))	*dst = (XtArgVal)u.shortval;
+	    else if (size == sizeof(char))	*dst = (XtArgVal)u.charval;
+	    else if (size == sizeof(char*))	*dst = (XtArgVal)u.charptr;
+	    else if (size == sizeof(XtPointer))	*dst = (XtArgVal)u.ptr;
+	    else (void) memmove((char*)dst, (char*)src, (int)size );
+	}
+	else
+	    (void) memmove((char*)dst, (char*)src, (int)size );
+    }
+    else {
+	/* proper GetValues semantics: argval is pointer to destination */
+	(void) memmove((char*)*dst, (char*)src, (int)size );
+    }
+} /* CopyToArg */
+
+#endif
+
+static Cardinal CountTreeDepth(
+    Widget w)
+{
+    Cardinal count;
+
+    for (count = 1; w != NULL; w = (Widget) w->core.parent) 
+	count++;
+
+    return count;
+}
+
+static void GetNamesAndClasses(
+    register Widget	  w,
+    register XrmNameList  names,
+    register XrmClassList classes)
+{
+    register Cardinal length, j;
+    register XrmQuark t;
+    WidgetClass class;
+
+    /* Return null-terminated quark arrays, with length the number of
+       quarks (not including NULL) */
+
+    LOCK_PROCESS;
+    for (length = 0; w != NULL; w = (Widget) w->core.parent) {
+	names[length] = w->core.xrm_name;
+	class = XtClass(w);
+	/* KLUDGE KLUDGE KLUDGE KLUDGE */
+	if (w->core.parent == NULL && XtIsApplicationShell(w)) {
+	    classes[length] =
+		((ApplicationShellWidget) w)->application.xrm_class;
+	} else classes[length] = class->core_class.xrm_class;
+	length++;
+     }
+    UNLOCK_PROCESS;
+    /* They're in backwards order, flop them around */
+    for (j = 0; j < length/2; j++) {
+	t = names[j];
+	names[j] = names[length-j-1];
+	names[length-j-1] = t;
+        t = classes[j];
+	classes[j] = classes[length-j-1];
+	classes[length-j-1] = t;
+    }
+    names[length] = NULLQUARK;
+    classes[length] = NULLQUARK;
+} /* GetNamesAndClasses */
+
+
+/* Spiffy fast compiled form of resource list.				*/
+/* XtResourceLists are compiled in-place into XrmResourceLists		*/
+/* All atoms are replaced by quarks, and offsets are -offset-1 to	*/
+/* indicate that this list has been compiled already			*/
+
+void _XtCompileResourceList(
+    register XtResourceList resources,
+    	     Cardinal       num_resources)
+{
+    register Cardinal count;
+
+#define xrmres  ((XrmResourceList) resources)
+#define PSToQ   XrmPermStringToQuark
+
+    for (count = 0; count < num_resources; resources++, count++) {
+    	xrmres->xrm_name	 = PSToQ(resources->resource_name);
+    	xrmres->xrm_class	 = PSToQ(resources->resource_class);
+    	xrmres->xrm_type	 = PSToQ(resources->resource_type);
+        xrmres->xrm_offset	 = (Cardinal)
+		(-(int)resources->resource_offset - 1);
+    	xrmres->xrm_default_type = PSToQ(resources->default_type);
+    }
+#undef PSToQ
+#undef xrmres
+} /* _XtCompileResourceList */
+
+/* Like _XtCompileResourceList, but strings are not permanent */
+static void  XrmCompileResourceListEphem(
+    register XtResourceList resources,
+    	     Cardinal       num_resources)
+{
+    register Cardinal count;
+
+#define xrmres  ((XrmResourceList) resources)
+
+    for (count = 0; count < num_resources; resources++, count++) {
+    	xrmres->xrm_name	 = StringToName(resources->resource_name);
+    	xrmres->xrm_class	 = StringToClass(resources->resource_class);
+    	xrmres->xrm_type	 = StringToQuark(resources->resource_type);
+        xrmres->xrm_offset	 = (Cardinal)
+		(-(int)resources->resource_offset - 1);
+    	xrmres->xrm_default_type = StringToQuark(resources->default_type);
+    }
+#undef xrmres
+} /* XrmCompileResourceListEphem */
+
+static void BadSize(
+    Cardinal size,
+    XrmQuark name)
+{
+    String params[2];
+    Cardinal num_params = 2;
+
+    params[0] = (String)(long) size;
+    params[1] = XrmQuarkToString(name);
+    XtWarningMsg("invalidSizeOverride", "xtDependencies", XtCXtToolkitError,
+	"Representation size %d must match superclass's to override %s",
+	params, &num_params);
+} /* BadType */
+
+/*
+ * Create a new resource list, with the class resources following the
+ * superclass's resources.  If a resource in the class list overrides
+ * a superclass resource, then just replace the superclass entry in place.
+ *
+ * At the same time, add a level of indirection to the XtResourceList to
+ * create and XrmResourceList.
+ */
+void _XtDependencies(
+    XtResourceList  *class_resp,	/* VAR */
+    Cardinal	    *class_num_resp,    /* VAR */
+    XrmResourceList *super_res,
+    Cardinal	    super_num_res,
+    Cardinal	    super_widget_size)
+{
+    register XrmResourceList *new_res;
+	     Cardinal	     new_num_res;
+	     XrmResourceList class_res = (XrmResourceList) *class_resp;
+	     Cardinal        class_num_res = *class_num_resp;
+    register Cardinal	     i, j;
+	     Cardinal        new_next;
+
+    if (class_num_res == 0) {
+	/* Just point to superclass resource list */
+	*class_resp = (XtResourceList) super_res;
+	*class_num_resp = super_num_res;
+	return;
+    }
+
+    /* Allocate and initialize new_res with superclass resource pointers */
+    new_num_res = super_num_res + class_num_res;
+    new_res = (XrmResourceList *) __XtMalloc(new_num_res*sizeof(XrmResourceList));
+    if (super_num_res > 0)
+	XtMemmove(new_res, super_res, super_num_res * sizeof(XrmResourceList));
+    
+    /* Put pointers to class resource entries into new_res */
+    new_next = super_num_res;
+    for (i = 0; i < class_num_res; i++) {
+	if ((Cardinal)(-class_res[i].xrm_offset-1) < super_widget_size) {
+	    /* Probably an override of superclass resources--look for overlap */
+	    for (j = 0; j < super_num_res; j++) {
+		if (class_res[i].xrm_offset == new_res[j]->xrm_offset) {
+		    /* Spec is silent on what fields subclass can override.
+		     * The only two of real concern are type & size.
+		     * Although allowing type to be over-ridden introduces
+		     * the possibility of errors, it's at present the only
+		     * reasonable way to allow a subclass to force a private
+		     * converter to be invoked for a subset of fields.
+		     */
+		    /* We do insist that size be identical to superclass */
+		    if (class_res[i].xrm_size != new_res[j]->xrm_size) {
+			BadSize(class_res[i].xrm_size,
+				(XrmQuark) class_res[i].xrm_name);
+			class_res[i].xrm_size = new_res[j]->xrm_size;
+		    }
+		    new_res[j] = &(class_res[i]);
+		    new_num_res--;
+		    goto NextResource;
+		}
+	    } /* for j */
+	}
+	/* Not an overlap, add an entry to new_res */
+	new_res[new_next++] = &(class_res[i]);
+NextResource:;
+    } /* for i */
+
+    /* Okay, stuff new resources back into class record */
+    *class_resp = (XtResourceList) new_res;
+    *class_num_resp = new_num_res;
+} /* _XtDependencies */
+
+
+void _XtResourceDependencies(
+    WidgetClass wc)
+{
+    WidgetClass sc;
+
+    sc = wc->core_class.superclass;
+    if (sc == NULL) {
+	_XtDependencies(&(wc->core_class.resources),
+			&(wc->core_class.num_resources),
+			(XrmResourceList *) NULL, (unsigned)0, (unsigned)0);
+    } else {
+	_XtDependencies(&(wc->core_class.resources),
+			&(wc->core_class.num_resources),
+			(XrmResourceList *) sc->core_class.resources,
+			sc->core_class.num_resources,
+			sc->core_class.widget_size);
+    }
+} /* _XtResourceDependencies */
+
+void _XtConstraintResDependencies(
+    ConstraintWidgetClass wc)
+{
+    ConstraintWidgetClass sc;
+
+    if (wc == (ConstraintWidgetClass) constraintWidgetClass) {
+	_XtDependencies(&(wc->constraint_class.resources),
+			&(wc->constraint_class.num_resources),
+			(XrmResourceList *)NULL, (unsigned)0, (unsigned)0);
+    } else {
+	sc = (ConstraintWidgetClass) wc->core_class.superclass;
+	_XtDependencies(&(wc->constraint_class.resources),
+			&(wc->constraint_class.num_resources),
+			(XrmResourceList *) sc->constraint_class.resources,
+			sc->constraint_class.num_resources,
+			sc->constraint_class.constraint_size);
+    }
+} /* _XtConstraintResDependencies */
+
+
+
+    
+XrmResourceList* _XtCreateIndirectionTable (
+    XtResourceList  resources,
+    Cardinal	    num_resources)
+{
+    register Cardinal idx;
+    XrmResourceList* table;
+
+    table = (XrmResourceList*)__XtMalloc(num_resources * sizeof(XrmResourceList));
+    for (idx = 0; idx < num_resources; idx++)
+        table[idx] = (XrmResourceList)(&(resources[idx]));
+    return table;
+}
+
+static XtCacheRef *GetResources(
+    Widget	    widget,	    /* Widget resources are associated with */
+    char*	    base,	    /* Base address of memory to write to   */
+    XrmNameList     names,	    /* Full inheritance name of widget      */
+    XrmClassList    classes,	    /* Full inheritance class of widget     */
+    XrmResourceList*  table,	    /* The list of resources required.      */
+    unsigned	    num_resources,  /* number of items in resource list     */
+    XrmQuarkList    quark_args,     /* Arg names quarkified		    */
+    ArgList	    args,	    /* ArgList to override resources	    */
+    unsigned	    num_args,       /* number of items in arg list	    */
+    XtTypedArgList  typed_args,	    /* Typed arg list to override resources */
+    Cardinal*	    pNumTypedArgs,  /* number of items in typed arg list    */
+    Boolean	    tm_hack)	    /* do baseTranslations		    */
+{
+/*
+ * assert: *pNumTypedArgs == 0 if num_args > 0
+ * assert: num_args == 0 if *pNumTypedArgs > 0
+ */
+#define SEARCHLISTLEN 100
+#define MAXRESOURCES  400
+
+    XrmValue	    value;
+    XrmQuark	    rawType;
+    XrmValue	    convValue;
+    XrmHashTable    stackSearchList[SEARCHLISTLEN];
+    XrmHashTable    *searchList = stackSearchList;
+    unsigned int    searchListSize = SEARCHLISTLEN;
+    Boolean	    found[MAXRESOURCES];
+    int		    typed[MAXRESOURCES];
+    XtCacheRef	    cache_ref[MAXRESOURCES];
+    XtCacheRef      *cache_ptr, *cache_base;
+    Boolean	    persistent_resources = True;
+    Boolean	    found_persistence = False;
+    int		    num_typed_args = *pNumTypedArgs;
+    XrmDatabase     db;
+    Boolean	    do_tm_hack = False;
+
+    if ((args == NULL) && (num_args != 0)) {
+    	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"invalidArgCount","getResources",XtCXtToolkitError,
+                 "argument count > 0 on NULL argument list",
+                   (String *)NULL, (Cardinal *)NULL);
+	num_args = 0;
+    }
+    if (num_resources == 0) {
+	return NULL;
+    } else if (num_resources >= MAXRESOURCES) {
+    	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"invalidResourceCount","getResources",XtCXtToolkitError,
+              "too many resources",
+	      (String *)NULL, (Cardinal *)NULL);
+	return NULL;
+    } else if (table == NULL) {
+    	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"invalidResourceCount","getResources",XtCXtToolkitError,
+              "resource count > 0 on NULL resource list",
+	      (String *)NULL, (Cardinal *)NULL);
+	return NULL;
+    }
+
+    /* Mark each resource as not found on arg list */
+    bzero((char *) found, (int) (num_resources * sizeof(Boolean)));
+    bzero((char *) typed, (int) (num_resources * sizeof(int)));
+
+    /* Copy the args into the resources, mark each as found */
+    {
+	register ArgList	    arg;
+	register XtTypedArgList	    typed_arg;
+	register XrmName	    argName;
+	register Cardinal	    j;
+	register int	    i;
+	register XrmResourceList rx;
+	register XrmResourceList *res;
+	for (arg = args, i = 0; (Cardinal)i < num_args; i++, arg++) {
+	    argName = quark_args[i];
+	    if (argName == QinitialResourcesPersistent) {
+		persistent_resources = (Boolean)arg->value;
+		found_persistence = True;
+		continue;
+	    }
+	    for (j = 0, res = table; j < num_resources; j++, res++) {
+		rx = *res;
+		if (argName == rx->xrm_name) {
+		    _XtCopyFromArg(
+			arg->value,
+			base - rx->xrm_offset - 1,
+			rx->xrm_size);
+		    found[j] = TRUE;
+		    break;
+		}
+	    }
+	}
+	for (typed_arg = typed_args, i = 0; i < num_typed_args;
+	     i++, typed_arg++) {
+	    register XrmRepresentation argType;
+	    argName = quark_args[i];
+	    argType = (typed_arg->type == NULL) ? NULLQUARK 
+		: XrmStringToRepresentation(typed_arg->type);
+	    if (argName == QinitialResourcesPersistent) {
+		persistent_resources = (Boolean)typed_arg->value;
+		found_persistence = True;   
+		break;
+	    }
+	    for (j = 0, res = table; j < num_resources; j++, res++) {
+		rx = *res;
+		if (argName == rx->xrm_name) {
+		    if (argType != NULLQUARK && argType != rx->xrm_type) {
+			typed[j] = i + 1;
+		    } else {
+			_XtCopyFromArg(
+				       typed_arg->value,
+				       base - rx->xrm_offset - 1,
+				       rx->xrm_size);
+		    }
+		    found[j] = TRUE;
+		    break;
+		}   
+	    }
+	}
+    }
+
+    /* Ask resource manager for a list of database levels that we can
+       do a single-level search on each resource */
+
+    db = XtScreenDatabase(XtScreenOfObject(widget));
+    while (!XrmQGetSearchList(db, names, classes,
+			      searchList, searchListSize)) {
+	if (searchList == stackSearchList)
+	    searchList = NULL;
+	searchList = (XrmHashTable*)XtRealloc((char*)searchList,
+					      sizeof(XrmHashTable) *
+					      (searchListSize *= 2));
+    }
+    
+    if (persistent_resources)
+	cache_base = NULL;
+    else
+	cache_base = cache_ref;
+    /* geez, this is an ugly mess */
+    if (XtIsShell(widget)) {
+	register XrmResourceList  *res;
+	register Cardinal	  j;
+	Screen *oldscreen = widget->core.screen;
+
+	/* look up screen resource first, since real rdb depends on it */
+	for (res = table, j = 0; j < num_resources; j++, res++) {
+	    if ((*res)->xrm_name != Qscreen)
+		continue;
+	    if (typed[j]) {
+		register XtTypedArg* arg = typed_args + typed[j] - 1;
+		XrmQuark from_type;
+		XrmValue from_val, to_val;
+
+		from_type = StringToQuark(arg->type);
+		from_val.size = arg->size;
+		if ((from_type == QString) || ((unsigned) arg->size > sizeof(XtArgVal)))
+		    from_val.addr = (XPointer)arg->value;
+		else
+		    from_val.addr = (XPointer)&arg->value;
+		to_val.size = sizeof(Screen*);
+		to_val.addr = (XPointer)&widget->core.screen;
+		found[j] = _XtConvert(widget, from_type, &from_val,
+				      QScreen, &to_val, cache_base);
+		if (cache_base && *cache_base)
+		    cache_base++;
+	    }
+	    if (!found[j]) {
+		if (XrmQGetSearchResource(searchList, Qscreen, QScreen,
+				      &rawType, &value)) {
+		    if (rawType != QScreen) {
+			convValue.size = sizeof(Screen*);
+			convValue.addr = (XPointer)&widget->core.screen;
+			(void)_XtConvert(widget, rawType, &value,
+					 QScreen, &convValue, cache_base);
+			if (cache_base && *cache_base)
+			    cache_base++;
+		    } else {
+			widget->core.screen = *((Screen **)value.addr);
+		    }
+		}
+	    }
+	    break;
+	}
+	/* now get the database to use for the rest of the resources */
+	if (widget->core.screen != oldscreen) {
+	    db = XtScreenDatabase(widget->core.screen);
+	    while (!XrmQGetSearchList(db, names, classes,
+				      searchList, searchListSize)) {
+		if (searchList == stackSearchList)
+		    searchList = NULL;
+		searchList = (XrmHashTable*)XtRealloc((char*)searchList,
+						      sizeof(XrmHashTable) *
+						      (searchListSize *= 2));
+	    }
+	}
+    }
+
+    /* go to the resource manager for those resources not found yet */
+    /* if it's not in the resource database use the default value   */
+
+    {
+	register XrmResourceList  rx;
+	register XrmResourceList  *res;
+	register Cardinal	  j;
+	register XrmRepresentation xrm_type;
+	register XrmRepresentation xrm_default_type;
+	char	char_val;
+	short	short_val;
+	int	int_val;
+	long	long_val;
+	char*	char_ptr;
+
+	if (!found_persistence) {
+	    if (XrmQGetSearchResource(searchList, QinitialResourcesPersistent,
+			QInitialResourcesPersistent, &rawType, &value)) {
+		if (rawType != QBoolean) {
+		    convValue.size = sizeof(Boolean);
+		    convValue.addr = (XPointer)&persistent_resources;
+		    (void)_XtConvert(widget, rawType, &value, QBoolean,
+				     &convValue, NULL);
+		}
+		else
+		    persistent_resources = *(Boolean*)value.addr;
+	    }
+	}
+	if (persistent_resources)
+	    cache_ptr = NULL;
+	else if (cache_base)
+	    cache_ptr = cache_base;
+	else
+	    cache_ptr = cache_ref;
+
+	for (res = table, j = 0; j < num_resources; j++, res++) {
+	    rx = *res;
+	    xrm_type = rx->xrm_type;
+	    if (typed[j]) {
+		register XtTypedArg* arg = typed_args + typed[j] - 1;
+
+		/*
+                 * This resource value has been specified as a typed arg and 
+		 * has to be converted. Typed arg conversions are done here 
+		 * to correctly interpose them with normal resource conversions.
+                 */
+		XrmQuark	    from_type;
+		XrmValue            from_val, to_val;
+		Boolean		    converted;
+                 
+		from_type = StringToQuark(arg->type);
+    		from_val.size = arg->size;
+		if ((from_type == QString) || ((unsigned) arg->size > sizeof(XtArgVal)))
+        	    from_val.addr = (XPointer)arg->value;
+	        else
+            	    from_val.addr = (XPointer)&arg->value;
+		to_val.size = rx->xrm_size;
+		to_val.addr = base - rx->xrm_offset - 1;
+		converted = _XtConvert(widget, from_type, &from_val,
+				       xrm_type, &to_val, cache_ptr);
+		if (converted) {
+
+		    /* Copy the converted value back into the typed argument.
+		     * normally the data should be <= sizeof(XtArgVal) and
+		     * is stored directly into the 'value' field .... BUT
+		     * if the resource size is greater than sizeof(XtArgVal)
+		     * then we dynamically alloc a block of store to hold the
+		     * data and zap a copy in there !!! .... freeing it later
+		     * the size field in the typed arg is negated to indicate
+		     * that the store pointed to by the value field is
+		     * dynamic .......
+		     * "freeing" happens in the case of _XtCreate after the
+		     * CallInitialize ..... other clients of GetResources
+		     * using typed args should be aware of the need to free
+		     * this store .....
+		     */
+
+		    if(rx->xrm_size > sizeof(XtArgVal)) {
+			arg->value = (XtArgVal) __XtMalloc(rx->xrm_size);
+			arg->size = -(arg->size);
+		    } else { /* will fit - copy directly into value field */
+			arg->value = (XtArgVal) NULL;
+		    }
+		    CopyToArg((char *)(base - rx->xrm_offset - 1),
+				 &arg->value, rx->xrm_size);
+
+		} else {
+		   /* Conversion failed. Get default value. */
+		   found[j] = False;
+		}
+
+		if (cache_ptr && *cache_ptr)
+		    cache_ptr++;
+	    }
+
+	    if (!found[j]) {
+		Boolean	already_copied = False;
+		Boolean have_value = False;
+
+		if (XrmQGetSearchResource(searchList,
+			rx->xrm_name, rx->xrm_class, &rawType, &value)) {
+		    if (rawType != xrm_type) {
+			convValue.size = rx->xrm_size;
+			convValue.addr = (XPointer)(base - rx->xrm_offset - 1);
+			already_copied = have_value =
+			    _XtConvert(widget, rawType, &value,
+				       xrm_type, &convValue, cache_ptr);
+			if (cache_ptr && *cache_ptr)
+			    cache_ptr++;
+		    } else have_value = True;
+		    if (have_value && rx->xrm_name == Qtranslations)
+			do_tm_hack = True;
+		}
+		LOCK_PROCESS;
+		if (!have_value
+		    && ((rx->xrm_default_type == QImmediate)
+			|| (rx->xrm_default_type == xrm_type)
+			|| (rx->xrm_default_addr != NULL))) {
+		    /* Convert default value to proper type */
+		    xrm_default_type = rx->xrm_default_type;
+		    if (xrm_default_type == QCallProc) {
+#ifdef CRAY
+ 			if ( (int) Cjumpp != (int) Cjump)
+ 			    (*(XtResourceDefaultProc)
+			      (((int)(rx->xrm_default_addr))<<2))(
+ 				 widget,-(rx->xrm_offset+1), &value);
+			else
+#endif
+			(*(XtResourceDefaultProc)(rx->xrm_default_addr))(
+			      widget,-(rx->xrm_offset+1), &value);
+
+		    } else if (xrm_default_type == QImmediate) {
+			/* XtRImmediate == XtRString for type XtRString */
+			if (xrm_type == QString) {
+			    value.addr = rx->xrm_default_addr;
+			} else if (rx->xrm_size == sizeof(int)) {
+			    int_val = (int)(long)rx->xrm_default_addr;
+			    value.addr = (XPointer) &int_val;
+			} else if (rx->xrm_size == sizeof(short)) {
+			    short_val = (short)(long)rx->xrm_default_addr;
+			    value.addr = (XPointer) &short_val;
+			} else if (rx->xrm_size == sizeof(char)) {
+			    char_val = (char)(long)rx->xrm_default_addr;
+			    value.addr = (XPointer) &char_val;
+			} else if (rx->xrm_size == sizeof(long)) {
+			    long_val = (long)rx->xrm_default_addr;
+			    value.addr = (XPointer) &long_val;
+			} else if (rx->xrm_size == sizeof(char*)) {
+			    char_ptr = (char*)rx->xrm_default_addr;
+			    value.addr = (XPointer) &char_ptr;
+			} else {
+			    value.addr = (XPointer) &(rx->xrm_default_addr);
+			}
+		    } else if (xrm_default_type == xrm_type) {
+			value.addr = rx->xrm_default_addr;
+		    } else {
+			value.addr = rx->xrm_default_addr;
+			if (xrm_default_type == QString) {
+			    value.size = strlen((char *)value.addr) + 1;
+			} else {
+			    value.size = sizeof(XtPointer);
+			}
+			convValue.size = rx->xrm_size;
+			convValue.addr = (XPointer)(base - rx->xrm_offset - 1);
+			already_copied =
+			    _XtConvert(widget, xrm_default_type, &value,
+				       xrm_type, &convValue, cache_ptr);
+			if (!already_copied)
+			    value.addr = NULL;
+			if (cache_ptr && *cache_ptr)
+			    cache_ptr++;
+		    }
+		}
+		if (!already_copied) {
+		    if (xrm_type == QString) {
+			*((String*)(base - rx->xrm_offset - 1)) = value.addr;
+		    } else {
+			if (value.addr != NULL) {
+			    XtMemmove(base - rx->xrm_offset - 1,
+				      value.addr, rx->xrm_size);
+			} else {
+			    /* didn't get value, initialize to NULL... */
+			    XtBZero(base - rx->xrm_offset - 1, rx->xrm_size);
+			}
+		    }
+		}
+		UNLOCK_PROCESS;
+
+		if (typed[j]) {
+		    /*
+		     * This resource value was specified as a typed arg.
+		     * However, the default value is being used here since
+		     * type type conversion failed, so we compress the list.
+		     */
+		    register XtTypedArg* arg = typed_args + typed[j] - 1;
+		    register int i;
+
+		    for (i = num_typed_args - typed[j]; i; i--, arg++) {
+			*arg = *(arg+1);
+		    }
+		    num_typed_args--;
+		}
+	    } 
+	}
+	if (tm_hack)
+	    widget->core.tm.current_state = NULL;
+	if (tm_hack &&
+	    (!widget->core.tm.translations ||
+	     (do_tm_hack &&
+	      widget->core.tm.translations->operation != XtTableReplace)) &&
+	    XrmQGetSearchResource(searchList, QbaseTranslations,
+				  QTranslations, &rawType, &value)) {
+	    if (rawType != QTranslationTable) {
+		convValue.size = sizeof(XtTranslations);
+		convValue.addr = (XPointer)&widget->core.tm.current_state;
+		(void)_XtConvert(widget, rawType, &value,
+				 QTranslationTable, &convValue, cache_ptr);
+		if (cache_ptr && *cache_ptr)
+		    cache_ptr++;
+	    } else {
+		*((XtTranslations *)&widget->core.tm.current_state) =
+		    *((XtTranslations *)value.addr);
+	    }
+	}
+    }
+    if ((Cardinal)num_typed_args != *pNumTypedArgs) *pNumTypedArgs = num_typed_args;
+    if (searchList != stackSearchList) XtFree((char*)searchList);
+    if (!cache_ptr)
+	cache_ptr = cache_base;
+    if (cache_ptr && cache_ptr != cache_ref) {
+	int cache_ref_size = cache_ptr - cache_ref;
+	XtCacheRef *refs = (XtCacheRef*)
+	    __XtMalloc((unsigned)sizeof(XtCacheRef)*(cache_ref_size + 1));
+	(void) memmove(refs, cache_ref, sizeof(XtCacheRef)*cache_ref_size );
+	refs[cache_ref_size] = NULL;
+	return refs;
+    }
+    return (XtCacheRef*)NULL;
+}
+
+
+
+static void CacheArgs(
+    ArgList	    args,
+    Cardinal	    num_args,
+    XtTypedArgList  typed_args,
+    Cardinal	    num_typed_args,
+    XrmQuarkList    quark_cache,
+    Cardinal	    num_quarks,
+    XrmQuarkList    *pQuarks)       /* RETURN */
+{
+    register XrmQuarkList   quarks;
+    register Cardinal       i;
+    register Cardinal       count;
+
+    count = (args != NULL) ? num_args : num_typed_args;
+
+    if (num_quarks < count) {
+	quarks = (XrmQuarkList) __XtMalloc(count * sizeof(XrmQuark));
+    } else {
+	quarks = quark_cache;
+    }
+    *pQuarks = quarks;
+
+    if (args != NULL) {
+	for (i = count; i; i--)
+	    *quarks++ = StringToQuark((args++)->name);
+    }
+    else {
+	for (i = count; i; i--)
+	    *quarks++ = StringToQuark((typed_args++)->name);
+    }
+}
+
+#define FreeCache(cache, pointer) \
+	  if (cache != pointer) XtFree((char *)pointer)
+
+
+XtCacheRef *_XtGetResources(
+    register 	Widget	  	w,
+    		ArgList	  	args,
+    		Cardinal  	num_args,
+		XtTypedArgList	typed_args,
+		Cardinal*	num_typed_args)
+{
+    XrmName	    *names, names_s[50];
+    XrmClass	    *classes, classes_s[50];
+    XrmQuark	    quark_cache[100];
+    XrmQuarkList    quark_args;
+    WidgetClass     wc;
+    ConstraintWidgetClass   cwc;
+    XtCacheRef	    *cache_refs, *cache_refs_core;
+    Cardinal	    count;
+
+    wc = XtClass(w);
+
+    count = CountTreeDepth(w);
+    names = (XrmName*) XtStackAlloc (count * sizeof(XrmName), names_s);
+    classes = (XrmClass*) XtStackAlloc (count * sizeof(XrmClass), classes_s);
+    if (names == NULL || classes == NULL) _XtAllocError(NULL);
+
+    /* Get names, classes for widget and ancestors */
+    GetNamesAndClasses(w, names, classes);
+   
+    /* Compile arg list into quarks */
+    CacheArgs(args, num_args, typed_args, *num_typed_args, quark_cache,
+	      XtNumber(quark_cache), &quark_args);
+
+    /* Get normal resources */
+    LOCK_PROCESS;
+    cache_refs = GetResources(w, (char*)w, names, classes,
+	(XrmResourceList *) wc->core_class.resources,
+	wc->core_class.num_resources, quark_args, args, num_args,
+	typed_args, num_typed_args, XtIsWidget(w));
+
+    if (w->core.constraints != NULL) {
+	cwc = (ConstraintWidgetClass) XtClass(w->core.parent);
+	cache_refs_core =
+	    GetResources(w, (char*)w->core.constraints, names, classes,
+	    (XrmResourceList *) cwc->constraint_class.resources,
+	    cwc->constraint_class.num_resources,
+	    quark_args, args, num_args, typed_args, num_typed_args, False);
+	if (cache_refs_core) {
+	    XtFree((char *)cache_refs_core);
+	}
+    }
+    FreeCache(quark_cache, quark_args);
+    UNLOCK_PROCESS;
+    XtStackFree((XtPointer)names, names_s);
+    XtStackFree((XtPointer)classes, classes_s);
+    return cache_refs;
+} /* _XtGetResources */
+
+
+void _XtGetSubresources (
+    Widget	  w,			/* Widget "parent" of subobject   */
+    XtPointer	  base,			/* Base address to write to       */
+    const char*   name,			/* name of subobject		    */
+    const char*   class,		/* class of subobject		    */
+    XtResourceList resources,		/* resource list for subobject    */
+    Cardinal	  num_resources,	                                    
+    ArgList	  args,			/* arg list to override resources */
+    Cardinal	  num_args,
+    XtTypedArgList typed_args,
+    Cardinal      num_typed_args)
+{
+    XrmName	  *names, names_s[50];
+    XrmClass	  *classes, classes_s[50];
+    XrmQuark	  quark_cache[100];
+    XrmQuarkList  quark_args;
+    XrmResourceList* table;
+    Cardinal	  count, ntyped_args = num_typed_args;
+    XtCacheRef    *Resrc = NULL;
+    WIDGET_TO_APPCON(w);
+
+    if (num_resources == 0) return;
+
+    LOCK_APP(app);
+    count = CountTreeDepth(w);
+    count++;	/* make sure there's enough room for name and class */
+    names = (XrmName*) XtStackAlloc(count * sizeof(XrmName), names_s);
+    classes = (XrmClass*) XtStackAlloc(count * sizeof(XrmClass), classes_s);
+    if (names == NULL || classes == NULL) _XtAllocError(NULL);
+
+    /* Get full name, class of subobject */
+    GetNamesAndClasses(w, names, classes);
+    count -= 2;
+    names[count] = StringToName(name);
+    classes[count] = StringToClass(class);
+    count++;
+    names[count] = NULLQUARK;
+    classes[count] = NULLQUARK;
+
+    /* Compile arg list into quarks */
+    CacheArgs(args, num_args, typed_args, num_typed_args,
+	      quark_cache, XtNumber(quark_cache), &quark_args);
+
+    /* Compile resource list if needed */
+    if (((int) resources->resource_offset) >= 0) {
+	XrmCompileResourceListEphem(resources, num_resources);
+    }
+    table = _XtCreateIndirectionTable(resources, num_resources); 
+    Resrc = GetResources(w, (char*)base, names, classes, table, num_resources,
+			quark_args, args, num_args,
+			typed_args, &ntyped_args, False);
+    FreeCache(quark_cache, quark_args);
+    XtFree((char *)table);
+    XtFree((char *)Resrc);
+    XtStackFree((XtPointer)names, names_s);
+    XtStackFree((XtPointer)classes, classes_s);
+    UNLOCK_APP(app);
+}
+
+void XtGetSubresources (
+    Widget	  w,			/* Widget "parent" of subobject   */
+    XtPointer	  base,			/* Base address to write to       */
+    _Xconst char* name,			/* name of subobject		    */
+    _Xconst char* class,		/* class of subobject		    */
+    XtResourceList resources,		/* resource list for subobject    */
+    Cardinal	  num_resources,	                                    
+    ArgList	  args,			/* arg list to override resources */
+    Cardinal	  num_args)
+{
+    _XtGetSubresources (w, base, name, class, resources, num_resources, args, num_args, NULL, 0);
+}
+
+
+void _XtGetApplicationResources (
+    Widget	    w,		  /* Application shell widget       */
+    XtPointer	    base,	  /* Base address to write to       */
+    XtResourceList  resources,	  /* resource list for subobject    */
+    Cardinal	    num_resources,
+    ArgList	    args,	  /* arg list to override resources */
+    Cardinal	    num_args,
+    XtTypedArgList  typed_args,
+    Cardinal	    num_typed_args)
+{
+    XrmName	    *names, names_s[50];
+    XrmClass	    *classes, classes_s[50];
+    XrmQuark	    quark_cache[100];
+    XrmQuarkList    quark_args;
+    XrmResourceList* table;
+    Cardinal        count, ntyped_args = num_typed_args;
+#ifdef XTHREADS
+    XtAppContext    app;
+#endif
+    XtCacheRef	    *Resrc = NULL;
+
+    if (num_resources == 0) return;
+
+#ifdef XTHREADS
+    if (w == NULL) app = _XtDefaultAppContext();
+    else app = XtWidgetToApplicationContext(w);
+#endif
+
+    LOCK_APP(app);
+    /* Get full name, class of application */
+    if (w == NULL) {
+	/* hack for R2 compatibility */
+	XtPerDisplay pd = _XtGetPerDisplay(_XtDefaultAppContext()->list[0]);
+	names = (XrmName*) XtStackAlloc (2 * sizeof(XrmName), names_s);
+	classes = (XrmClass*) XtStackAlloc (2 * sizeof(XrmClass), classes_s);
+	names[0] = pd->name;
+	names[1] = NULLQUARK;
+	classes[0] = pd->class;
+	classes[1] = NULLQUARK;
+    }
+    else {
+	count = CountTreeDepth(w);
+        names = (XrmName*) XtStackAlloc(count * sizeof(XrmName), names_s);
+        classes = (XrmClass*) XtStackAlloc(count * sizeof(XrmClass), classes_s);
+	if (names == NULL || classes == NULL) _XtAllocError(NULL);
+	GetNamesAndClasses(w, names, classes);
+    }
+
+    /* Compile arg list into quarks */
+    CacheArgs(args, num_args, typed_args, num_typed_args,  quark_cache, 
+	XtNumber(quark_cache), &quark_args);
+    /* Compile resource list if needed */
+    if (((int) resources->resource_offset) >= 0) {
+#ifdef	CRAY2
+ 	if (base == 0) {	/* this client is non-portable, but... */
+ 	    int count;
+	    XtResourceList  res = resources;
+	    for (count = 0; count < num_resources; res++, count++) {
+ 		res->resource_offset *= sizeof(long);
+ 	    }
+ 	}
+#endif	/* CRAY2 */
+	XrmCompileResourceListEphem(resources, num_resources);
+    }
+    table = _XtCreateIndirectionTable(resources,num_resources);
+
+    Resrc = GetResources(w, (char*)base, names, classes, table, num_resources,
+			quark_args, args, num_args,
+			typed_args, &ntyped_args, False);
+    FreeCache(quark_cache, quark_args);
+    XtFree((char *)table);
+    XtFree((char *)Resrc);
+    if (w != NULL) {
+	XtStackFree((XtPointer)names, names_s);
+	XtStackFree((XtPointer)classes, classes_s);
+    }
+    UNLOCK_APP(app);
+}
+
+void XtGetApplicationResources (
+    Widget	    w,		  /* Application shell widget       */
+    XtPointer	    base,	  /* Base address to write to       */
+    XtResourceList  resources,	  /* resource list for subobject    */
+    Cardinal	    num_resources,
+    ArgList	    args,	  /* arg list to override resources */
+    Cardinal	    num_args)
+{
+    _XtGetApplicationResources(w, base, resources, num_resources, args, num_args, NULL, 0);
+}
+
+static Boolean initialized = FALSE;
+
+void _XtResourceListInitialize(void)
+{
+    LOCK_PROCESS;
+    if (initialized) {
+	XtWarningMsg("initializationError","xtInitialize",XtCXtToolkitError,
+                  "Initializing Resource Lists twice",
+		  (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_PROCESS;
+    	return;
+    }
+    initialized = TRUE;
+    UNLOCK_PROCESS;
+
+    QBoolean = XrmPermStringToQuark(XtCBoolean);
+    QString = XrmPermStringToQuark(XtCString);
+    QCallProc = XrmPermStringToQuark(XtRCallProc);
+    QImmediate = XrmPermStringToQuark(XtRImmediate);
+    QinitialResourcesPersistent = XrmPermStringToQuark(XtNinitialResourcesPersistent);
+    QInitialResourcesPersistent = XrmPermStringToQuark(XtCInitialResourcesPersistent);
+    Qtranslations = XrmPermStringToQuark(XtNtranslations);
+    QbaseTranslations = XrmPermStringToQuark("baseTranslations");
+    QTranslations = XrmPermStringToQuark(XtCTranslations);
+    QTranslationTable = XrmPermStringToQuark(XtRTranslationTable);
+    Qscreen = XrmPermStringToQuark(XtNscreen);
+    QScreen = XrmPermStringToQuark(XtCScreen);
+}
diff --git a/libXt/src/Selection.c b/libXt/src/Selection.c
new file mode 100644
index 000000000..aea4914a6
--- /dev/null
+++ b/libXt/src/Selection.c
@@ -0,0 +1,2295 @@
+/* $Xorg: Selection.c,v 1.4 2001/02/09 02:03:56 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Selection.c,v 3.9 2001/12/14 19:56:29 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "SelectionI.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+void _XtSetDefaultSelectionTimeout(
+	unsigned long *timeout)
+{
+	*timeout = 5000; /* default to 5 seconds */
+}
+
+void XtSetSelectionTimeout(
+	unsigned long timeout)
+{
+	XtAppSetSelectionTimeout(_XtDefaultAppContext(), timeout);
+}
+
+void XtAppSetSelectionTimeout(
+	XtAppContext app,
+	unsigned long timeout)
+{
+	LOCK_APP(app);
+	app->selectionTimeout = timeout;
+	UNLOCK_APP(app);
+}
+
+unsigned long XtGetSelectionTimeout(void)
+{
+	return XtAppGetSelectionTimeout(_XtDefaultAppContext());
+}
+
+unsigned long XtAppGetSelectionTimeout(
+	XtAppContext app)
+{
+	unsigned long retval;
+
+	LOCK_APP(app);
+	retval = app->selectionTimeout;
+	UNLOCK_APP(app);
+	return retval;
+}
+
+
+/* General utilities */
+
+static void HandleSelectionReplies(Widget, XtPointer, XEvent *, Boolean *);
+static void ReqTimedOut(XtPointer, XtIntervalId *);
+static void HandlePropertyGone(Widget, XtPointer, XEvent *, Boolean *);
+static void HandleGetIncrement(Widget, XtPointer, XEvent *, Boolean *);
+static void HandleIncremental(Display *, Widget, Atom, CallBackInfo, unsigned long);
+
+static XContext selectPropertyContext = 0;
+static XContext paramPropertyContext = 0;
+static XContext multipleContext = 0;
+
+/* Multiple utilities */
+static void AddSelectionRequests(Widget, Atom, int, Atom *, XtSelectionCallbackProc *, int, XtPointer *, Boolean *, Atom *);
+static Boolean IsGatheringRequest(Widget, Atom);
+
+#define PREALLOCED 32
+
+/* Parameter utilities */
+static void AddParamInfo(Widget, Atom, Atom);
+static void RemoveParamInfo(Widget, Atom);
+static Atom GetParamInfo(Widget, Atom);
+
+static int StorageSize[3] = {1, sizeof(short), sizeof(long)};
+#define BYTELENGTH(length, format) ((length) * StorageSize[(format)>>4])
+#define NUMELEM(bytelength, format) ((bytelength) / StorageSize[(format)>>4])
+
+/* Xlib and Xt are permitted to have different memory allocators, and in the
+ * XtSelectionCallbackProc the client is instructed to free the selection
+ * value with XtFree, so the selection value received from XGetWindowProperty
+ * should be copied to memory allocated through Xt.  But copying is
+ * undesirable since the selection value may be large, and, under normal
+ * library configuration copying is unnecessary.
+ */
+#ifdef XTTRACEMEMORY
+#define XT_COPY_SELECTION	1
+#endif
+
+/*ARGSUSED*/
+static void FreePropList(
+ Widget w,			/* unused */
+ XtPointer closure,
+ XtPointer callData)		/* unused */
+{
+    PropList sarray = (PropList)closure;
+    LOCK_PROCESS;
+    XDeleteContext(sarray->dpy, DefaultRootWindow(sarray->dpy),
+		   selectPropertyContext);
+    UNLOCK_PROCESS;
+    XtFree((char*)sarray->list);
+    XtFree((char*)closure);
+}
+
+
+static PropList GetPropList(
+    Display *dpy)
+{
+    PropList sarray;
+    Atom atoms[4];
+    static char* names[] = {
+	"INCR",
+	"MULTIPLE",
+	"TIMESTAMP",
+	"_XT_SELECTION_0" };
+
+    LOCK_PROCESS;
+    if (selectPropertyContext == 0)
+	selectPropertyContext = XUniqueContext();
+    if (XFindContext(dpy, DefaultRootWindow(dpy), selectPropertyContext,
+		     (XPointer *)&sarray)) {
+	XtPerDisplay pd = _XtGetPerDisplay(dpy);
+	sarray = (PropList) __XtMalloc((unsigned) sizeof(PropListRec));
+	sarray->dpy = dpy;
+	XInternAtoms(dpy, names, 4, FALSE, atoms);
+	sarray->incr_atom = atoms[0];
+	sarray->indirect_atom = atoms[1];
+	sarray->timestamp_atom = atoms[2];
+	sarray->propCount = 1;
+	sarray->list =
+	    (SelectionProp)__XtMalloc((unsigned) sizeof(SelectionPropRec));
+	sarray->list[0].prop = atoms[3];
+	sarray->list[0].avail = TRUE;
+	(void) XSaveContext(dpy, DefaultRootWindow(dpy), selectPropertyContext,
+			    (char *) sarray);
+	_XtAddCallback( &pd->destroy_callbacks,
+			FreePropList, (XtPointer)sarray );
+    }
+    UNLOCK_PROCESS;
+    return sarray;
+}
+
+
+static Atom GetSelectionProperty(
+    Display *dpy)
+{
+ SelectionProp p;
+ int propCount;
+ char propname[80];
+ PropList sarray = GetPropList(dpy);
+
+ for (p = sarray->list, propCount=sarray->propCount;
+	propCount;
+	p++, propCount--) {
+   if (p->avail) {
+      p->avail = FALSE;
+      return(p->prop);
+   }
+ }
+ propCount = sarray->propCount++;
+ sarray->list = (SelectionProp) XtRealloc((XtPointer)sarray->list,
+  		(unsigned)(sarray->propCount*sizeof(SelectionPropRec)));
+ (void) sprintf(propname, "%s%d", "_XT_SELECTION_", propCount);
+ sarray->list[propCount].prop = XInternAtom(dpy, propname, FALSE);
+ sarray->list[propCount].avail = FALSE;
+ return(sarray->list[propCount].prop);
+}
+
+static void FreeSelectionProperty(
+    Display *dpy,
+    Atom prop)
+{
+ SelectionProp p;
+ PropList sarray;
+ if (prop == None) return;
+ LOCK_PROCESS;
+ if (XFindContext(dpy, DefaultRootWindow(dpy), selectPropertyContext,
+		  (XPointer *)&sarray))
+    XtAppErrorMsg(XtDisplayToApplicationContext(dpy),
+	    "noSelectionProperties", "freeSelectionProperty", XtCXtToolkitError,
+		"internal error: no selection property context for display",
+		 (String *)NULL,  (Cardinal *)NULL );
+ UNLOCK_PROCESS;
+ for (p = sarray->list; p; p++)
+   if (p->prop == prop) {
+      p->avail = TRUE;
+      return;
+      }
+}
+
+static void FreeInfo(
+    CallBackInfo info)
+{
+    XtFree((char*)info->incremental);
+    XtFree((char*)info->callbacks);
+    XtFree((char*)info->req_closure);
+    XtFree((char*)info->target);
+    XtFree((char*)info);
+}
+
+static CallBackInfo MakeInfo(
+    Select ctx,
+    XtSelectionCallbackProc *callbacks,
+    XtPointer *closures,
+    int count,
+    Widget widget,
+    Time time,
+    Boolean *incremental,
+    Atom *properties)
+{
+    	CallBackInfo info = XtNew(CallBackInfoRec);
+
+	info->ctx = ctx;
+	info->callbacks = (XtSelectionCallbackProc *)
+	    __XtMalloc((unsigned) (count * sizeof(XtSelectionCallbackProc)));
+	(void) memmove((char*)info->callbacks, (char*)callbacks,
+		       count * sizeof(XtSelectionCallbackProc));
+	info->req_closure =
+	    (XtPointer*)__XtMalloc((unsigned) (count * sizeof(XtPointer)));
+	(void) memmove((char*)info->req_closure, (char*)closures,
+		       count * sizeof(XtPointer));
+	if (count == 1 && properties != NULL && properties[0] != None)
+	    info->property = properties[0];
+	else {
+	    info->property = GetSelectionProperty(XtDisplay(widget));
+	    XDeleteProperty(XtDisplay(widget), XtWindow(widget),
+			    info->property);
+	}
+	info->proc = HandleSelectionReplies;
+	info->widget = widget;
+	info->time = time;
+	info->incremental = (Boolean*) __XtMalloc(count * sizeof(Boolean));
+	(void) memmove((char*)info->incremental, (char*) incremental,
+		       count * sizeof(Boolean));
+	info->current = 0;
+	info->value = NULL;
+	return (info);
+}
+
+static void RequestSelectionValue(
+    CallBackInfo info,
+    Atom selection,
+    Atom target)
+{
+#ifndef DEBUG_WO_TIMERS
+    XtAppContext app = XtWidgetToApplicationContext(info->widget);
+	info->timeout = XtAppAddTimeOut(app,
+			 app->selectionTimeout, ReqTimedOut, (XtPointer)info);
+#endif
+	XtAddEventHandler(info->widget, (EventMask)0, TRUE,
+			  HandleSelectionReplies, (XtPointer)info);
+	XConvertSelection(info->ctx->dpy, selection, target,
+			  info->property, XtWindow(info->widget), info->time);
+}
+
+
+static XContext selectContext = 0;
+
+static Select NewContext(
+    Display *dpy,
+    Atom selection)
+{
+    /* assert(selectContext != 0) */
+    Select ctx = XtNew(SelectRec);
+    ctx->dpy = dpy;
+    ctx->selection = selection;
+    ctx->widget = NULL;
+    ctx->prop_list = GetPropList(dpy);
+    ctx->ref_count = 0;
+    ctx->free_when_done = FALSE;
+    ctx->was_disowned = FALSE;
+    LOCK_PROCESS;
+    (void)XSaveContext(dpy, (Window)selection, selectContext, (char *)ctx);
+    UNLOCK_PROCESS;
+    return ctx;
+}
+
+static Select FindCtx(
+    Display *dpy,
+    Atom selection)
+{
+    Select ctx;
+
+    LOCK_PROCESS;
+    if (selectContext == 0)
+	selectContext = XUniqueContext();
+    if (XFindContext(dpy, (Window)selection, selectContext, (XPointer *)&ctx))
+	ctx = NewContext(dpy, selection);
+    UNLOCK_PROCESS;
+    return ctx;
+}
+
+/*ARGSUSED*/
+static void WidgetDestroyed(
+    Widget widget,
+    XtPointer closure, XtPointer data)
+{
+    Select ctx = (Select) closure;
+    if (ctx->widget == widget) {
+	if (ctx->free_when_done)
+	    XtFree((char*)ctx);
+	else
+	    ctx->widget = NULL;
+    }
+}
+
+/* Selection Owner code */
+
+static void HandleSelectionEvents(Widget, XtPointer, XEvent *, Boolean *);
+
+static Boolean LoseSelection(
+    Select ctx,
+    Widget widget,
+    Atom selection,
+    Time time)
+{
+    if ((ctx->widget == widget) &&
+	(ctx->selection == selection) && /* paranoia */
+	!ctx->was_disowned &&
+	((time == CurrentTime) || (time >= ctx->time)))
+    {
+	XtRemoveEventHandler(widget, (EventMask)0, TRUE,
+			     HandleSelectionEvents, (XtPointer)ctx);
+	XtRemoveCallback(widget, XtNdestroyCallback,
+			 WidgetDestroyed, (XtPointer)ctx);
+	ctx->was_disowned = TRUE; /* widget officially loses ownership */
+	/* now inform widget */
+	if (ctx->loses) {
+	    if (ctx->incremental)
+	       (*(XtLoseSelectionIncrProc)ctx->loses)
+		   (widget, &ctx->selection, ctx->owner_closure);
+	    else  (*ctx->loses)(widget, &ctx->selection);
+	}
+	return(TRUE);
+    }
+    else return(FALSE);
+}
+
+static XContext selectWindowContext = 0;
+
+/* %%% Xlib.h should make this public! */
+typedef int (*xErrorHandler)(Display*, XErrorEvent*);
+
+static xErrorHandler oldErrorHandler = NULL;
+static unsigned long firstProtectRequest;
+static Window errorWindow;
+
+static int LocalErrorHandler (
+    Display *dpy,
+    XErrorEvent *error)
+{
+    int retval;
+
+    /* If BadWindow error on selection requestor, nothing to do but let
+     * the transfer timeout.  Otherwise, invoke saved error handler. */
+
+    LOCK_PROCESS;
+
+    if (error->error_code == BadWindow && error->resourceid == errorWindow &&
+	error->serial >= firstProtectRequest) {
+	UNLOCK_PROCESS;
+	return 0;
+    }
+
+    if (oldErrorHandler == NULL) {
+	UNLOCK_PROCESS;
+	return 0;  /* should never happen */
+    }
+
+    retval = (*oldErrorHandler)(dpy, error);
+    UNLOCK_PROCESS;
+    return retval;
+}
+
+static void StartProtectedSection(
+    Display *dpy,
+    Window window)
+{
+    /* protect ourselves against request window being destroyed
+     * before completion of transfer */
+
+    LOCK_PROCESS;
+    oldErrorHandler = XSetErrorHandler(LocalErrorHandler);
+    firstProtectRequest = NextRequest(dpy);
+    errorWindow = window;
+    UNLOCK_PROCESS;
+}
+
+static void EndProtectedSection(
+    Display *dpy)
+{
+    /* flush any generated errors on requestor and
+     * restore original error handler */
+
+    XSync(dpy, False);
+
+    LOCK_PROCESS;
+    XSetErrorHandler(oldErrorHandler);
+    oldErrorHandler = NULL;
+    UNLOCK_PROCESS;
+}
+
+static void AddHandler(
+    Request req,
+    EventMask mask,
+    XtEventHandler proc,
+    XtPointer closure)
+{
+    Display *dpy = req->ctx->dpy;
+    Window window = req->requestor;
+    Widget widget = XtWindowToWidget(dpy, window);
+
+    if (widget != NULL) req->widget = widget;
+    else widget = req->widget;
+
+    if (XtWindow(widget) == window)
+	XtAddEventHandler(widget, mask, False, proc, closure);
+    else {
+	RequestWindowRec *requestWindowRec;
+	LOCK_PROCESS;
+	if (selectWindowContext == 0)
+	    selectWindowContext = XUniqueContext();
+	if (XFindContext(dpy, window, selectWindowContext,
+			 (XPointer *)&requestWindowRec)) {
+	    requestWindowRec = XtNew(RequestWindowRec);
+	    requestWindowRec->active_transfer_count = 0;
+	    (void)XSaveContext(dpy, window, selectWindowContext,
+			       (char *)requestWindowRec);
+	}
+	UNLOCK_PROCESS;
+	if (requestWindowRec->active_transfer_count++ == 0) {
+	    XtRegisterDrawable(dpy, window, widget);
+	    XSelectInput(dpy, window, mask);
+	}
+	XtAddRawEventHandler(widget, mask, FALSE, proc, closure);
+    }
+}
+
+static void RemoveHandler(
+    Request req,
+    EventMask mask,
+    XtEventHandler proc,
+    XtPointer closure)
+{
+    Display *dpy = req->ctx->dpy;
+    Window window = req->requestor;
+    Widget widget = req->widget;
+
+    if ((XtWindowToWidget(dpy, window) == widget) &&
+        (XtWindow(widget) != window)) {
+	/* we had to hang this window onto our widget; take it off */
+	RequestWindowRec* requestWindowRec;
+	XtRemoveRawEventHandler(widget, mask, TRUE, proc, closure);
+	LOCK_PROCESS;
+	(void)XFindContext(dpy, window, selectWindowContext,
+			   (XPointer *)&requestWindowRec);
+	UNLOCK_PROCESS;
+	if (--requestWindowRec->active_transfer_count == 0) {
+	    XtUnregisterDrawable(dpy, window);
+	    StartProtectedSection(dpy, window);
+	    XSelectInput(dpy, window, 0L);
+	    EndProtectedSection(dpy);
+	    LOCK_PROCESS;
+	    (void)XDeleteContext(dpy, window, selectWindowContext);
+	    UNLOCK_PROCESS;
+	    XtFree((char*)requestWindowRec);
+	}
+    } else {
+        XtRemoveEventHandler(widget, mask, TRUE,  proc, closure);
+    }
+}
+
+/* ARGSUSED */
+static void OwnerTimedOut(
+    XtPointer closure,
+    XtIntervalId   *id)
+{
+    Request req = (Request)closure;
+    Select ctx = req->ctx;
+
+    if (ctx->incremental && (ctx->owner_cancel != NULL)) {
+	(*ctx->owner_cancel)(ctx->widget, &ctx->selection,
+			     &req->target, (XtRequestId*)&req,
+			     ctx->owner_closure);
+    } else {
+	if (ctx->notify == NULL)
+	    XtFree((char*)req->value);
+	else {
+	    /* the requestor hasn't deleted the property, but
+	     * the owner needs to free the value.
+	     */
+	    if (ctx->incremental)
+		(*(XtSelectionDoneIncrProc)ctx->notify)
+			      (ctx->widget, &ctx->selection, &req->target,
+			       (XtRequestId*)&req, ctx->owner_closure);
+	    else
+		(*ctx->notify)(ctx->widget, &ctx->selection, &req->target);
+	}
+    }
+
+    RemoveHandler(req, (EventMask)PropertyChangeMask,
+		  HandlePropertyGone, closure);
+    XtFree((char*)req);
+    if (--ctx->ref_count == 0 && ctx->free_when_done)
+	XtFree((char*)ctx);
+}
+
+static void SendIncrement(
+    Request incr)
+{
+    Display *dpy = incr->ctx->dpy;
+
+    unsigned long incrSize = MAX_SELECTION_INCR(dpy);
+    if (incrSize > incr->bytelength - incr->offset)
+        incrSize = incr->bytelength - incr->offset;
+    StartProtectedSection(dpy, incr->requestor);
+    XChangeProperty(dpy, incr->requestor, incr->property,
+    	    incr->type, incr->format, PropModeReplace,
+	    (unsigned char *)incr->value + incr->offset,
+	    NUMELEM((int)incrSize, incr->format));
+    EndProtectedSection(dpy);
+    incr->offset += incrSize;
+}
+
+static void AllSent(
+    Request req)
+{
+    Select ctx = req->ctx;
+    StartProtectedSection(ctx->dpy, req->requestor);
+    XChangeProperty(ctx->dpy, req->requestor,
+		    req->property, req->type,  req->format,
+		    PropModeReplace, (unsigned char *) NULL, 0);
+    EndProtectedSection(ctx->dpy);
+    req->allSent = TRUE;
+
+    if (ctx->notify == NULL) XtFree((char*)req->value);
+}
+
+/*ARGSUSED*/
+static void HandlePropertyGone(
+    Widget widget,
+    XtPointer closure,
+    XEvent *ev,
+    Boolean *cont)
+{
+    XPropertyEvent *event = (XPropertyEvent *) ev;
+    Request req = (Request)closure;
+    Select ctx = req->ctx;
+
+    if ((event->type != PropertyNotify) ||
+        (event->state != PropertyDelete) ||
+	(event->atom != req->property) ||
+	(event->window != req->requestor))
+      return;
+#ifndef DEBUG_WO_TIMERS
+    XtRemoveTimeOut(req->timeout);
+#endif
+    if (req->allSent) {
+	if (ctx->notify) {
+	    if (ctx->incremental) {
+		(*(XtSelectionDoneIncrProc)ctx->notify)
+			      (ctx->widget, &ctx->selection, &req->target,
+			       (XtRequestId*)&req, ctx->owner_closure);
+	    }
+	    else (*ctx->notify)(ctx->widget, &ctx->selection, &req->target);
+	}
+	RemoveHandler(req, (EventMask)PropertyChangeMask,
+		      HandlePropertyGone, closure);
+	XtFree((char*)req);
+	if (--ctx->ref_count == 0 && ctx->free_when_done)
+	    XtFree((char*)ctx);
+    } else  { /* is this part of an incremental transfer? */
+	if (ctx->incremental) {
+	     if (req->bytelength == 0)
+		AllSent(req);
+	     else {
+		unsigned long size = MAX_SELECTION_INCR(ctx->dpy);
+    		SendIncrement(req);
+		(*(XtConvertSelectionIncrProc)ctx->convert)
+			   (ctx->widget, &ctx->selection, &req->target,
+			    &req->type, &req->value,
+			    &req->bytelength, &req->format,
+			    &size, ctx->owner_closure, (XtPointer*)&req);
+		if (req->bytelength)
+		    req->bytelength = BYTELENGTH(req->bytelength, req->format);
+		req->offset = 0;
+	    }
+	} else {
+	    if (req->offset < req->bytelength)
+		SendIncrement(req);
+	    else AllSent(req);
+	}
+#ifndef DEBUG_WO_TIMERS
+	{
+	  XtAppContext app = XtWidgetToApplicationContext(req->widget);
+	  req->timeout = XtAppAddTimeOut(app,
+			 app->selectionTimeout, OwnerTimedOut, (XtPointer)req);
+	}
+#endif
+    }
+}
+
+static void PrepareIncremental(
+    Request req,
+    Widget widget,
+    Window window,
+    Atom property,
+    Atom target,
+    Atom targetType,
+    XtPointer value,
+    unsigned long length,
+    int format)
+{
+	req->type = targetType;
+	req->value = value;
+	req->bytelength = BYTELENGTH(length,format);
+	req->format = format;
+	req->offset = 0;
+	req->target = target;
+	req->widget = widget;
+	req->allSent = FALSE;
+#ifndef DEBUG_WO_TIMERS
+	{
+	XtAppContext app = XtWidgetToApplicationContext(widget);
+	req->timeout = XtAppAddTimeOut(app,
+			 app->selectionTimeout, OwnerTimedOut, (XtPointer)req);
+	}
+#endif
+	AddHandler(req, (EventMask)PropertyChangeMask,
+		   HandlePropertyGone, (XtPointer)req);
+/* now send client INCR property */
+	XChangeProperty(req->ctx->dpy, window, req->property,
+			req->ctx->prop_list->incr_atom,
+			32, PropModeReplace,
+			(unsigned char *)&req->bytelength, 1);
+}
+
+static Boolean GetConversion(
+    Select ctx,			/* logical owner */
+    XSelectionRequestEvent* event,
+    Atom target,
+    Atom property,		/* requestor's property */
+    Widget widget)		/* physical owner (receives events) */
+{
+    XtPointer value = NULL;
+    unsigned long length;
+    int format;
+    Atom targetType;
+    Request req = XtNew(RequestRec);
+    Boolean timestamp_target = (target == ctx->prop_list->timestamp_atom);
+
+    req->ctx = ctx;
+    req->event = *event;
+    req->property = property;
+    req->requestor = event->requestor;
+
+    if (timestamp_target) {
+	value = __XtMalloc(sizeof(long));
+	*(long*)value = ctx->time;
+	targetType = XA_INTEGER;
+	length = 1;
+	format = 32;
+    }
+    else {
+	ctx->ref_count++;
+	if (ctx->incremental == TRUE) {
+	     unsigned long size = MAX_SELECTION_INCR(ctx->dpy);
+	     if ((*(XtConvertSelectionIncrProc)ctx->convert)
+			       (ctx->widget, &event->selection, &target,
+				&targetType, &value, &length, &format,
+				&size, ctx->owner_closure, (XtRequestId*)&req)
+		     == FALSE) {
+		 XtFree((char*)req);
+		 ctx->ref_count--;
+		 return(FALSE);
+	     }
+	     StartProtectedSection(ctx->dpy, event->requestor);
+	     PrepareIncremental(req, widget, event->requestor, property,
+				target, targetType, value, length, format);
+	     return(TRUE);
+	}
+	ctx->req = req;
+	if ((*ctx->convert)(ctx->widget, &event->selection, &target,
+			    &targetType, &value, &length, &format) == FALSE) {
+	    XtFree((char*)req);
+	    ctx->req = NULL;
+	    ctx->ref_count--;
+	    return(FALSE);
+	}
+	ctx->req = NULL;
+    }
+    StartProtectedSection(ctx->dpy, event->requestor);
+    if (BYTELENGTH(length,format) <= (unsigned long) MAX_SELECTION_INCR(ctx->dpy)) {
+	if (! timestamp_target) {
+	    if (ctx->notify != NULL) {
+		  req->target = target;
+		  req->widget = widget;
+		  req->allSent = TRUE;
+#ifndef DEBUG_WO_TIMERS
+		  {
+		  XtAppContext app = XtWidgetToApplicationContext(req->widget);
+		  req->timeout = XtAppAddTimeOut(app,
+			 app->selectionTimeout, OwnerTimedOut, (XtPointer)req);
+		  }
+#endif
+	          AddHandler(req, (EventMask)PropertyChangeMask,
+			     HandlePropertyGone, (XtPointer)req);
+	      }
+	      else ctx->ref_count--;
+        }
+	XChangeProperty(ctx->dpy, event->requestor, property,
+			targetType, format, PropModeReplace,
+			(unsigned char *)value, (int)length);
+	/* free storage for client if no notify proc */
+	if (timestamp_target || ctx->notify == NULL) {
+	    XtFree((char*)value);
+	    XtFree((char*)req);
+	}
+    } else {
+	 PrepareIncremental(req, widget, event->requestor, property,
+			    target, targetType, value, length, format);
+    }
+    return(TRUE);
+}
+
+/*ARGSUSED*/
+static void HandleSelectionEvents(
+    Widget widget,
+    XtPointer closure,
+    XEvent *event,
+    Boolean *cont)
+{
+    Select ctx;
+    XSelectionEvent ev;
+    Atom target;
+    int count;
+    Boolean writeback = FALSE;
+
+    ctx = (Select) closure;
+    switch (event->type) {
+      case SelectionClear:
+	/* if this event is not for the selection we registered for,
+	 * don't do anything */
+	if (ctx->selection != event->xselectionclear.selection ||
+	    ctx->serial > event->xselectionclear.serial)
+	    break;
+	(void) LoseSelection(ctx, widget, event->xselectionclear.selection,
+			event->xselectionclear.time);
+	break;
+      case SelectionRequest:
+	/* if this event is not for the selection we registered for,
+	 * don't do anything */
+	if (ctx->selection != event->xselectionrequest.selection)
+	    break;
+	ev.type = SelectionNotify;
+	ev.display = event->xselectionrequest.display;
+	ev.requestor = event->xselectionrequest.requestor;
+	ev.selection = event->xselectionrequest.selection;
+	ev.time = event->xselectionrequest.time;
+	ev.target = event->xselectionrequest.target;
+	if (event->xselectionrequest.property == None) /* obsolete requestor */
+	   event->xselectionrequest.property = event->xselectionrequest.target;
+	if (ctx->widget != widget || ctx->was_disowned
+	   || ((event->xselectionrequest.time != CurrentTime)
+	        && (event->xselectionrequest.time < ctx->time)))
+	    ev.property = None;
+         else {
+	   if (ev.target == ctx->prop_list->indirect_atom) {
+	      IndirectPair *p;
+	      int format;
+	      unsigned long bytesafter, length;
+	      unsigned char *value;
+	      ev.property = event->xselectionrequest.property;
+	      StartProtectedSection(ev.display, ev.requestor);
+	      (void) XGetWindowProperty(ev.display, ev.requestor,
+			event->xselectionrequest.property, 0L, 1000000,
+			False,(Atom)AnyPropertyType, &target, &format, &length,
+			&bytesafter, &value);
+	      count = BYTELENGTH(length, format) / sizeof(IndirectPair);
+	      for (p = (IndirectPair *)value; count; p++, count--) {
+		  EndProtectedSection(ctx->dpy);
+		  if (!GetConversion(ctx, (XSelectionRequestEvent*)event,
+				     p->target, p->property, widget)) {
+
+			p->target = None;
+			writeback = TRUE;
+			StartProtectedSection(ctx->dpy, ev.requestor);
+		  }
+	      }
+	      if (writeback)
+		XChangeProperty(ev.display, ev.requestor,
+			event->xselectionrequest.property, target,
+			format, PropModeReplace, value, (int)length);
+	      XFree((char *)value);
+	  } else /* not multiple */ {
+	       if (GetConversion(ctx, (XSelectionRequestEvent*)event,
+				 event->xselectionrequest.target,
+				 event->xselectionrequest.property,
+				 widget))
+		   ev.property = event->xselectionrequest.property;
+	       else {
+		   ev.property = None;
+		   StartProtectedSection(ctx->dpy, ev.requestor);
+	       }
+	   }
+      }
+      (void) XSendEvent(ctx->dpy, ev.requestor, False, (unsigned long)NULL,
+		   (XEvent *) &ev);
+
+      EndProtectedSection(ctx->dpy);
+
+      break;
+    }
+}
+
+static Boolean OwnSelection(
+    Widget widget,
+    Atom selection,
+    Time time,
+    XtConvertSelectionProc convert,
+    XtLoseSelectionProc lose,
+    XtSelectionDoneProc notify,
+    XtCancelConvertSelectionProc cancel,
+    XtPointer closure,
+    Boolean incremental)
+{
+    Select ctx;
+    Select oldctx = NULL;
+
+    if (!XtIsRealized(widget)) return False;
+
+    ctx = FindCtx(XtDisplay(widget), selection);
+    if (ctx->widget != widget || ctx->time != time ||
+	ctx->ref_count || ctx->was_disowned)
+    {
+	Boolean replacement = FALSE;
+	Window window = XtWindow(widget);
+	unsigned long serial = XNextRequest(ctx->dpy);
+        XSetSelectionOwner(ctx->dpy, selection, window, time);
+        if (XGetSelectionOwner(ctx->dpy, selection) != window)
+	    return FALSE;
+	if (ctx->ref_count) {	/* exchange is in-progress */
+#ifdef DEBUG_ACTIVE
+	    printf( "Active exchange for widget \"%s\"; selection=0x%lx, ref_count=%d\n",
+		    XtName(widget), (long)selection, ctx->ref_count );
+#endif
+	    if (ctx->widget != widget ||
+		ctx->convert != convert ||
+		ctx->loses != lose ||
+		ctx->notify != notify ||
+		ctx->owner_cancel != cancel ||
+		ctx->incremental != incremental ||
+		ctx->owner_closure != closure)
+	    {
+		if (ctx->widget == widget) {
+		    XtRemoveEventHandler(widget, (EventMask)0, TRUE,
+					HandleSelectionEvents, (XtPointer)ctx);
+		    XtRemoveCallback(widget, XtNdestroyCallback,
+				     WidgetDestroyed, (XtPointer)ctx);
+		    replacement = TRUE;
+		}
+		else if (!ctx->was_disowned) {
+		    oldctx = ctx;
+		}
+		ctx->free_when_done = TRUE;
+		ctx = NewContext(XtDisplay(widget), selection);
+	    }
+	    else if (!ctx->was_disowned) { /* current owner is new owner */
+		ctx->time = time;
+		return TRUE;
+	    }
+	}
+    	if (ctx->widget != widget || ctx->was_disowned || replacement) {
+	    if (ctx->widget && !ctx->was_disowned && !replacement) {
+		oldctx = ctx;
+		oldctx->free_when_done = TRUE;
+		ctx = NewContext(XtDisplay(widget), selection);
+	    }
+	    XtAddEventHandler(widget, (EventMask)0, TRUE,
+			      HandleSelectionEvents, (XtPointer)ctx);
+	    XtAddCallback(widget, XtNdestroyCallback,
+			  WidgetDestroyed, (XtPointer)ctx);
+	}
+	ctx->widget = widget;	/* Selection offically changes hands. */
+	ctx->time = time;
+	ctx->serial = serial;
+    }
+    ctx->convert = convert;
+    ctx->loses = lose;
+    ctx->notify = notify;
+    ctx->owner_cancel = cancel;
+    ctx->incremental = incremental;
+    ctx->owner_closure = closure;
+    ctx->was_disowned = FALSE;
+
+    /* Defer calling the previous selection owner's lose selection procedure
+     * until the new selection is established, to allow the previous
+     * selection owner to ask for the new selection to be converted in
+     * the lose selection procedure.  The context pointer is the closure
+     * of the event handler and the destroy callback, so the old context
+     * pointer and the record contents must be preserved for LoseSelection.
+     */
+    if (oldctx) {
+	(void) LoseSelection(oldctx, oldctx->widget, selection, oldctx->time);
+	if (!oldctx->ref_count && oldctx->free_when_done)
+	    XtFree((char*)oldctx);
+    }
+    return TRUE;
+}
+
+
+Boolean XtOwnSelection(
+    Widget widget,
+    Atom selection,
+    Time time,
+    XtConvertSelectionProc convert,
+    XtLoseSelectionProc lose,
+    XtSelectionDoneProc notify)
+{
+    Boolean retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    retval = OwnSelection(widget, selection, time, convert, lose, notify,
+			(XtCancelConvertSelectionProc)NULL,
+			(XtPointer)NULL, FALSE);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+
+Boolean XtOwnSelectionIncremental(
+    Widget widget,
+    Atom selection,
+    Time time,
+    XtConvertSelectionIncrProc convert,
+    XtLoseSelectionIncrProc lose,
+    XtSelectionDoneIncrProc notify,
+    XtCancelConvertSelectionProc cancel,
+    XtPointer closure)
+{
+    Boolean retval;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    retval = OwnSelection(widget, selection, time,
+			(XtConvertSelectionProc)convert,
+			(XtLoseSelectionProc)lose,
+			(XtSelectionDoneProc)notify,
+			cancel, closure, TRUE);
+    UNLOCK_APP(app);
+    return retval;
+}
+
+
+void XtDisownSelection(
+    Widget widget,
+    Atom selection,
+    Time time)
+{
+    Select ctx;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    ctx = FindCtx(XtDisplay(widget), selection);
+    if (LoseSelection(ctx, widget, selection, time))
+	XSetSelectionOwner(XtDisplay(widget), selection, None, time);
+    UNLOCK_APP(app);
+}
+
+/* Selection Requestor code */
+
+static Boolean IsINCRtype(
+    CallBackInfo info,
+    Window window,
+    Atom prop)
+{
+    unsigned long bytesafter;
+    unsigned long length;
+    int format;
+    Atom type;
+    unsigned char *value;
+
+    if (prop == None) return False;
+
+    (void)XGetWindowProperty(XtDisplay(info->widget), window, prop, 0L, 0L,
+			     False, info->ctx->prop_list->incr_atom,
+			     &type, &format, &length, &bytesafter, &value);
+
+    return (type == info->ctx->prop_list->incr_atom);
+}
+
+/*ARGSUSED*/
+static void ReqCleanup(
+    Widget widget,
+    XtPointer closure,
+    XEvent *ev,
+    Boolean *cont)
+{
+    CallBackInfo info = (CallBackInfo)closure;
+    unsigned long bytesafter, length;
+    char *value;
+    int format;
+    Atom target;
+
+    if (ev->type == SelectionNotify) {
+	XSelectionEvent *event = (XSelectionEvent *) ev;
+	if (!MATCH_SELECT(event, info)) return; /* not really for us */
+         XtRemoveEventHandler(widget, (EventMask)0, TRUE,
+			   ReqCleanup, (XtPointer) info );
+	if (IsINCRtype(info, XtWindow(widget), event->property)) {
+	    info->proc = HandleGetIncrement;
+	    XtAddEventHandler(info->widget, (EventMask) PropertyChangeMask,
+			      FALSE, ReqCleanup, (XtPointer) info);
+	} else {
+	   if (event->property != None)
+		XDeleteProperty(event->display, XtWindow(widget),
+				event->property);
+           FreeSelectionProperty(XtDisplay(widget), info->property);
+	   FreeInfo(info);
+	}
+    } else if ((ev->type == PropertyNotify) &&
+		(ev->xproperty.state == PropertyNewValue) &&
+	        (ev->xproperty.atom == info->property)) {
+	XPropertyEvent *event = (XPropertyEvent *) ev;
+        (void) XGetWindowProperty(event->display, XtWindow(widget),
+			   event->atom, 0L, 1000000, True, AnyPropertyType,
+			   &target, &format, &length, &bytesafter,
+			   (unsigned char **) &value);
+	XFree(value);
+	if (length == 0) {
+           XtRemoveEventHandler(widget, (EventMask) PropertyChangeMask, FALSE,
+			   ReqCleanup, (XtPointer) info );
+           FreeSelectionProperty(XtDisplay(widget), info->property);
+	   XtFree(info->value);	/* requestor never got this, so free now */
+	   FreeInfo(info);
+	}
+    }
+}
+
+/* ARGSUSED */
+static void ReqTimedOut(
+    XtPointer closure,
+    XtIntervalId   *id)
+{
+    XtPointer value = NULL;
+    unsigned long length = 0;
+    int format = 8;
+    Atom resulttype = XT_CONVERT_FAIL;
+    CallBackInfo info = (CallBackInfo)closure;
+    unsigned long bytesafter;
+    unsigned long proplength;
+    Atom type;
+    IndirectPair *pairs;
+    XtPointer *c;
+    int i;
+
+    if (*info->target == info->ctx->prop_list->indirect_atom) {
+        (void) XGetWindowProperty(XtDisplay(info->widget),
+			   XtWindow(info->widget), info->property, 0L,
+			   10000000, True, AnyPropertyType, &type, &format,
+			   &proplength, &bytesafter, (unsigned char **) &pairs);
+       XFree((char*)pairs);
+       for (proplength = proplength / IndirectPairWordSize, i = 0, c = info->req_closure;
+	           proplength; proplength--, c++, i++)
+	    (*info->callbacks[i])(info->widget, *c,
+   	          &info->ctx->selection, &resulttype, value, &length, &format);
+    } else {
+	(*info->callbacks[0])(info->widget, *info->req_closure,
+	    &info->ctx->selection, &resulttype, value, &length, &format);
+    }
+
+    /* change event handlers for straggler events */
+    if (info->proc == (XtEventHandler)HandleSelectionReplies) {
+        XtRemoveEventHandler(info->widget, (EventMask)0,
+			TRUE, info->proc, (XtPointer) info);
+	XtAddEventHandler(info->widget, (EventMask)0, TRUE,
+		ReqCleanup, (XtPointer) info);
+    } else {
+        XtRemoveEventHandler(info->widget,(EventMask) PropertyChangeMask,
+			FALSE, info->proc, (XtPointer) info);
+	XtAddEventHandler(info->widget, (EventMask) PropertyChangeMask,
+		FALSE, ReqCleanup, (XtPointer) info);
+    }
+
+}
+
+/*ARGSUSED*/
+static void HandleGetIncrement(
+    Widget widget,
+    XtPointer closure,
+    XEvent *ev,
+    Boolean *cont)
+{
+    XPropertyEvent *event = (XPropertyEvent *) ev;
+    CallBackInfo info = (CallBackInfo) closure;
+    Select ctx = info->ctx;
+    char *value;
+    unsigned long bytesafter;
+    unsigned long length;
+    int bad;
+    int n = info->current;
+
+    if ((event->state != PropertyNewValue) || (event->atom != info->property))
+	 return;
+
+    bad = XGetWindowProperty(event->display, XtWindow(widget),
+			     event->atom, 0L,
+			     10000000, True, AnyPropertyType, &info->type,
+			     &info->format, &length, &bytesafter,
+			     (unsigned char **) &value);
+    if (bad)
+      return;
+#ifndef DEBUG_WO_TIMERS
+    XtRemoveTimeOut(info->timeout);
+#endif
+    if (length == 0) {
+       unsigned long u_offset = NUMELEM(info->offset, info->format);
+       (*info->callbacks[n])(widget, *info->req_closure, &ctx->selection,
+			     &info->type,
+			     (info->offset == 0 ? value : info->value),
+			     &u_offset, &info->format);
+       /* assert ((info->offset != 0) == (info->incremental[n]) */
+       if (info->offset != 0) XFree(value);
+       XtRemoveEventHandler(widget, (EventMask) PropertyChangeMask, FALSE,
+		HandleGetIncrement, (XtPointer) info);
+       FreeSelectionProperty(event->display, info->property);
+       FreeInfo(info);
+    } else { /* add increment to collection */
+      if (info->incremental[n]) {
+#ifdef XT_COPY_SELECTION
+	  int size = BYTELENGTH(length, info->format) + 1;
+	  char *tmp = __XtMalloc((Cardinal) size);
+	  (void) memmove(tmp, value, size);
+	  XFree(value);
+	  value = tmp;
+#endif
+        (*info->callbacks[n])(widget, *info->req_closure, &ctx->selection,
+			      &info->type, value, &length, &info->format);
+      } else {
+	  int size = BYTELENGTH(length, info->format);
+	  if (info->offset + size > info->bytelength) {
+	      /* allocate enough for this and the next increment */
+	      info->bytelength = info->offset + size * 2;
+	      info->value = XtRealloc(info->value,
+				      (Cardinal) info->bytelength);
+	  }
+	  (void) memmove(&info->value[info->offset], value, size);
+	  info->offset += size;
+	  XFree(value);
+      }
+     /* reset timer */
+#ifndef DEBUG_WO_TIMERS
+     {
+     XtAppContext app = XtWidgetToApplicationContext(info->widget);
+     info->timeout = XtAppAddTimeOut(app,
+			 app->selectionTimeout, ReqTimedOut, (XtPointer) info);
+     }
+#endif
+   }
+}
+
+
+static void HandleNone(
+    Widget widget,
+    XtSelectionCallbackProc callback,
+    XtPointer closure,
+    Atom selection)
+{
+    unsigned long length = 0;
+    int format = 8;
+    Atom type = None;
+
+    (*callback)(widget, closure, &selection,
+		&type, NULL, &length, &format);
+}
+
+
+static long IncrPropSize(
+     Widget widget,
+     unsigned char* value,
+     int format,
+     unsigned long length)
+{
+    unsigned long size;
+    if (format == 32) {
+	size = ((long*)value)[length-1]; /* %%% what order for longs? */
+	return size;
+    }
+    else {
+	XtAppWarningMsg( XtWidgetToApplicationContext(widget),
+			"badFormat","xtGetSelectionValue",XtCXtToolkitError,
+	"Selection owner returned type INCR property with format != 32",
+			(String*)NULL, (Cardinal*)NULL );
+	return 0;
+    }
+}
+
+
+static
+Boolean HandleNormal(
+    Display *dpy,
+    Widget widget,
+    Atom property,
+    CallBackInfo info,
+    XtPointer closure,
+    Atom selection)
+{
+    unsigned long bytesafter;
+    unsigned long length;
+    int format;
+    Atom type;
+    unsigned char *value;
+    int number = info->current;
+
+    (void) XGetWindowProperty(dpy, XtWindow(widget), property, 0L,
+			      10000000, False, AnyPropertyType,
+			      &type, &format, &length, &bytesafter, &value);
+
+    if (type == info->ctx->prop_list->incr_atom) {
+	unsigned long size = IncrPropSize(widget, value, format, length);
+	XFree((char *)value);
+	if (info->property != property) {
+	    /* within MULTIPLE */
+	    CallBackInfo ninfo;
+	    ninfo = MakeInfo(info->ctx, &info->callbacks[number],
+			     &info->req_closure[number], 1, widget,
+			     info->time, &info->incremental[number], &property);
+	    ninfo->target = (Atom *) __XtMalloc((unsigned) sizeof(Atom));
+	    *ninfo->target = info->target[number + 1];
+	    info = ninfo;
+	}
+	HandleIncremental(dpy, widget, property, info, size);
+	return FALSE;
+    }
+
+    XDeleteProperty(dpy, XtWindow(widget), property);
+#ifdef XT_COPY_SELECTION
+    if (value) {   /* it could have been deleted after the SelectionNotify */
+	int size = BYTELENGTH(length, info->format) + 1;
+	char *tmp = __XtMalloc((Cardinal) size);
+	(void) memmove(tmp, value, size);
+	XFree(value);
+	value = (unsigned char *) tmp;
+    }
+#endif
+    (*info->callbacks[number])(widget, closure, &selection,
+			       &type, (XtPointer)value, &length, &format);
+
+    if (info->incremental[number]) {
+	/* let requestor know the whole thing has been received */
+	value = (unsigned char*)__XtMalloc((unsigned)1);
+	length = 0;
+	(*info->callbacks[number])(widget, closure, &selection,
+				   &type, (XtPointer)value, &length, &format);
+    }
+    return TRUE;
+}
+
+static void HandleIncremental(
+    Display *dpy,
+    Widget widget,
+    Atom property,
+    CallBackInfo info,
+    unsigned long size)
+{
+    XtAddEventHandler(widget, (EventMask) PropertyChangeMask, FALSE,
+		      HandleGetIncrement, (XtPointer) info);
+
+    /* now start the transfer */
+    XDeleteProperty(dpy, XtWindow(widget), property);
+    XFlush(dpy);
+
+    info->bytelength = size;
+    if (info->incremental[info->current]) /* requestor wants incremental too */
+	info->value = NULL;	/* so no need for buffer to assemble value */
+    else
+	info->value = (char *) __XtMalloc((unsigned) info->bytelength);
+    info->offset = 0;
+
+    /* reset the timer */
+    info->proc = HandleGetIncrement;
+#ifndef DEBUG_WO_TIMERS
+    {
+    XtAppContext app = XtWidgetToApplicationContext(info->widget);
+    info->timeout = XtAppAddTimeOut(app,
+			 app->selectionTimeout, ReqTimedOut, (XtPointer) info);
+    }
+#endif
+}
+
+/*ARGSUSED*/
+static void HandleSelectionReplies(
+    Widget widget,
+    XtPointer closure,
+    XEvent *ev,
+    Boolean *cont)
+{
+    XSelectionEvent *event = (XSelectionEvent *) ev;
+    Display *dpy = event->display;
+    CallBackInfo info = (CallBackInfo) closure;
+    Select ctx = info->ctx;
+    IndirectPair *pairs, *p;
+    unsigned long bytesafter;
+    unsigned long length;
+    int format;
+    Atom type;
+    XtPointer *c;
+
+    if (event->type != SelectionNotify) return;
+    if (!MATCH_SELECT(event, info)) return; /* not really for us */
+#ifndef DEBUG_WO_TIMERS
+    XtRemoveTimeOut(info->timeout);
+#endif
+    XtRemoveEventHandler(widget, (EventMask)0, TRUE,
+		HandleSelectionReplies, (XtPointer) info );
+    if (event->target == ctx->prop_list->indirect_atom) {
+        (void) XGetWindowProperty(dpy, XtWindow(widget), info->property, 0L,
+			   10000000, True, AnyPropertyType, &type, &format,
+			   &length, &bytesafter, (unsigned char **) &pairs);
+       for (length = length / IndirectPairWordSize, p = pairs,
+	    c = info->req_closure;
+	    length; length--, p++, c++, info->current++) {
+	    if (event->property == None || format != 32 || p->target == None
+		|| /* bug compatibility */ p->property == None) {
+		HandleNone(widget, info->callbacks[info->current],
+			   *c, event->selection);
+		if (p->property != None)
+                    FreeSelectionProperty(XtDisplay(widget), p->property);
+	    } else {
+		if (HandleNormal(dpy, widget, p->property, info, *c,
+				 event->selection)) {
+		    FreeSelectionProperty(XtDisplay(widget), p->property);
+		}
+	    }
+       }
+       XFree((char*)pairs);
+       FreeSelectionProperty(dpy, info->property);
+       FreeInfo(info);
+    } else if (event->property == None) {
+	HandleNone(widget, info->callbacks[0], *info->req_closure, event->selection);
+        FreeSelectionProperty(XtDisplay(widget), info->property);
+	FreeInfo(info);
+    } else {
+	if (HandleNormal(dpy, widget, event->property, info,
+			 *info->req_closure, event->selection)) {
+	    FreeSelectionProperty(XtDisplay(widget), info->property);
+	    FreeInfo(info);
+	}
+    }
+}
+
+static void DoLocalTransfer(
+    Request req,
+    Atom selection,
+    Atom target,
+    Widget widget,		/* The widget requesting the value. */
+    XtSelectionCallbackProc callback,
+    XtPointer closure,	/* the closure for the callback, not the conversion */
+    Boolean incremental,
+    Atom property)
+{
+    Select ctx = req->ctx;
+    XtPointer value = NULL, temp, total = NULL;
+    unsigned long length;
+    int format;
+    Atom resulttype;
+    unsigned long totallength = 0;
+
+        req->event.type = 0;
+        req->event.target = target;
+        req->event.property = req->property = property;
+        req->event.requestor = req->requestor = XtWindow(widget);
+
+	if (ctx->incremental) {
+	   unsigned long size = MAX_SELECTION_INCR(ctx->dpy);
+	   if (!(*(XtConvertSelectionIncrProc)ctx->convert)
+			   (ctx->widget, &selection, &target,
+			    &resulttype, &value, &length, &format,
+			    &size, ctx->owner_closure, (XtRequestId*)&req)) {
+	       HandleNone(widget, callback, closure, selection);
+	   }
+	   else {
+		if (incremental) {
+		  Boolean allSent = FALSE;
+	          while (!allSent) {
+	    	      if (ctx->notify && (value != NULL)) {
+              	        int bytelength = BYTELENGTH(length,format);
+	                /* both sides think they own this storage */
+	                temp = __XtMalloc((unsigned)bytelength);
+	                (void) memmove(temp, value, bytelength);
+	                value = temp;
+	              }
+		      /* use care; older clients were never warned that
+		       * they must return a value even if length==0
+		       */
+		     if (value == NULL) value = __XtMalloc((unsigned)1);
+		     (*callback)(widget, closure, &selection,
+			&resulttype, value, &length, &format);
+		     if (length) {
+			 /* should owner be notified on end-of-piece?
+			  * Spec is unclear, but non-local transfers don't.
+			  */
+			 (*(XtConvertSelectionIncrProc)ctx->convert)
+					(ctx->widget, &selection, &target,
+					 &resulttype, &value, &length, &format,
+					 &size, ctx->owner_closure,
+					 (XtRequestId*)&req);
+		     }
+		     else allSent = TRUE;
+		  }
+	        } else {
+	          while (length) {
+		    int bytelength = BYTELENGTH(length, format);
+		    total = XtRealloc(total,
+			    (unsigned) (totallength += bytelength));
+		    (void) memmove((char*)total + totallength - bytelength,
+			    value,
+			    bytelength);
+		    (*(XtConvertSelectionIncrProc)ctx->convert)
+			   (ctx->widget, &selection, &target,
+			    &resulttype, &value, &length, &format,
+			    &size, ctx->owner_closure, (XtRequestId*)&req);
+		  }
+		  if (total == NULL) total = __XtMalloc(1);
+		  totallength = NUMELEM(totallength, format);
+		  (*callback)(widget, closure, &selection, &resulttype,
+		    total,  &totallength, &format);
+	      }
+	      if (ctx->notify)
+		  (*(XtSelectionDoneIncrProc)ctx->notify)
+				(ctx->widget, &selection, &target,
+				 (XtRequestId*)&req, ctx->owner_closure);
+	      else XtFree((char*)value);
+	  }
+	} else { /* not incremental owner */
+	  if (!(*ctx->convert)(ctx->widget, &selection, &target,
+			     &resulttype, &value, &length, &format)) {
+	    HandleNone(widget, callback, closure, selection);
+	  } else {
+	      if (ctx->notify && (value != NULL)) {
+                int bytelength = BYTELENGTH(length,format);
+	        /* both sides think they own this storage; better copy */
+	        temp = __XtMalloc((unsigned)bytelength);
+	        (void) memmove(temp, value, bytelength);
+	        value = temp;
+	      }
+	      if (value == NULL) value = __XtMalloc((unsigned)1);
+	      (*callback)(widget, closure, &selection, &resulttype,
+			  value, &length, &format);
+	      if (ctx->notify)
+	         (*ctx->notify)(ctx->widget, &selection, &target);
+	  }
+      }
+}
+
+static void GetSelectionValue(
+    Widget widget,
+    Atom selection,
+    Atom target,
+    XtSelectionCallbackProc callback,
+    XtPointer closure,
+    Time time,
+    Boolean incremental,
+    Atom property)
+{
+    Select ctx;
+    CallBackInfo info;
+    Atom properties[1];
+
+    properties[0] = property;
+
+    ctx = FindCtx(XtDisplay(widget), selection);
+    if (ctx->widget && !ctx->was_disowned) {
+	RequestRec req;
+	ctx->req = &req;
+	req.ctx = ctx;
+	req.event.time = time;
+	ctx->ref_count++;
+	DoLocalTransfer(&req, selection, target, widget,
+			callback, closure, incremental, property);
+	if (--ctx->ref_count == 0 && ctx->free_when_done)
+	    XtFree((char*)ctx);
+	else
+	    ctx->req = NULL;
+    }
+    else {
+	info = MakeInfo(ctx, &callback, &closure, 1, widget,
+			time, &incremental, properties);
+	info->target = (Atom *)__XtMalloc((unsigned) sizeof(Atom));
+	 *(info->target) = target;
+	RequestSelectionValue(info, selection, target);
+    }
+}
+
+
+void XtGetSelectionValue(
+    Widget widget,
+    Atom selection,
+    Atom target,
+    XtSelectionCallbackProc callback,
+    XtPointer closure,
+    Time time)
+{
+    Atom property;
+    Boolean incr = False;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    property = GetParamInfo(widget, selection);
+    RemoveParamInfo(widget, selection);
+
+    if (IsGatheringRequest(widget, selection)) {
+      AddSelectionRequests(widget, selection, 1, &target, &callback, 1,
+			   &closure, &incr, &property);
+    } else {
+      GetSelectionValue(widget, selection, target, callback,
+			closure, time, FALSE, property);
+    }
+    UNLOCK_APP(app);
+}
+
+
+void XtGetSelectionValueIncremental(
+    Widget widget,
+    Atom selection,
+    Atom target,
+    XtSelectionCallbackProc callback,
+    XtPointer closure,
+    Time time)
+{
+    Atom property;
+    Boolean incr = TRUE;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    property = GetParamInfo(widget, selection);
+    RemoveParamInfo(widget, selection);
+
+    if (IsGatheringRequest(widget, selection)) {
+      AddSelectionRequests(widget, selection, 1, &target, &callback, 1,
+			   &closure, &incr, &property);
+    } else {
+      GetSelectionValue(widget, selection, target, callback,
+			closure, time, TRUE, property);
+    }
+
+    UNLOCK_APP(app);
+}
+
+
+static void GetSelectionValues(
+    Widget widget,
+    Atom selection,
+    Atom *targets,
+    int count,
+    XtSelectionCallbackProc *callbacks,
+    int num_callbacks,
+    XtPointer *closures,
+    Time time,
+    Boolean *incremental,
+    Atom *properties)
+{
+    Select ctx;
+    CallBackInfo info;
+    IndirectPair *pairs, *p;
+    Atom *t;
+
+    if (count == 0) return;
+    ctx = FindCtx(XtDisplay(widget), selection);
+    if (ctx->widget && !ctx->was_disowned) {
+        int j, i;
+	RequestRec req;
+	ctx->req = &req;
+	req.ctx = ctx;
+	req.event.time = time;
+	ctx->ref_count++;
+	for (i = 0, j = 0; count; count--, i++, j++ ) {
+	  if (j >= num_callbacks) j = 0;
+
+	  DoLocalTransfer(&req, selection, targets[i], widget,
+			  callbacks[j], closures[i], incremental[i],
+			  properties ? properties[i] : None);
+
+	}
+	if (--ctx->ref_count == 0 && ctx->free_when_done)
+	    XtFree((char*)ctx);
+	else
+	    ctx->req = NULL;
+    } else {
+        XtSelectionCallbackProc *passed_callbacks;
+	XtSelectionCallbackProc stack_cbs[32];
+        int i = 0, j = 0;
+
+	passed_callbacks = (XtSelectionCallbackProc *)
+	  XtStackAlloc(sizeof(XtSelectionCallbackProc) * count, stack_cbs);
+
+	/* To deal with the old calls from XtGetSelectionValues* we
+	   will repeat however many callbacks have been passed into
+	   the array */
+	for(i = 0; i < count; i++) {
+	  if (j >= num_callbacks) j = 0;
+	  passed_callbacks[i] = callbacks[j];
+	  j++;
+	}
+	info = MakeInfo(ctx, passed_callbacks, closures, count, widget,
+			time, incremental, properties);
+	XtStackFree((XtPointer) passed_callbacks, stack_cbs);
+
+	info->target = (Atom *)__XtMalloc((unsigned) ((count+1) * sizeof(Atom)));
+        (*info->target) = ctx->prop_list->indirect_atom;
+	(void) memmove((char *) info->target+sizeof(Atom), (char *) targets,
+		       count * sizeof(Atom));
+	pairs = (IndirectPair*)__XtMalloc((unsigned)(count*sizeof(IndirectPair)));
+	for (p = &pairs[count-1], t = &targets[count-1], i = count - 1;
+	     p >= pairs;  p--, t--, i--) {
+	   p->target = *t;
+	   if (properties == NULL || properties[i] == None) {
+	     p->property = GetSelectionProperty(XtDisplay(widget));
+	     XDeleteProperty(XtDisplay(widget), XtWindow(widget),
+			     p->property);
+	   } else {
+	     p->property = properties[i];
+	   }
+	}
+	XChangeProperty(XtDisplay(widget), XtWindow(widget),
+			info->property, info->property,
+			32, PropModeReplace, (unsigned char *) pairs,
+			count * IndirectPairWordSize);
+	XtFree((char*)pairs);
+	RequestSelectionValue(info, selection, ctx->prop_list->indirect_atom);
+    }
+}
+
+
+void XtGetSelectionValues(
+    Widget widget,
+    Atom selection,
+    Atom *targets,
+    int count,
+    XtSelectionCallbackProc callback,
+    XtPointer *closures,
+    Time time)
+{
+    Boolean incremental_values[32];
+    Boolean *incremental;
+    int i;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    incremental = XtStackAlloc(count * sizeof(Boolean), incremental_values);
+    for(i = 0; i < count; i++) incremental[i] = FALSE;
+    if (IsGatheringRequest(widget, selection)) {
+      AddSelectionRequests(widget, selection, count, targets, &callback,
+			   1, closures, incremental, NULL);
+    } else {
+      GetSelectionValues(widget, selection, targets, count, &callback, 1,
+			 closures, time, incremental, NULL);
+    }
+    XtStackFree((XtPointer) incremental, incremental_values);
+    UNLOCK_APP(app);
+}
+
+
+void XtGetSelectionValuesIncremental(
+    Widget widget,
+    Atom selection,
+    Atom *targets,
+    int count,
+    XtSelectionCallbackProc callback,
+    XtPointer *closures,
+    Time time)
+{
+    Boolean incremental_values[32];
+    Boolean *incremental;
+    int i;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    incremental = XtStackAlloc(count * sizeof(Boolean), incremental_values);
+    for(i = 0; i < count; i++) incremental[i] = TRUE;
+    if (IsGatheringRequest(widget, selection)) {
+      AddSelectionRequests(widget, selection, count, targets, &callback,
+			   1, closures, incremental, NULL);
+    } else {
+      GetSelectionValues(widget, selection, targets, count,
+			 &callback, 1, closures, time, incremental, NULL);
+    }
+    XtStackFree((XtPointer) incremental, incremental_values);
+    UNLOCK_APP(app);
+}
+
+
+static Request GetRequestRecord(
+    Widget widget,
+    Atom selection,
+    XtRequestId id)
+{
+    Request req = (Request)id;
+    Select ctx = NULL;
+
+    if (   (req == NULL
+	    && ((ctx = FindCtx( XtDisplay(widget), selection )) == NULL
+		|| ctx->req == NULL
+		|| ctx->selection != selection
+		|| ctx->widget == NULL))
+	|| (req != NULL
+	    && (req->ctx == NULL
+		|| req->ctx->selection != selection
+		|| req->ctx->widget != widget)))
+    {
+	String params = XtName(widget);
+	Cardinal num_params = 1;
+	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+			 "notInConvertSelection", "xtGetSelectionRequest",
+			 XtCXtToolkitError,
+			 "XtGetSelectionRequest or XtGetSelectionParameters called for widget \"%s\" outside of ConvertSelection proc",
+			 &params, &num_params
+		       );
+	return NULL;
+    }
+
+    if (req == NULL) {
+	/* non-incremental owner; only one request can be
+	 * outstanding at a time, so it's safe to keep ptr in ctx */
+	req = ctx->req;
+    }
+    return req;
+}
+
+XSelectionRequestEvent *XtGetSelectionRequest(
+    Widget widget,
+    Atom selection,
+    XtRequestId id)
+{
+    Request req = (Request)id;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+
+    req = GetRequestRecord(widget, selection, id);
+
+    if (! req) {
+	UNLOCK_APP(app);
+	return (XSelectionRequestEvent*) NULL;
+    }
+
+    if (req->event.type == 0) {
+	/* owner is local; construct the remainder of the event */
+	req->event.type = SelectionRequest;
+	req->event.serial = LastKnownRequestProcessed(XtDisplay(widget));
+	req->event.send_event = True;
+	req->event.display = XtDisplay(widget);
+	req->event.owner = XtWindow(req->ctx->widget);
+	req->event.selection = selection;
+    }
+    UNLOCK_APP(app);
+    return &req->event;
+}
+
+/* Property atom access */
+Atom XtReservePropertyAtom(
+     Widget w)
+{
+  return(GetSelectionProperty(XtDisplay(w)));
+}
+
+void XtReleasePropertyAtom(
+     Widget w,
+     Atom atom)
+{
+  FreeSelectionProperty(XtDisplay(w), atom);
+}
+
+
+/* Multiple utilities */
+
+/* All requests are put in a single list per widget.  It is
+   very unlikely anyone will be gathering multiple MULTIPLE
+   requests at the same time,  so the loss in efficiency for
+   this case is acceptable */
+
+/* Queue one or more requests to the one we're gathering */
+static void AddSelectionRequests(
+     Widget wid,
+     Atom sel,
+     int count,
+     Atom *targets,
+     XtSelectionCallbackProc *callbacks,
+     int num_cb,
+     XtPointer *closures,
+     Boolean *incrementals,
+     Atom *properties)
+{
+  QueuedRequestInfo qi;
+  Window window = XtWindow(wid);
+  Display *dpy = XtDisplay(wid);
+
+  LOCK_PROCESS;
+  if (multipleContext == 0) multipleContext = XUniqueContext();
+
+  qi = NULL;
+  (void) XFindContext(dpy, window, multipleContext, (XPointer*) &qi);
+
+  if (qi != NULL) {
+    QueuedRequest *req = qi->requests;
+    int start = qi->count;
+    int i = 0;
+    int j = 0;
+
+    qi->count += count;
+    req = (QueuedRequest*) XtRealloc((char*) req,
+				     (start + count) *
+				     sizeof(QueuedRequest));
+    while(i < count) {
+      QueuedRequest newreq = (QueuedRequest)
+	__XtMalloc(sizeof(QueuedRequestRec));
+      newreq->selection = sel;
+      newreq->target = targets[i];
+      if (properties != NULL)
+	newreq->param = properties[i];
+      else {
+	newreq->param = GetSelectionProperty(dpy);
+	XDeleteProperty(dpy, window, newreq->param);
+      }
+      newreq->callback = callbacks[j];
+      newreq->closure = closures[i];
+      newreq->incremental = incrementals[i];
+
+      req[start] = newreq;
+      start++;
+      i++;
+      j++;
+      if (j > num_cb) j = 0;
+    }
+
+    qi->requests = req;
+  } else {
+    /* Impossible */
+  }
+
+  UNLOCK_PROCESS;
+}
+
+/* Only call IsGatheringRequest when we have a lock already */
+
+static Boolean IsGatheringRequest(
+     Widget wid,
+     Atom sel)
+{
+  QueuedRequestInfo qi;
+  Window window = XtWindow(wid);
+  Display *dpy = XtDisplay(wid);
+  Boolean found = False;
+  int i;
+
+  if (multipleContext == 0) multipleContext = XUniqueContext();
+
+  qi = NULL;
+  (void) XFindContext(dpy, window, multipleContext, (XPointer*) &qi);
+
+  if (qi != NULL) {
+    i = 0;
+    while(qi->selections[i] != None) {
+      if (qi->selections[i] == sel) {
+	found = True;
+	break;
+      }
+      i++;
+    }
+  }
+
+  return(found);
+}
+
+/* Cleanup request scans the request queue and releases any
+   properties queued, and removes any requests queued */
+static void CleanupRequest(
+     Display *dpy,
+     QueuedRequestInfo qi,
+     Atom sel)
+{
+  int i, j, n;
+
+  i = 0;
+
+  /* Remove this selection from the list */
+  n = 0;
+  while(qi->selections[n] != sel &&
+	qi->selections[n] != None) n++;
+  if (qi->selections[n] == sel) {
+    while(qi->selections[n] != None) {
+      qi->selections[n] = qi->selections[n + 1];
+      n++;
+    }
+  }
+
+  while(i < qi->count) {
+    QueuedRequest req = qi->requests[i];
+
+    if (req->selection == sel) {
+      /* Match */
+      if (req->param != None)
+	FreeSelectionProperty(dpy, req->param);
+      qi->count--;
+
+      for(j = i; j < qi->count; j++)
+	qi->requests[j] = qi->requests[j + 1];
+
+      XtFree((char*) req);
+    } else {
+      i++;
+    }
+  }
+}
+
+void XtCreateSelectionRequest(
+    Widget widget,
+    Atom selection)
+{
+  QueuedRequestInfo queueInfo;
+  Window window = XtWindow(widget);
+  Display *dpy = XtDisplay(widget);
+  int n;
+
+  LOCK_PROCESS;
+  if (multipleContext == 0) multipleContext = XUniqueContext();
+
+  queueInfo = NULL;
+  (void) XFindContext(dpy, window, multipleContext, (XPointer*) &queueInfo);
+
+  /* If there is one,  then cancel it */
+  if (queueInfo != NULL)
+    CleanupRequest(dpy, queueInfo, selection);
+  else {
+    /* Create it */
+    queueInfo = (QueuedRequestInfo) __XtMalloc(sizeof(QueuedRequestInfoRec));
+    queueInfo->count = 0;
+    queueInfo->selections = (Atom*) __XtMalloc(sizeof(Atom) * 2);
+    queueInfo->selections[0] = None;
+    queueInfo->requests = (QueuedRequest *)
+      __XtMalloc(sizeof(QueuedRequest));
+  }
+
+  /* Append this selection to list */
+  n = 0;
+  while(queueInfo->selections[n] != None) n++;
+  queueInfo->selections =
+    (Atom*) XtRealloc((char*) queueInfo->selections,
+		      (n + 2) * sizeof(Atom));
+  queueInfo->selections[n] = selection;
+  queueInfo->selections[n + 1] = None;
+
+  (void) XSaveContext(dpy, window, multipleContext, (char*) queueInfo);
+  UNLOCK_PROCESS;
+}
+
+void XtSendSelectionRequest(
+    Widget widget,
+    Atom selection,
+    Time time)
+{
+  QueuedRequestInfo queueInfo;
+  Window window = XtWindow(widget);
+  Display *dpy = XtDisplay(widget);
+
+  LOCK_PROCESS;
+  if (multipleContext == 0) multipleContext = XUniqueContext();
+
+  queueInfo = NULL;
+  (void) XFindContext(dpy, window, multipleContext, (XPointer*) &queueInfo);
+  if (queueInfo != NULL) {
+    int count = 0;
+    int i;
+    QueuedRequest *req = queueInfo->requests;
+
+    /* Construct the requests and send it using
+       GetSelectionValues */
+    for(i = 0; i < queueInfo->count; i++)
+      if (req[i]->selection == selection) count++;
+
+    if (count > 0) {
+      if (count == 1) {
+	for(i = 0; i < queueInfo->count; i++)
+	  if (req[i]->selection == selection) break;
+
+	/* special case a multiple which isn't needed */
+	GetSelectionValue(widget, selection, req[i]->target,
+			  req[i]->callback, req[i]->closure, time,
+			  req[i]->incremental, req[i]->param);
+      } else {
+	Atom *targets;
+	Atom t[PREALLOCED];
+	XtSelectionCallbackProc *cbs;
+	XtSelectionCallbackProc c[PREALLOCED];
+	XtPointer *closures;
+	XtPointer cs[PREALLOCED];
+	Boolean *incrs;
+	Boolean ins[PREALLOCED];
+	Atom *props;
+	Atom p[PREALLOCED];
+	int i = 0;
+	int j = 0;
+
+	/* Allocate */
+	targets = (Atom *) XtStackAlloc(count * sizeof(Atom), t);
+	cbs = (XtSelectionCallbackProc *)
+	  XtStackAlloc(count * sizeof(XtSelectionCallbackProc), c);
+	closures = (XtPointer *) XtStackAlloc(count * sizeof(XtPointer), cs);
+	incrs = (Boolean *) XtStackAlloc(count * sizeof(Boolean), ins);
+	props = (Atom *) XtStackAlloc(count * sizeof(Atom), p);
+
+	/* Copy */
+	for(i = 0; i < queueInfo->count; i++) {
+	  if (req[i]->selection == selection) {
+	    targets[j] = req[i]->target;
+	    cbs[j] = req[i]->callback;
+	    closures[j] = req[i]->closure;
+	    incrs[j] = req[i]->incremental;
+	    props[j] = req[i]->param;
+	    j++;
+	  }
+	}
+
+	/* Make the request */
+	GetSelectionValues(widget, selection, targets, count,
+			   cbs, count, closures, time, incrs, props);
+
+	/* Free */
+	XtStackFree((XtPointer) targets, t);
+	XtStackFree((XtPointer) cbs, c);
+	XtStackFree((XtPointer) closures, cs);
+	XtStackFree((XtPointer) incrs, ins);
+	XtStackFree((XtPointer) props, p);
+      }
+    }
+  }
+
+  CleanupRequest(dpy, queueInfo, selection);
+  UNLOCK_PROCESS;
+}
+
+void XtCancelSelectionRequest(
+    Widget widget,
+    Atom selection)
+{
+  QueuedRequestInfo queueInfo;
+  Window window = XtWindow(widget);
+  Display *dpy = XtDisplay(widget);
+
+  LOCK_PROCESS;
+  if (multipleContext == 0) multipleContext = XUniqueContext();
+
+  queueInfo = NULL;
+  (void) XFindContext(dpy, window, multipleContext, (XPointer*) &queueInfo);
+  /* If there is one,  then cancel it */
+  if (queueInfo != NULL)
+    CleanupRequest(dpy, queueInfo, selection);
+  UNLOCK_PROCESS;
+}
+
+/* Parameter utilities */
+
+/* Parameters on a selection request */
+/* Places data on allocated parameter atom,  then records the
+   parameter atom data for use in the next call to one of
+   the XtGetSelectionValue functions. */
+void XtSetSelectionParameters(
+    Widget requestor,
+    Atom selection,
+    Atom type,
+    XtPointer value,
+    unsigned long length,
+    int format)
+{
+  Display *dpy = XtDisplay(requestor);
+  Window window = XtWindow(requestor);
+  Atom property = GetParamInfo(requestor, selection);
+
+  if (property == None) {
+    property = GetSelectionProperty(dpy);
+    AddParamInfo(requestor, selection, property);
+  }
+
+  XChangeProperty(dpy, window, property,
+		  type, format, PropModeReplace,
+		  (unsigned char *) value, length);
+}
+
+/* Retrieves data passed in a parameter. Data for this is stored
+   on the originator's window */
+void XtGetSelectionParameters(
+    Widget owner,
+    Atom selection,
+    XtRequestId request_id,
+    Atom* type_return,
+    XtPointer* value_return,
+    unsigned long* length_return,
+    int* format_return)
+{
+    Request req;
+    Display *dpy = XtDisplay(owner);
+    WIDGET_TO_APPCON(owner);
+
+    *value_return = NULL;
+    *length_return = *format_return = 0;
+    *type_return = None;
+
+    LOCK_APP(app);
+
+    req = GetRequestRecord(owner, selection, request_id);
+
+    if (req && req->property) {
+	unsigned long bytes_after;	/* unused */
+	StartProtectedSection(dpy, req->requestor);
+	XGetWindowProperty(dpy, req->requestor, req->property, 0L, 10000000,
+			   False, AnyPropertyType, type_return, format_return,
+			   length_return, &bytes_after,
+			   (unsigned char**) value_return);
+	EndProtectedSection(dpy);
+#ifdef XT_COPY_SELECTION
+	if (*value_return) {
+	    int size = BYTELENGTH(*length_return, *format_return) + 1;
+	    char *tmp = __XtMalloc((Cardinal) size);
+	    (void) memmove(tmp, *value_return, size);
+	    XFree(*value_return);
+	    *value_return = tmp;
+	}
+#endif
+    }
+    UNLOCK_APP(app);
+}
+
+/*  Parameters are temporarily stashed in an XContext.  A list is used because
+ *  there may be more than one selection request in progress.  The context
+ *  data is deleted when the list is empty.  In the future, the parameter
+ *  context could be merged with other contexts used during selections.
+ */
+
+static void AddParamInfo(
+    Widget w,
+    Atom selection,
+    Atom param_atom)
+{
+    int n;
+    Param p;
+    ParamInfo pinfo;
+
+    LOCK_PROCESS;
+    if (paramPropertyContext == 0)
+	paramPropertyContext = XUniqueContext();
+
+    if (XFindContext(XtDisplay(w), XtWindow(w), paramPropertyContext,
+		     (XPointer *) &pinfo)) {
+	pinfo = (ParamInfo) __XtMalloc(sizeof(ParamInfoRec));
+	pinfo->count = 1;
+	pinfo->paramlist = XtNew(ParamRec);
+	p = pinfo->paramlist;
+	(void) XSaveContext(XtDisplay(w), XtWindow(w), paramPropertyContext,
+			    (char *)pinfo);
+    }
+    else {
+	for (n = pinfo->count, p = pinfo->paramlist; n; n--, p++) {
+	    if (p->selection == None || p->selection == selection)
+		break;
+	}
+	if (n == 0) {
+	    pinfo->count++;
+	    pinfo->paramlist = (Param)
+		XtRealloc((char*) pinfo->paramlist,
+			  pinfo->count * sizeof(ParamRec));
+	    p = &pinfo->paramlist[pinfo->count - 1];
+	    (void) XSaveContext(XtDisplay(w), XtWindow(w),
+				paramPropertyContext, (char *)pinfo);
+	}
+    }
+    p->selection = selection;
+    p->param = param_atom;
+    UNLOCK_PROCESS;
+}
+
+static void RemoveParamInfo(
+    Widget w,
+    Atom selection)
+{
+    int n;
+    Param p;
+    ParamInfo pinfo;
+    Boolean retain = False;
+
+    LOCK_PROCESS;
+    if (paramPropertyContext
+	&& (XFindContext(XtDisplay(w), XtWindow(w), paramPropertyContext,
+			 (XPointer *) &pinfo) == 0)) {
+
+	/* Find and invalidate the parameter data. */
+	for (n = pinfo->count, p = pinfo->paramlist; n; n--, p++) {
+	    if (p->selection != None) {
+		if (p->selection == selection)
+		    p->selection = None;
+		else
+		    retain = True;
+	    }
+	}
+	/* If there's no valid data remaining, release the context entry. */
+	if (! retain) {
+	    XtFree((char*) pinfo->paramlist);
+	    XtFree((char*) pinfo);
+	    XDeleteContext(XtDisplay(w), XtWindow(w), paramPropertyContext);
+	}
+    }
+    UNLOCK_PROCESS;
+}
+
+static Atom GetParamInfo(
+    Widget w,
+    Atom selection)
+{
+    int n;
+    Param p;
+    ParamInfo pinfo;
+    Atom atom = None;
+
+    LOCK_PROCESS;
+    if (paramPropertyContext
+	&& (XFindContext(XtDisplay(w), XtWindow(w), paramPropertyContext,
+			 (XPointer *) &pinfo) == 0)) {
+
+	for (n = pinfo->count, p = pinfo->paramlist; n; n--, p++)
+	    if (p->selection == selection) {
+		atom = p->param;
+		break;
+	    }
+    }
+    UNLOCK_PROCESS;
+    return atom;
+}
diff --git a/libXt/src/SetSens.c b/libXt/src/SetSens.c
new file mode 100644
index 000000000..ad2b6f489
--- /dev/null
+++ b/libXt/src/SetSens.c
@@ -0,0 +1,128 @@
+/* $Xorg: SetSens.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/SetSens.c,v 1.3 2001/12/14 19:56:29 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+
+/*
+ *	XtSetSensitive()
+ */
+
+static void SetAncestorSensitive(
+    register Widget widget,
+    Boolean	    ancestor_sensitive)
+{
+    Arg			args[1];
+    register Cardinal   i;
+    register WidgetList children;
+
+    if (widget->core.ancestor_sensitive == ancestor_sensitive) return;
+
+    XtSetArg(args[0], XtNancestorSensitive, ancestor_sensitive);
+    XtSetValues(widget, args, XtNumber(args));
+
+    /* If widget's sensitive is TRUE, propagate new ancestor_sensitive to
+       children's ancestor_sensitive; else do nothing as children's
+       ancestor_sensitive is already FALSE */
+    
+    if (widget->core.sensitive && XtIsComposite(widget)) {
+	children = ((CompositeWidget) widget)->composite.children;
+	for (i=0; i < ((CompositeWidget)widget)->composite.num_children; i++) {
+	    SetAncestorSensitive (children[i], ancestor_sensitive);
+	}
+    }
+} /* SetAncestorSensitive */
+
+
+void XtSetSensitive(
+    register Widget widget,
+    _XtBoolean	    sensitive)
+{
+    Arg			args[1];
+    register Cardinal   i;
+    register WidgetList children;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (widget->core.sensitive == sensitive) {
+	UNLOCK_APP(app);
+	return;
+    }
+
+    XtSetArg(args[0], XtNsensitive, sensitive);
+    XtSetValues(widget, args, XtNumber(args));
+
+    /* If widget's ancestor_sensitive is TRUE, propagate new sensitive to
+       children's ancestor_sensitive; else do nothing as children's
+       ancestor_sensitive is already FALSE */
+    
+    if (widget->core.ancestor_sensitive && XtIsComposite (widget)) {
+	children = ((CompositeWidget) widget)->composite.children;
+	for (i = 0; i < ((CompositeWidget)widget)->composite.num_children; i++){
+	    SetAncestorSensitive (children[i], sensitive);
+	}
+    }
+    UNLOCK_APP(app);
+} /* XtSetSensitive */
diff --git a/libXt/src/SetValues.c b/libXt/src/SetValues.c
new file mode 100644
index 000000000..8695ede38
--- /dev/null
+++ b/libXt/src/SetValues.c
@@ -0,0 +1,443 @@
+/* $Xorg: SetValues.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/SetValues.c,v 1.2 2001/08/22 22:52:19 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+/*
+ *	XtSetValues(), XtSetSubvalues()
+ */
+
+
+static void SetValues(
+  char*			base,		/* Base address to write values to   */
+  XrmResourceList*	res,		/* The current resource values.      */
+  register Cardinal	num_resources,	/* number of items in resources      */
+  ArgList 		args,		/* The resource values to set        */
+  Cardinal		num_args)	/* number of items in arg list       */
+{
+    register ArgList		arg;
+    register Cardinal 	        i;
+    register XrmName		argName;
+    register XrmResourceList*   xrmres;
+
+    /* Resource lists are assumed to be in compiled form already via the
+       initial XtGetResources, XtGetSubresources calls */
+
+    for (arg = args ; num_args != 0; num_args--, arg++) {
+	argName = StringToName(arg->name);
+	for (xrmres = res, i = 0; i < num_resources; i++, xrmres++) {
+	    if (argName == (*xrmres)->xrm_name) {
+		_XtCopyFromArg(arg->value,
+		    base - (*xrmres)->xrm_offset - 1,
+		    (*xrmres)->xrm_size);
+		break;
+	    }
+	}
+    }
+} /* SetValues */
+
+static Boolean CallSetValues (
+    WidgetClass class,
+    Widget      current,
+    Widget      request,
+    Widget      new,
+    ArgList     args,
+    Cardinal    num_args)
+{
+    Boolean redisplay = FALSE;
+    WidgetClass superclass;
+    XtArgsFunc set_values_hook;
+    XtSetValuesFunc set_values;
+
+    LOCK_PROCESS;
+    superclass = class->core_class.superclass;
+    UNLOCK_PROCESS;
+    if (superclass)
+        redisplay =
+	    CallSetValues(superclass, current, request, new, args, num_args);
+
+    LOCK_PROCESS;
+    set_values = class->core_class.set_values;
+    UNLOCK_PROCESS;
+    if (set_values)
+        redisplay |= (*set_values) (current, request, new, args, &num_args);
+
+    LOCK_PROCESS;
+    set_values_hook = class->core_class.set_values_hook;
+    UNLOCK_PROCESS;
+    if (set_values_hook)
+	redisplay |= (*set_values_hook) (new, args, &num_args);
+    return (redisplay);
+}
+
+static Boolean
+CallConstraintSetValues (
+    ConstraintWidgetClass class,
+    Widget      current,
+    Widget      request,
+    Widget      new,
+    ArgList     args,
+    Cardinal    num_args)
+{
+    Boolean redisplay = FALSE;
+    XtSetValuesFunc set_values;
+    ConstraintWidgetClass superclass;
+
+    if ((WidgetClass)class != constraintWidgetClass) {
+	if (class == NULL)
+	    XtAppErrorMsg(XtWidgetToApplicationContext(current),
+		    "invalidClass","constraintSetValue",XtCXtToolkitError,
+                 "Subclass of Constraint required in CallConstraintSetValues",
+                  (String *)NULL, (Cardinal *)NULL);
+	LOCK_PROCESS;
+	superclass = (ConstraintWidgetClass) class->core_class.superclass;
+	UNLOCK_PROCESS;
+	redisplay =
+	   CallConstraintSetValues(superclass,
+				   current, request, new, args, num_args);
+    }
+    LOCK_PROCESS;
+    set_values = class->constraint_class.set_values;
+    UNLOCK_PROCESS;
+    if (set_values)
+        redisplay |= (*set_values) (current, request, new, args, &num_args);
+    return (redisplay);
+}
+
+void XtSetSubvalues(
+  XtPointer             base,           /* Base address to write values to   */
+  register XtResourceList resources,    /* The current resource values.      */
+  register Cardinal     num_resources,  /* number of items in resources      */
+  ArgList               args,           /* The resource values to set        */
+  Cardinal              num_args)       /* number of items in arg list       */
+{
+      register XrmResourceList*   xrmres;
+      xrmres = _XtCreateIndirectionTable (resources, num_resources);
+      SetValues((char*)base,xrmres,num_resources, args, num_args);
+      XtFree((char *)xrmres);
+}
+
+
+void XtSetValues(
+    register Widget   w,
+	     ArgList  args,
+	     Cardinal num_args)
+{
+    register Widget oldw, reqw;
+    /* need to use strictest alignment rules possible in next two decls. */
+    double	    oldwCache[100], reqwCache[100];
+    double	    oldcCache[20], reqcCache[20];
+    Cardinal	    widgetSize, constraintSize;
+    Boolean	    redisplay, cleared_rect_obj = False;
+    XtGeometryResult result;
+    XtWidgetGeometry geoReq, geoReply;
+    WidgetClass     wc;
+    ConstraintWidgetClass cwc = NULL;
+    Boolean	    hasConstraints;
+    XtAlmostProc set_values_almost;
+    XtAppContext app = XtWidgetToApplicationContext(w);
+    Widget hookobj = XtHooksOfDisplay(XtDisplayOfObject(w));
+
+    LOCK_APP(app);
+    wc = XtClass(w);
+    if ((args == NULL) && (num_args != 0)) {
+        XtAppErrorMsg(app,
+		"invalidArgCount","xtSetValues",XtCXtToolkitError,
+                "Argument count > 0 on NULL argument list in XtSetValues",
+                 (String *)NULL, (Cardinal *)NULL);
+    }
+
+    /* Allocate and copy current widget into old widget */
+
+    LOCK_PROCESS;
+    widgetSize = wc->core_class.widget_size;
+    UNLOCK_PROCESS;
+    oldw = (Widget) XtStackAlloc(widgetSize, oldwCache);
+    reqw = (Widget) XtStackAlloc (widgetSize, reqwCache);
+    (void) memmove((char *) oldw, (char *) w, (int) widgetSize);
+
+    /* Set resource values */
+
+    LOCK_PROCESS;
+    SetValues((char*)w, (XrmResourceList *) wc->core_class.resources,
+	wc->core_class.num_resources, args, num_args);
+    UNLOCK_PROCESS;
+
+    (void) memmove ((char *) reqw, (char *) w, (int) widgetSize);
+
+    hasConstraints = (XtParent(w) != NULL && !XtIsShell(w) && XtIsConstraint(XtParent(w)));
+
+    /* Some widget sets apparently do ugly things by freeing the
+     * constraints on some children, thus the extra test here */
+    if (hasConstraints) {
+	cwc = (ConstraintWidgetClass) XtClass(w->core.parent);
+	if (w->core.constraints) {
+	    LOCK_PROCESS;
+	    constraintSize = cwc->constraint_class.constraint_size;
+	    UNLOCK_PROCESS;
+	} else constraintSize = 0;
+    } else constraintSize = 0;
+
+    if (constraintSize) {
+	/* Allocate and copy current constraints into oldw */
+	oldw->core.constraints = XtStackAlloc(constraintSize, oldcCache);
+	reqw->core.constraints = XtStackAlloc(constraintSize, reqcCache);
+	(void) memmove((char *) oldw->core.constraints,
+		       (char *) w->core.constraints, (int) constraintSize);
+
+	/* Set constraint values */
+	LOCK_PROCESS;
+	SetValues((char*)w->core.constraints,
+	    (XrmResourceList *)(cwc->constraint_class.resources),
+	    cwc->constraint_class.num_resources, args, num_args);
+	UNLOCK_PROCESS;
+	(void) memmove((char *) reqw->core.constraints,
+		       (char *) w->core.constraints, (int) constraintSize);
+    }
+
+    /* Inform widget of changes, then inform parent of changes */
+    redisplay = CallSetValues (wc, oldw, reqw, w, args, num_args);
+    if (hasConstraints) {
+	redisplay |= CallConstraintSetValues(cwc, oldw, reqw, w, args, num_args);
+    }
+
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+	XtChangeHookSetValuesDataRec set_val;
+
+	set_val.old = oldw;
+	set_val.req = reqw;
+	set_val.args = args;
+	set_val.num_args = num_args;
+	call_data.type = XtHsetValues;
+	call_data.widget = w;
+	call_data.event_data = (XtPointer) &set_val;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+
+    if (XtIsRectObj(w)) {
+	/* Now perform geometry request if needed */
+	geoReq.request_mode = 0;
+	if (oldw->core.x	!= w->core.x) {
+	    geoReq.x		= w->core.x;
+	    w->core.x		= oldw->core.x;
+	    geoReq.request_mode |= CWX;
+	}
+	if (oldw->core.y	!= w->core.y) {
+	    geoReq.y		= w->core.y;
+	    w->core.y		= oldw->core.y;
+	    geoReq.request_mode |= CWY;
+	}
+	if (oldw->core.width	!= w->core.width) {
+	    geoReq.width	= w->core.width;
+	    w->core.width	= oldw->core.width;
+	    geoReq.request_mode |= CWWidth;
+	}
+	if (oldw->core.height	!= w->core.height) {
+	    geoReq.height	= w->core.height;
+	    w->core.height	= oldw->core.height;
+	    geoReq.request_mode |= CWHeight;
+	}
+	if (oldw->core.border_width != w->core.border_width) {
+	    geoReq.border_width	    = w->core.border_width;
+	    w->core.border_width    = oldw->core.border_width;
+	    geoReq.request_mode	    |= CWBorderWidth;
+	}
+
+	if (geoReq.request_mode != 0) {
+	    /* Pass on any requests for unchanged geometry values */
+	    if (geoReq.request_mode !=
+		(CWX | CWY | CWWidth | CWHeight | CWBorderWidth)) {
+		for ( ; num_args != 0; num_args--, args++) {
+		    if (! (geoReq.request_mode & CWX) &&
+			strcmp(XtNx, args->name) == 0) {
+			geoReq.x = w->core.x;
+			geoReq.request_mode |= CWX;
+		    } else if (! (geoReq.request_mode & CWY) &&
+			       strcmp(XtNy, args->name) == 0) {
+			geoReq.y = w->core.y;
+			geoReq.request_mode |= CWY;
+		    } else if (! (geoReq.request_mode & CWWidth) &&
+			       strcmp(XtNwidth, args->name) == 0) {
+			geoReq.width = w->core.width;
+			geoReq.request_mode |= CWWidth;
+		    } else if (! (geoReq.request_mode & CWHeight) &&
+			       strcmp(XtNheight, args->name) == 0) {
+			geoReq.height = w->core.height;
+			geoReq.request_mode |= CWHeight;
+		    } else if (! (geoReq.request_mode & CWBorderWidth) &&
+			       strcmp(XtNborderWidth, args->name) == 0) {
+			geoReq.border_width = w->core.border_width;
+			geoReq.request_mode |= CWBorderWidth;
+		    }
+		}
+	    }
+	    CALLGEOTAT(_XtGeoTrace(w,
+		     "\nXtSetValues sees some geometry changes for \"%s\".\n",
+			   XtName(w)));
+	    CALLGEOTAT(_XtGeoTab(1));
+	    do {
+		XtGeometryHookDataRec call_data;
+
+		if (XtHasCallbacks(hookobj, XtNgeometryHook) == XtCallbackHasSome) {
+		    call_data.type = XtHpreGeometry;
+		    call_data.widget = w;
+		    call_data.request = &geoReq;
+		    XtCallCallbackList(hookobj,
+			((HookObject)hookobj)->hooks.geometryhook_callbacks,
+			(XtPointer)&call_data);
+		    call_data.result = result =
+			_XtMakeGeometryRequest(w, &geoReq, &geoReply,
+					       &cleared_rect_obj);
+		    call_data.type = XtHpostGeometry;
+		    call_data.reply = &geoReply;
+		    XtCallCallbackList(hookobj,
+			((HookObject)hookobj)->hooks.geometryhook_callbacks,
+			(XtPointer)&call_data);
+		} else {
+		    result = _XtMakeGeometryRequest(w, &geoReq, &geoReply,
+						    &cleared_rect_obj);
+		}
+		if (result == XtGeometryYes || result == XtGeometryDone)
+		    break;
+
+		/* An Almost or No reply.  Call widget and let it munge
+		   request, reply */
+		LOCK_PROCESS;
+		set_values_almost = wc->core_class.set_values_almost;
+		UNLOCK_PROCESS;
+		if (set_values_almost == NULL) {
+		    XtAppWarningMsg(app,
+			    "invalidProcedure","set_values_almost",
+			  XtCXtToolkitError,
+			  "set_values_almost procedure shouldn't be NULL",
+			  (String *)NULL, (Cardinal *)NULL);
+		    break;
+		}
+		if (result == XtGeometryNo) geoReply.request_mode = 0;
+		CALLGEOTAT(_XtGeoTrace(w,"calling SetValuesAlmost.\n"));
+		(*set_values_almost) (oldw, w, &geoReq, &geoReply);
+	    } while (geoReq.request_mode != 0);
+	    /* call resize proc if we changed size and parent
+	     * didn't already invoke resize */
+	    {
+	    XtWidgetProc resize;
+	    LOCK_PROCESS;
+	    resize = wc->core_class.resize;
+	    UNLOCK_PROCESS;
+	    if ((w->core.width != oldw->core.width ||
+		 w->core.height != oldw->core.height)
+		&& result != XtGeometryDone
+		&& resize != (XtWidgetProc) NULL) {
+		CALLGEOTAT(_XtGeoTrace(w,
+				 "XtSetValues calls \"%s\"'s resize proc.\n",
+			       XtName(w)));
+		(*resize)(w);
+	      }
+	    }
+	    CALLGEOTAT(_XtGeoTab(-1));
+	}
+	/* Redisplay if needed.  No point in clearing if the window is
+	 * about to disappear, as the Expose event will just go straight
+	 * to the bit bucket. */
+        if (XtIsWidget(w)) {
+            /* widgets can distinguish between redisplay and resize, since
+             the server will cause an expose on resize */
+            if (redisplay && XtIsRealized(w) && !w->core.being_destroyed) {
+                CALLGEOTAT(_XtGeoTrace(w,
+				 "XtSetValues calls ClearArea on \"%s\".\n",
+			       XtName(w)));
+		XClearArea (XtDisplay(w), XtWindow(w), 0, 0, 0, 0, TRUE);
+	    }
+        } else { /*non-window object */
+	  if (redisplay && ! cleared_rect_obj ) {
+	      Widget pw = _XtWindowedAncestor(w);
+	      if (XtIsRealized(pw) && !pw->core.being_destroyed) {
+		  RectObj r = (RectObj)w;
+		  int bw2 = r->rectangle.border_width << 1;
+		  CALLGEOTAT(_XtGeoTrace(w,
+		   "XtSetValues calls ClearArea on \"%s\"'s parent \"%s\".\n",
+				 XtName(w),XtName(pw)));
+		  XClearArea (XtDisplay (pw), XtWindow (pw),
+			      r->rectangle.x, r->rectangle.y,
+			      r->rectangle.width + bw2,
+			      r->rectangle.height + bw2,TRUE);
+	      }
+	  }
+        }
+    }
+
+
+    /* Free dynamic storage */
+    if (constraintSize) {
+        XtStackFree(oldw->core.constraints, oldcCache);
+        XtStackFree(reqw->core.constraints, reqcCache);
+    }
+    XtStackFree((XtPointer)oldw, oldwCache);
+    XtStackFree((XtPointer)reqw, reqwCache);
+    UNLOCK_APP(app);
+} /* XtSetValues */
diff --git a/libXt/src/SetWMCW.c b/libXt/src/SetWMCW.c
new file mode 100644
index 000000000..679d6eb5e
--- /dev/null
+++ b/libXt/src/SetWMCW.c
@@ -0,0 +1,173 @@
+/* $Xorg: SetWMCW.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+/* $XdotOrg: $
+ *
+ * Author:  Chris D. Peterson, MIT X Consortium
+ */
+
+/* Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "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.
+ */
+
+/*
+
+Copyright 1989, 1994, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include <X11/Xatom.h>
+
+/*	Function Name: XtSetWMColormapWindows
+ *
+ *	Description: Sets the value of the WM_COLORMAP_WINDOWS
+ *                   property on a widget's window.
+ *
+ *	Arguments:  widget - specifies the widget on whose window the
+ *   		           - WM_COLORMAP_WINDOWS property will be stored.
+ *
+ *                  list - Specifies a list of widgets whose windows are to be
+ *		           listed in the WM_COLORMAP_WINDOWS property.
+ *                  count - Specifies the number of widgets in list.
+ *
+ *	Returns: none.
+ */
+
+void
+XtSetWMColormapWindows(
+    Widget widget,
+    Widget *list,
+    Cardinal count)
+{
+    Window *data;
+    Widget *checked, *top, *temp, hookobj;
+    Cardinal i, j, checked_count;
+    Boolean match;
+    Atom xa_wm_colormap_windows;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if ( !XtIsRealized(widget) || (count == 0) ) {
+	UNLOCK_APP(app);
+	return;
+    }
+
+    top = checked = (Widget *) __XtMalloc( (Cardinal) sizeof(Widget) * count);
+
+
+/*
+ * The specification calls for only adding the windows that have unique
+ * colormaps to the property to this function, so we will make a pass through
+ * the widget list removing all the widgets with non-unique colormaps.
+ *
+ * We will also remove any unrealized widgets from the list at this time.
+ */
+
+    for (checked_count = 0, i = 0; i < count; i++) {
+	if (!XtIsRealized(list[i])) continue;
+
+	*checked = list[i];
+	match = FALSE;
+
+/*
+ * Don't check first element for matching colormap since there is nothing
+ * to check it against.
+ */
+
+	if (checked != top)
+	    for (j = 0, temp = top; j < checked_count ; j++, temp++)
+		if ( (*temp)->core.colormap == (*checked)->core.colormap) {
+		    match = TRUE;
+		    break;
+		}
+
+/*
+ * If no colormap was found to match then add this widget to the linked list.
+ */
+
+	if (!match) {
+	    checked++;
+	    checked_count++;
+	}
+    }
+
+/*
+ * Now that we have the list of widgets we need to convert it to a list of
+ * windows and set the property.
+ */
+
+    data = (Window *) __XtMalloc( (Cardinal) sizeof(Window) * checked_count);
+
+    for ( i = 0 ; i < checked_count ; i++)
+	data[i] = XtWindow(top[i]);
+
+    xa_wm_colormap_windows = XInternAtom(XtDisplay(widget),
+					 "WM_COLORMAP_WINDOWS", FALSE);
+
+    XChangeProperty(XtDisplay(widget), XtWindow(widget),
+		    xa_wm_colormap_windows, XA_WINDOW, 32,
+		    PropModeReplace, (unsigned char *) data, (int) i);
+
+    hookobj = XtHooksOfDisplay(XtDisplay(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHsetWMColormapWindows;
+	call_data.widget = widget;
+	call_data.event_data = (XtPointer) list;
+	call_data.num_event_data = count;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+
+    XtFree( (char *) data);
+    XtFree( (char *) top);
+    UNLOCK_APP(app);
+}
diff --git a/libXt/src/Shell.c b/libXt/src/Shell.c
new file mode 100644
index 000000000..292777be0
--- /dev/null
+++ b/libXt/src/Shell.c
@@ -0,0 +1,3412 @@
+/* $Xorg: Shell.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Shell.c,v 3.16tsi Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+#ifndef DEFAULT_WM_TIMEOUT
+#define DEFAULT_WM_TIMEOUT 5000
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "Shell.h"
+#include "ShellP.h"
+#include "ShellI.h"
+#include "Vendor.h"
+#include "VendorP.h"
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+#include <X11/ICE/ICElib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef EDITRES
+#include <X11/Xmu/Editres.h>
+#endif
+
+/***************************************************************************
+ *
+ * Note: per the Xt spec, the Shell geometry management assumes in
+ * several places that there is only one managed child.  This is
+ * *not* a bug.  Any subclass that assumes otherwise is broken.
+ *
+ ***************************************************************************/
+
+#define BIGSIZE ((Dimension)32767)
+
+/***************************************************************************
+ *
+ * Default values for resource lists
+ *
+ ***************************************************************************/
+
+#ifdef CRAY
+void _XtShellDepth(Widget, int, XrmValue *);
+void _XtShellColormap(Widget, int, XrmValue *);
+void _XtShellAncestorSensitive(Widget, int, XrmValue *);
+void _XtTitleEncoding(Widget, int, XrmValue *);
+#else
+static void _XtShellDepth(Widget, int, XrmValue *);
+static void _XtShellColormap(Widget, int, XrmValue *);
+static void _XtShellAncestorSensitive(Widget, int, XrmValue *);
+static void _XtTitleEncoding(Widget, int, XrmValue *);
+#endif
+
+/***************************************************************************
+ *
+ * Shell class record
+ *
+ ***************************************************************************/
+
+#define Offset(x)	(XtOffsetOf(ShellRec, x))
+static XtResource shellResources[]=
+{
+	{XtNx, XtCPosition, XtRPosition, sizeof(Position),
+	    Offset(core.x), XtRImmediate, (XtPointer)BIGSIZE},
+	{XtNy, XtCPosition, XtRPosition, sizeof(Position),
+	    Offset(core.y), XtRImmediate, (XtPointer)BIGSIZE},
+	{ XtNdepth, XtCDepth, XtRInt, sizeof(int),
+	    Offset(core.depth), XtRCallProc, (XtPointer) _XtShellDepth},
+	{ XtNcolormap, XtCColormap, XtRColormap, sizeof(Colormap),
+	    Offset(core.colormap), XtRCallProc, (XtPointer) _XtShellColormap},
+	{ XtNancestorSensitive, XtCSensitive, XtRBoolean, sizeof(Boolean),
+	    Offset(core.ancestor_sensitive), XtRCallProc,
+	    (XtPointer) _XtShellAncestorSensitive},
+	{ XtNallowShellResize, XtCAllowShellResize, XtRBoolean,
+	    sizeof(Boolean), Offset(shell.allow_shell_resize),
+	    XtRImmediate, (XtPointer)False},
+	{ XtNgeometry, XtCGeometry, XtRString, sizeof(String),
+	    Offset(shell.geometry), XtRString, (XtPointer)NULL},
+	{ XtNcreatePopupChildProc, XtCCreatePopupChildProc, XtRFunction,
+	    sizeof(XtCreatePopupChildProc), Offset(shell.create_popup_child_proc),
+	    XtRFunction, NULL},
+	{ XtNsaveUnder, XtCSaveUnder, XtRBoolean, sizeof(Boolean),
+	    Offset(shell.save_under), XtRImmediate, (XtPointer)False},
+	{ XtNpopupCallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
+	    Offset(shell.popup_callback), XtRCallback, (XtPointer) NULL},
+	{ XtNpopdownCallback, XtCCallback, XtRCallback, sizeof(XtCallbackList),
+	    Offset(shell.popdown_callback), XtRCallback, (XtPointer) NULL},
+	{ XtNoverrideRedirect, XtCOverrideRedirect,
+	    XtRBoolean, sizeof(Boolean), Offset(shell.override_redirect),
+	    XtRImmediate, (XtPointer)False},
+	{ XtNvisual, XtCVisual, XtRVisual, sizeof(Visual*),
+	    Offset(shell.visual), XtRImmediate, (XtPointer)CopyFromParent}
+};
+
+static void ClassPartInitialize(WidgetClass);
+static void Initialize(Widget, Widget, ArgList, Cardinal *);
+static void Realize(Widget, Mask *, XSetWindowAttributes *);
+static void Resize(Widget);
+static Boolean SetValues(Widget, Widget, Widget, ArgList , Cardinal *);
+static void GetValuesHook(Widget, ArgList, Cardinal*);
+static void ChangeManaged(Widget);
+static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, XtWidgetGeometry *);
+static XtGeometryResult RootGeometryManager(Widget gw, XtWidgetGeometry *request, XtWidgetGeometry *reply);
+static void Destroy(Widget);
+
+static ShellClassExtensionRec shellClassExtRec = {
+    NULL,
+    NULLQUARK,
+    XtShellExtensionVersion,
+    sizeof(ShellClassExtensionRec),
+    RootGeometryManager
+};
+
+externaldef(shellclassrec) ShellClassRec shellClassRec = {
+  {   /* Core */
+    /* superclass	  */	(WidgetClass) &compositeClassRec,
+    /* class_name	  */	"Shell",
+    /* size		  */	sizeof(ShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	ClassPartInitialize,
+    /* Class init'ed ?	  */	FALSE,
+    /* initialize	  */	Initialize,
+    /* initialize_notify  */	NULL,
+    /* realize		  */	Realize,
+    /* actions		  */	NULL,
+    /* num_actions	  */	0,
+    /* resources	  */	shellResources,
+    /* resource_count	  */	XtNumber(shellResources),
+    /* xrm_class	  */	NULLQUARK,
+    /* compress_motion	  */	FALSE,
+    /* compress_exposure  */	TRUE,
+    /* compress_enterleave*/	FALSE,
+    /* visible_interest	  */	FALSE,
+    /* destroy		  */	Destroy,
+    /* resize		  */	Resize,
+    /* expose		  */	NULL,
+    /* set_values	  */	SetValues,
+    /* set_values_hook	  */	NULL,
+    /* set_values_almost  */	XtInheritSetValuesAlmost,
+    /* get_values_hook	  */	GetValuesHook,
+    /* accept_focus	  */	NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets	  */	NULL,
+    /* tm_table		  */	NULL,
+    /* query_geometry	  */	NULL,
+    /* display_accelerator*/	NULL,
+    /* extension	  */	NULL
+  },{ /* Composite */
+    /* geometry_manager	  */	GeometryManager,
+    /* change_managed	  */	ChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	  */	NULL
+  },{ /* Shell */
+    /* extension	  */	(XtPointer)&shellClassExtRec
+  }
+};
+
+externaldef(shellwidgetclass) WidgetClass shellWidgetClass = (WidgetClass) (&shellClassRec);
+
+/***************************************************************************
+ *
+ * OverrideShell class record
+ *
+ ***************************************************************************/
+
+static XtResource overrideResources[]=
+{
+	{ XtNoverrideRedirect, XtCOverrideRedirect,
+	    XtRBoolean, sizeof(Boolean), Offset(shell.override_redirect),
+	    XtRImmediate, (XtPointer)True},
+	{ XtNsaveUnder, XtCSaveUnder, XtRBoolean, sizeof(Boolean),
+	    Offset(shell.save_under), XtRImmediate, (XtPointer)True},
+};
+
+externaldef(overrideshellclassrec) OverrideShellClassRec overrideShellClassRec = {
+  {
+    /* superclass         */    (WidgetClass) &shellClassRec,
+    /* class_name         */    "OverrideShell",
+    /* size               */    sizeof(OverrideShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?    */	FALSE,
+    /* initialize         */    NULL,
+    /* initialize_notify    */	NULL,
+    /* realize            */    XtInheritRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    overrideResources,
+    /* resource_count     */	XtNumber(overrideResources),
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/ 	FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    NULL,
+    /* resize             */    XtInheritResize,
+    /* expose             */    NULL,
+    /* set_values         */    NULL,
+    /* set_values_hook      */	NULL,
+    /* set_values_almost    */	XtInheritSetValuesAlmost,
+    /* get_values_hook      */	NULL,
+    /* accept_focus       */    NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets   */    NULL,
+    /* tm_table		    */  NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */  NULL,
+    /* extension	    */  NULL
+  },{
+    /* geometry_manager   */    XtInheritGeometryManager,
+    /* change_managed     */    XtInheritChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  }
+};
+
+externaldef(overrideshellwidgetclass) WidgetClass overrideShellWidgetClass =
+	(WidgetClass) (&overrideShellClassRec);
+
+/***************************************************************************
+ *
+ * WMShell class record
+ *
+ ***************************************************************************/
+
+#undef Offset
+#define Offset(x)	(XtOffsetOf(WMShellRec, x))
+
+static int default_unspecified_shell_int = XtUnspecifiedShellInt;
+/*
+ * Warning, casting XtUnspecifiedShellInt (which is -1) to an (XtPointer)
+ * can result is loss of bits on some machines (i.e. crays)
+ */
+
+static XtResource wmResources[]=
+{
+	{ XtNtitle, XtCTitle, XtRString, sizeof(String),
+	    Offset(wm.title), XtRString, NULL},
+	{ XtNtitleEncoding, XtCTitleEncoding, XtRAtom, sizeof(Atom),
+	    Offset(wm.title_encoding),
+	    XtRCallProc, (XtPointer) _XtTitleEncoding},
+	{ XtNwmTimeout, XtCWmTimeout, XtRInt, sizeof(int),
+	    Offset(wm.wm_timeout), XtRImmediate,(XtPointer)DEFAULT_WM_TIMEOUT},
+	{ XtNwaitForWm, XtCWaitForWm, XtRBoolean, sizeof(Boolean),
+	    Offset(wm.wait_for_wm), XtRImmediate, (XtPointer)True},
+	{ XtNtransient, XtCTransient, XtRBoolean, sizeof(Boolean),
+	    Offset(wm.transient), XtRImmediate, (XtPointer)False},
+/* size_hints minus things stored in core */
+	{ XtNbaseWidth, XtCBaseWidth, XtRInt, sizeof(int),
+	    Offset(wm.base_width),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNbaseHeight, XtCBaseHeight, XtRInt, sizeof(int),
+	    Offset(wm.base_height),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNwinGravity, XtCWinGravity, XtRGravity, sizeof(int),
+	    Offset(wm.win_gravity),
+	    XtRGravity, (XtPointer) &default_unspecified_shell_int},
+	{ XtNminWidth, XtCMinWidth, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.min_width),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNminHeight, XtCMinHeight, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.min_height),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNmaxWidth, XtCMaxWidth, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.max_width),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNmaxHeight, XtCMaxHeight, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.max_height),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNwidthInc, XtCWidthInc, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.width_inc),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNheightInc, XtCHeightInc, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.height_inc),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNminAspectX, XtCMinAspectX, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.min_aspect.x),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNminAspectY, XtCMinAspectY, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.min_aspect.y),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNmaxAspectX, XtCMaxAspectX, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.max_aspect.x),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNmaxAspectY, XtCMaxAspectY, XtRInt, sizeof(int),
+	    Offset(wm.size_hints.max_aspect.y),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+/* wm_hints */
+	{ XtNinput, XtCInput, XtRBool, sizeof(Bool),
+	    Offset(wm.wm_hints.input), XtRImmediate, (XtPointer)False},
+	{ XtNinitialState, XtCInitialState, XtRInitialState, sizeof(int),
+	    Offset(wm.wm_hints.initial_state),
+	    XtRImmediate, (XtPointer)NormalState},
+	{ XtNiconPixmap, XtCIconPixmap, XtRBitmap, sizeof(Pixmap),
+	    Offset(wm.wm_hints.icon_pixmap), XtRPixmap, NULL},
+	{ XtNiconWindow, XtCIconWindow, XtRWindow, sizeof(Window),
+	    Offset(wm.wm_hints.icon_window), XtRWindow,   (XtPointer) NULL},
+	{ XtNiconX, XtCIconX, XtRInt, sizeof(int),
+	    Offset(wm.wm_hints.icon_x),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNiconY, XtCIconY, XtRInt, sizeof(int),
+	    Offset(wm.wm_hints.icon_y),
+	    XtRInt, (XtPointer) &default_unspecified_shell_int},
+	{ XtNiconMask, XtCIconMask, XtRBitmap, sizeof(Pixmap),
+	    Offset(wm.wm_hints.icon_mask), XtRPixmap, NULL},
+	{ XtNwindowGroup, XtCWindowGroup, XtRWindow, sizeof(Window),
+	    Offset(wm.wm_hints.window_group),
+	    XtRImmediate, (XtPointer)XtUnspecifiedWindow},
+	{ XtNclientLeader, XtCClientLeader, XtRWidget, sizeof(Widget),
+	    Offset(wm.client_leader), XtRWidget, NULL},
+	{ XtNwindowRole, XtCWindowRole, XtRString, sizeof(String),
+	    Offset(wm.window_role), XtRString, (XtPointer) NULL},
+	{ XtNurgency, XtCUrgency, XtRBoolean, sizeof(Boolean),
+	    Offset(wm.urgency), XtRImmediate, (XtPointer) False}
+};
+
+static void WMInitialize(Widget, Widget, ArgList, Cardinal *);
+static Boolean WMSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+static void WMDestroy(Widget);
+
+externaldef(wmshellclassrec) WMShellClassRec wmShellClassRec = {
+  {
+    /* superclass         */    (WidgetClass) &shellClassRec,
+    /* class_name         */    "WMShell",
+    /* size               */    sizeof(WMShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?    */	FALSE,
+    /* initialize         */    WMInitialize,
+    /* initialize_notify    */	NULL,
+    /* realize            */    XtInheritRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    wmResources,
+    /* resource_count     */	XtNumber(wmResources),
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/	FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    WMDestroy,
+    /* resize             */    XtInheritResize,
+    /* expose             */    NULL,
+    /* set_values         */    WMSetValues,
+    /* set_values_hook      */	NULL,
+    /* set_values_almost    */	XtInheritSetValuesAlmost,
+    /* get_values_hook      */	NULL,
+    /* accept_focus       */    NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets   */    NULL,
+    /* tm_table		    */  NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */  NULL,
+    /* extension	    */  NULL
+  },{
+    /* geometry_manager   */    XtInheritGeometryManager,
+    /* change_managed     */    XtInheritChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  }
+};
+
+externaldef(wmshellwidgetclass) WidgetClass wmShellWidgetClass = (WidgetClass) (&wmShellClassRec);
+
+/***************************************************************************
+ *
+ * TransientShell class record
+ *
+ ***************************************************************************/
+
+#undef Offset
+#define Offset(x)	(XtOffsetOf(TransientShellRec, x))
+
+static XtResource transientResources[]=
+{
+	{ XtNtransient, XtCTransient, XtRBoolean, sizeof(Boolean),
+	    Offset(wm.transient), XtRImmediate, (XtPointer)True},
+	{ XtNtransientFor, XtCTransientFor, XtRWidget, sizeof(Widget),
+	    Offset(transient.transient_for), XtRWidget, NULL},
+	{ XtNsaveUnder, XtCSaveUnder, XtRBoolean, sizeof(Boolean),
+	    Offset(shell.save_under), XtRImmediate, (XtPointer)True},
+};
+
+static void TransientRealize(Widget, Mask *, XSetWindowAttributes *);
+static Boolean TransientSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+
+externaldef(transientshellclassrec) TransientShellClassRec transientShellClassRec = {
+  {
+    /* superclass	  */	(WidgetClass) &vendorShellClassRec,
+    /* class_name	  */	"TransientShell",
+    /* size		  */	sizeof(TransientShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?	  */	FALSE,
+    /* initialize	  */	NULL,
+    /* initialize_notify  */	NULL,
+    /* realize		  */	TransientRealize,
+    /* actions		  */	NULL,
+    /* num_actions	  */	0,
+    /* resources	  */	transientResources,
+    /* resource_count	  */	XtNumber(transientResources),
+    /* xrm_class	  */	NULLQUARK,
+    /* compress_motion	  */	FALSE,
+    /* compress_exposure  */	TRUE,
+    /* compress_enterleave*/	FALSE,
+    /* visible_interest	  */	FALSE,
+    /* destroy		  */	NULL,
+    /* resize		  */	XtInheritResize,
+    /* expose		  */	NULL,
+    /* set_values	  */	TransientSetValues,
+    /* set_values_hook	  */	NULL,
+    /* set_values_almost  */	XtInheritSetValuesAlmost,
+    /* get_values_hook	  */	NULL,
+    /* accept_focus	  */	NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets	  */	NULL,
+    /* tm_table		  */	XtInheritTranslations,
+    /* query_geometry	  */	NULL,
+    /* display_accelerator*/	NULL,
+    /* extension	  */	NULL
+  },{
+    /* geometry_manager	  */	XtInheritGeometryManager,
+    /* change_managed	  */	XtInheritChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  }
+};
+
+externaldef(transientshellwidgetclass) WidgetClass transientShellWidgetClass =
+	(WidgetClass) (&transientShellClassRec);
+
+/***************************************************************************
+ *
+ * TopLevelShell class record
+ *
+ ***************************************************************************/
+
+#undef Offset
+#define Offset(x)	(XtOffsetOf(TopLevelShellRec, x))
+
+static XtResource topLevelResources[]=
+{
+	{ XtNiconName, XtCIconName, XtRString, sizeof(String),
+	    Offset(topLevel.icon_name), XtRString, (XtPointer) NULL},
+	{ XtNiconNameEncoding, XtCIconNameEncoding, XtRAtom, sizeof(Atom),
+	    Offset(topLevel.icon_name_encoding),
+	    XtRCallProc, (XtPointer) _XtTitleEncoding},
+	{ XtNiconic, XtCIconic, XtRBoolean, sizeof(Boolean),
+	    Offset(topLevel.iconic), XtRImmediate, (XtPointer)False}
+};
+
+static void TopLevelInitialize(Widget, Widget, ArgList, Cardinal *);
+static Boolean TopLevelSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+static void TopLevelDestroy(Widget);
+
+externaldef(toplevelshellclassrec) TopLevelShellClassRec topLevelShellClassRec = {
+  {
+    /* superclass         */    (WidgetClass) &vendorShellClassRec,
+    /* class_name         */    "TopLevelShell",
+    /* size               */    sizeof(TopLevelShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?    */	FALSE,
+    /* initialize         */    TopLevelInitialize,
+    /* initialize_notify    */	NULL,
+    /* realize            */    XtInheritRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    topLevelResources,
+    /* resource_count     */	XtNumber(topLevelResources),
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/ 	FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    TopLevelDestroy,
+    /* resize             */    XtInheritResize,
+    /* expose             */    NULL,
+    /* set_values         */    TopLevelSetValues,
+    /* set_values_hook      */	NULL,
+    /* set_values_almost    */	XtInheritSetValuesAlmost,
+    /* get_values_hook      */	NULL,
+    /* accept_focus       */    NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets   */    NULL,
+    /* tm_table		    */  XtInheritTranslations,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */  NULL,
+    /* extension	    */  NULL
+  },{
+    /* geometry_manager   */    XtInheritGeometryManager,
+    /* change_managed     */    XtInheritChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  }
+};
+
+externaldef(toplevelshellwidgetclass) WidgetClass topLevelShellWidgetClass =
+	(WidgetClass) (&topLevelShellClassRec);
+
+/***************************************************************************
+ *
+ * ApplicationShell class record
+ *
+ ***************************************************************************/
+
+#undef Offset
+#define Offset(x)	(XtOffsetOf(ApplicationShellRec, x))
+
+static XtResource applicationResources[]=
+{
+    {XtNargc, XtCArgc, XtRInt, sizeof(int),
+	  Offset(application.argc), XtRImmediate, (XtPointer)0},
+    {XtNargv, XtCArgv, XtRStringArray, sizeof(String*),
+	  Offset(application.argv), XtRPointer, (XtPointer) NULL}
+};
+#undef Offset
+
+static void ApplicationInitialize(Widget, Widget, ArgList, Cardinal *);
+static void ApplicationDestroy(Widget);
+static Boolean ApplicationSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+static void ApplicationShellInsertChild(Widget);
+
+static CompositeClassExtensionRec compositeClassExtension = {
+    /* next_extension	*/	NULL,
+    /* record_type	*/	NULLQUARK,
+    /* version		*/	XtCompositeExtensionVersion,
+    /* record_size	*/	sizeof(CompositeClassExtensionRec),
+    /* accepts_objects	*/	TRUE,
+    /* allows_change_managed_set */ FALSE
+};
+
+
+externaldef(applicationshellclassrec) ApplicationShellClassRec applicationShellClassRec = {
+  {
+    /* superclass         */    (WidgetClass) &topLevelShellClassRec,
+    /* class_name         */    "ApplicationShell",
+    /* size               */    sizeof(ApplicationShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?    */	FALSE,
+    /* initialize         */    ApplicationInitialize,
+    /* initialize_notify  */	NULL,
+    /* realize            */    XtInheritRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    applicationResources,
+    /* resource_count     */	XtNumber(applicationResources),
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/    FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    ApplicationDestroy,
+    /* resize             */    XtInheritResize,
+    /* expose             */    NULL,
+    /* set_values         */    ApplicationSetValues,
+    /* set_values_hook    */	NULL,
+    /* set_values_almost  */	XtInheritSetValuesAlmost,
+    /* get_values_hook    */	NULL,
+    /* accept_focus       */    NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets   */    NULL,
+    /* tm_table		  */	XtInheritTranslations,
+    /* query_geometry	  */	NULL,
+    /* display_accelerator*/	NULL,
+    /* extension	  */	NULL
+  },{
+    /* geometry_manager   */    XtInheritGeometryManager,
+    /* change_managed     */    XtInheritChangeManaged,
+    /* insert_child	  */	ApplicationShellInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	  */	(XtPointer)&compositeClassExtension
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  }
+};
+
+externaldef(applicationshellwidgetclass) WidgetClass applicationShellWidgetClass =
+	(WidgetClass) (&applicationShellClassRec);
+
+/***************************************************************************
+ *
+ * SessionShell class record
+ *
+ ***************************************************************************/
+
+#undef Offset
+#define Offset(x)	(XtOffsetOf(SessionShellRec, x))
+
+static XtResource sessionResources[]=
+{
+#ifndef XT_NO_SM
+ {XtNconnection, XtCConnection, XtRSmcConn, sizeof(SmcConn),
+       Offset(session.connection), XtRSmcConn, (XtPointer) NULL},
+#endif
+ {XtNsessionID, XtCSessionID, XtRString, sizeof(String),
+       Offset(session.session_id), XtRString, (XtPointer) NULL},
+ {XtNrestartCommand, XtCRestartCommand, XtRCommandArgArray, sizeof(String*),
+       Offset(session.restart_command), XtRPointer, (XtPointer) NULL},
+ {XtNcloneCommand, XtCCloneCommand, XtRCommandArgArray, sizeof(String*),
+       Offset(session.clone_command), XtRPointer, (XtPointer) NULL},
+ {XtNdiscardCommand, XtCDiscardCommand, XtRCommandArgArray, sizeof(String*),
+       Offset(session.discard_command), XtRPointer, (XtPointer) NULL},
+ {XtNresignCommand, XtCResignCommand, XtRCommandArgArray, sizeof(String*),
+       Offset(session.resign_command), XtRPointer, (XtPointer) NULL},
+ {XtNshutdownCommand, XtCShutdownCommand, XtRCommandArgArray, sizeof(String*),
+       Offset(session.shutdown_command), XtRPointer, (XtPointer) NULL},
+ {XtNenvironment, XtCEnvironment, XtREnvironmentArray, sizeof(String*),
+       Offset(session.environment), XtRPointer, (XtPointer) NULL},
+ {XtNcurrentDirectory, XtCCurrentDirectory, XtRDirectoryString, sizeof(String),
+       Offset(session.current_dir), XtRString, (XtPointer) NULL},
+ {XtNprogramPath, XtCProgramPath, XtRString, sizeof(String),
+      Offset(session.program_path), XtRString, (XtPointer) NULL},
+ {XtNrestartStyle, XtCRestartStyle, XtRRestartStyle, sizeof(unsigned char),
+      Offset(session.restart_style), XtRImmediate,
+      (XtPointer) SmRestartIfRunning},
+ {XtNjoinSession, XtCJoinSession, XtRBoolean, sizeof(Boolean),
+       Offset(session.join_session), XtRImmediate, (XtPointer) True},
+ {XtNsaveCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+       Offset(session.save_callbacks), XtRCallback, (XtPointer) NULL},
+ {XtNinteractCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+       Offset(session.interact_callbacks), XtRCallback, (XtPointer)NULL},
+ {XtNcancelCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+       Offset(session.cancel_callbacks), XtRCallback, (XtPointer) NULL},
+ {XtNsaveCompleteCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+       Offset(session.save_complete_callbacks), XtRCallback, (XtPointer) NULL},
+ {XtNdieCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+       Offset(session.die_callbacks), XtRCallback, (XtPointer) NULL},
+ {XtNerrorCallback, XtCCallback, XtRCallback, sizeof(XtPointer),
+       Offset(session.error_callbacks), XtRCallback, (XtPointer) NULL}
+};
+#undef Offset
+
+static void SessionInitialize(Widget, Widget, ArgList, Cardinal *);
+static void SessionDestroy(Widget);
+static Boolean SessionSetValues(Widget, Widget, Widget, ArgList, Cardinal *);
+
+static CompositeClassExtensionRec sessionCompositeClassExtension = {
+    /* next_extension	*/	NULL,
+    /* record_type	*/	NULLQUARK,
+    /* version		*/	XtCompositeExtensionVersion,
+    /* record_size	*/	sizeof(CompositeClassExtensionRec),
+    /* accepts_objects	*/	TRUE,
+    /* allows_change_managed_set */ FALSE
+};
+
+
+externaldef(sessionshellclassrec) SessionShellClassRec sessionShellClassRec = {
+  {
+    /* superclass         */    (WidgetClass) &applicationShellClassRec,
+    /* class_name         */    "SessionShell",
+    /* size               */    sizeof(SessionShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?    */	FALSE,
+    /* initialize         */    SessionInitialize,
+    /* initialize_notify  */	NULL,
+    /* realize            */    XtInheritRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    sessionResources,
+    /* resource_count     */	XtNumber(sessionResources),
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/    FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    SessionDestroy,
+    /* resize             */    XtInheritResize,
+    /* expose             */    NULL,
+    /* set_values         */    SessionSetValues,
+    /* set_values_hook    */	NULL,
+    /* set_values_almost  */	XtInheritSetValuesAlmost,
+    /* get_values_hook    */	NULL,
+    /* accept_focus       */    NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets   */    NULL,
+    /* tm_table		  */	XtInheritTranslations,
+    /* query_geometry	  */	NULL,
+    /* display_accelerator*/	NULL,
+    /* extension	  */	NULL
+  },{
+    /* geometry_manager   */    XtInheritGeometryManager,
+    /* change_managed     */    XtInheritChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	  */	(XtPointer)&sessionCompositeClassExtension
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension	  */	NULL
+  },{
+    /* extension          */    NULL
+  }
+};
+
+externaldef(sessionshellwidgetclass) WidgetClass sessionShellWidgetClass =
+	(WidgetClass) (&sessionShellClassRec);
+
+/****************************************************************************
+ * Whew!
+ ****************************************************************************/
+
+static void ComputeWMSizeHints(
+    WMShellWidget w,
+    XSizeHints *hints)
+{
+    register long flags;
+    hints->flags = flags = w->wm.size_hints.flags;
+#define copy(field) hints->field = w->wm.size_hints.field
+    if (flags & (USPosition | PPosition)) {
+	copy(x);
+	copy(y);
+    }
+    if (flags & (USSize | PSize)) {
+	copy(width);
+	copy(height);
+    }
+    if (flags & PMinSize) {
+	copy(min_width);
+	copy(min_height);
+    }
+    if (flags & PMaxSize) {
+	copy(max_width);
+	copy(max_height);
+    }
+    if (flags & PResizeInc) {
+	copy(width_inc);
+	copy(height_inc);
+    }
+    if (flags & PAspect) {
+	copy(min_aspect.x);
+	copy(min_aspect.y);
+	copy(max_aspect.x);
+	copy(max_aspect.y);
+    }
+#undef copy
+#define copy(field) hints->field = w->wm.field
+    if (flags & PBaseSize) {
+	copy(base_width);
+	copy(base_height);
+    }
+    if (flags & PWinGravity)
+	copy(win_gravity);
+#undef copy
+}
+
+static void _SetWMSizeHints(
+    WMShellWidget w)
+{
+    XSizeHints *size_hints = XAllocSizeHints();
+
+    if (size_hints == NULL) _XtAllocError("XAllocSizeHints");
+    ComputeWMSizeHints(w, size_hints);
+    XSetWMNormalHints(XtDisplay((Widget)w), XtWindow((Widget)w), size_hints);
+    XFree((char*)size_hints);
+}
+
+static ShellClassExtension _FindClassExtension(
+    WidgetClass widget_class)
+{
+    ShellClassExtension ext;
+    for (ext = (ShellClassExtension)((ShellWidgetClass)widget_class)
+	       ->shell_class.extension;
+	 ext != NULL && ext->record_type != NULLQUARK;
+	 ext = (ShellClassExtension)ext->next_extension);
+
+    if (ext != NULL) {
+	if (  ext->version == XtShellExtensionVersion
+	      && ext->record_size == sizeof(ShellClassExtensionRec)) {
+	    /* continue */
+	} else {
+	    String params[1];
+	    Cardinal num_params = 1;
+	    params[0] = widget_class->core_class.class_name;
+	    XtErrorMsg( "invalidExtension", "shellClassPartInitialize",
+		        XtCXtToolkitError,
+		 "widget class %s has invalid ShellClassExtension record",
+		 params, &num_params);
+	}
+    }
+    return ext;
+}
+
+static void ClassPartInitialize(WidgetClass widget_class)
+{
+    ShellClassExtension ext = _FindClassExtension(widget_class);
+    if (ext != NULL) {
+	if (ext->root_geometry_manager == XtInheritRootGeometryManager) {
+	    ext->root_geometry_manager =
+		_FindClassExtension(widget_class->core_class.superclass)
+		    ->root_geometry_manager;
+	}
+    } else {
+	/* if not found, spec requires XtInheritRootGeometryManager */
+	XtPointer *extP
+	    = &((ShellWidgetClass)widget_class)->shell_class.extension;
+	ext = XtNew(ShellClassExtensionRec);
+	(void) memmove((char*)ext,
+		       (char*)_FindClassExtension(widget_class->core_class.superclass),
+		       sizeof(ShellClassExtensionRec));
+	ext->next_extension = *extP;
+	*extP = (XtPointer)ext;
+    }
+}
+
+
+static void EventHandler(Widget wid, XtPointer closure, XEvent *event, Boolean *continue_to_dispatch);
+static void _popup_set_prop(ShellWidget);
+
+
+/*ARGSUSED*/
+static void XtCopyDefaultDepth(
+    Widget      widget,
+    int		offset,
+    XrmValue    *value)
+{
+    value->addr = (XPointer)(&DefaultDepthOfScreen(XtScreenOfObject(widget)));
+}
+
+#ifndef CRAY
+static
+#endif
+void _XtShellDepth(
+    Widget widget,
+    int closure,
+    XrmValue *value)
+{
+   if (widget->core.parent == NULL) XtCopyDefaultDepth(widget,closure,value);
+   else _XtCopyFromParent (widget,closure,value);
+}
+
+/*ARGSUSED*/
+static void XtCopyDefaultColormap(
+    Widget      widget,
+    int		offset,
+    XrmValue    *value)
+{
+    value->addr = (XPointer)(&DefaultColormapOfScreen(XtScreenOfObject(widget)));
+}
+
+#ifndef CRAY
+static
+#endif
+void _XtShellColormap(
+    Widget widget,
+    int closure,
+    XrmValue *value)
+{
+   if (widget->core.parent == NULL)
+	   XtCopyDefaultColormap(widget,closure,value);
+   else _XtCopyFromParent (widget,closure,value);
+}
+
+#ifndef CRAY
+static
+#endif
+void _XtShellAncestorSensitive(
+    Widget widget,
+    int closure,
+    XrmValue *value)
+{
+   static Boolean true = True;
+   if (widget->core.parent == NULL) value->addr = (XPointer)(&true);
+   else _XtCopyFromParent (widget,closure,value);
+}
+
+/*ARGSUSED*/
+#ifndef CRAY
+static
+#endif
+void _XtTitleEncoding(
+    Widget widget,
+    int offset,
+    XrmValue *value)
+{
+    static Atom atom;
+    if (XtWidgetToApplicationContext(widget)->langProcRec.proc) atom = None;
+    else atom = XA_STRING;
+    value->addr = (XPointer) &atom;
+}
+
+
+/* ARGSUSED */
+static void Initialize(
+	Widget req,
+	Widget new,
+	ArgList args,		/* unused */
+	Cardinal *num_args)	/* unused */
+{
+	ShellWidget w = (ShellWidget) new;
+
+	w->shell.popped_up = FALSE;
+	w->shell.client_specified =
+	    _XtShellNotReparented | _XtShellPositionValid;
+
+	if (w->core.x == BIGSIZE) {
+	    w->core.x = 0;
+	    if (w->core.y == BIGSIZE) w->core.y = 0;
+	} else {
+	    if (w->core.y == BIGSIZE) w->core.y = 0;
+	    else w->shell.client_specified |= _XtShellPPositionOK;
+	}
+
+	XtAddEventHandler(new, (EventMask) StructureNotifyMask,
+		TRUE, EventHandler, (XtPointer) NULL);
+
+#ifdef EDITRES
+	XtAddEventHandler(new, (EventMask) 0, TRUE,
+			  _XEditResCheckMessages, NULL);
+#endif
+}
+
+/* ARGSUSED */
+static void WMInitialize(
+	Widget req, Widget new,
+	ArgList args,		/* unused */
+	Cardinal *num_args)	/* unused */
+{
+	WMShellWidget w = (WMShellWidget) new;
+	TopLevelShellWidget tls = (TopLevelShellWidget) new;	/* maybe */
+
+	if(w->wm.title == NULL) {
+	    if (XtIsTopLevelShell(new) &&
+		    tls->topLevel.icon_name != NULL &&
+		    strlen(tls->topLevel.icon_name) != 0) {
+		w->wm.title = XtNewString(tls->topLevel.icon_name);
+	    } else {
+		w->wm.title = XtNewString(w->core.name);
+	    }
+	} else {
+	    w->wm.title = XtNewString(w->wm.title);
+	}
+	w->wm.size_hints.flags = 0;
+	w->wm.wm_hints.flags = 0;
+	if (w->wm.window_role)
+	    w->wm.window_role = XtNewString(w->wm.window_role);
+}
+
+
+/* ARGSUSED */
+static void TopLevelInitialize(
+	Widget req, Widget new,
+	ArgList args,		/* unused */
+	Cardinal *num_args)	/* unused */
+{
+	TopLevelShellWidget w = (TopLevelShellWidget) new;
+
+	if (w->topLevel.icon_name == NULL) {
+	    w->topLevel.icon_name = XtNewString(w->core.name);
+	} else {
+	    w->topLevel.icon_name = XtNewString(w->topLevel.icon_name);
+	}
+
+	if (w->topLevel.iconic)
+	    w->wm.wm_hints.initial_state = IconicState;
+}
+
+static String *NewArgv(int, String *);
+static String *NewStringArray(String *);
+static void FreeStringArray(String *);
+
+/* ARGSUSED */
+static void ApplicationInitialize(
+    Widget req, Widget new,
+    ArgList args,		/* unused */
+    Cardinal *num_args)		/* unused */
+{
+    ApplicationShellWidget w = (ApplicationShellWidget)new;
+
+    if (w->application.argc > 0)
+	w->application.argv = NewArgv(w->application.argc,
+				      w->application.argv);
+}
+
+#define XtSaveInactive 0
+#define XtSaveActive   1
+#define XtInteractPending    2
+#define XtInteractActive     3
+
+#define XtCloneCommandMask	(1L<<0)
+#define XtCurrentDirectoryMask	(1L<<1)
+#define XtDiscardCommandMask	(1L<<2)
+#define XtEnvironmentMask	(1L<<3)
+#define XtProgramMask		(1L<<4)
+#define XtResignCommandMask	(1L<<5)
+#define XtRestartCommandMask	(1L<<6)
+#define XtRestartStyleHintMask	(1L<<7)
+#define XtShutdownCommandMask	(1L<<8)
+
+static void JoinSession(SessionShellWidget);
+static void SetSessionProperties(SessionShellWidget, Boolean, unsigned long, unsigned long);
+static void StopManagingSession(SessionShellWidget, SmcConn);
+
+typedef struct _XtSaveYourselfRec {
+    XtSaveYourself next;
+    int            save_type;
+    int            interact_style;
+    Boolean        shutdown;
+    Boolean        fast;
+    Boolean        cancel_shutdown;
+    int		   phase;
+    int            interact_dialog_type;
+    Boolean	   request_cancel;
+    Boolean	   request_next_phase;
+    Boolean        save_success;
+    int            save_tokens;
+    int            interact_tokens;
+} XtSaveYourselfRec;
+
+/* ARGSUSED */
+static void SessionInitialize(
+    Widget req, Widget new,
+    ArgList args,		/* unused */
+    Cardinal *num_args)		/* unused */
+{
+#ifndef XT_NO_SM
+    SessionShellWidget w = (SessionShellWidget)new;
+
+    if (w->session.session_id) w->session.session_id =
+	XtNewString(w->session.session_id);
+    if (w->session.restart_command) w->session.restart_command =
+	NewStringArray(w->session.restart_command);
+    if (w->session.clone_command) w->session.clone_command =
+	NewStringArray(w->session.clone_command);
+    if (w->session.discard_command) w->session.discard_command =
+	NewStringArray(w->session.discard_command);
+    if (w->session.resign_command) w->session.resign_command =
+	NewStringArray(w->session.resign_command);
+    if (w->session.shutdown_command) w->session.shutdown_command =
+	NewStringArray(w->session.shutdown_command);
+    if (w->session.environment) w->session.environment =
+	NewStringArray(w->session.environment);
+    if (w->session.current_dir) w->session.current_dir =
+	XtNewString(w->session.current_dir);
+    if (w->session.program_path) w->session.program_path =
+	XtNewString(w->session.program_path);
+
+    w->session.checkpoint_state = XtSaveInactive;
+    w->session.input_id = 0;
+    w->session.save = NULL;
+
+    if ((w->session.join_session) &&
+	(w->application.argv || w->session.restart_command))
+	JoinSession(w);
+
+    if (w->session.connection)
+	SetSessionProperties(w, True, 0L, 0L);
+#endif /* !XT_NO_SM */
+}
+
+static void Resize(
+    Widget w)
+{
+    register ShellWidget sw = (ShellWidget)w;
+    Widget childwid;
+    Cardinal i;
+    for(i = 0; i < sw->composite.num_children; i++) {
+        if (XtIsManaged(sw->composite.children[i])) {
+             childwid = sw->composite.children[i];
+             XtResizeWidget(childwid, sw->core.width, sw->core.height,
+                           childwid->core.border_width);
+	     break;		/* can only be one managed child */
+        }
+    }
+}
+
+static void GetGeometry(Widget, Widget);
+
+static void Realize(
+	Widget wid,
+	Mask *vmask,
+	XSetWindowAttributes *attr)
+{
+	ShellWidget w = (ShellWidget) wid;
+        Mask mask = *vmask;
+
+	if (! (w->shell.client_specified & _XtShellGeometryParsed)) {
+	    /* we'll get here only if there was no child the first
+	       time we were realized.  If the shell was Unrealized
+	       and then re-Realized, we probably don't want to
+	       re-evaluate the defaults anyway.
+	     */
+	    GetGeometry(wid, (Widget)NULL);
+	}
+	else if (w->core.background_pixmap == XtUnspecifiedPixmap) {
+	    /* I attempt to inherit my child's background to avoid screen flash
+	     * if there is latency between when I get resized and when my child
+	     * is resized.  Background=None is not satisfactory, as I want the
+	     * user to get immediate feedback on the new dimensions (most
+	     * particularly in the case of a non-reparenting wm).  It is
+	     * especially important to have the server clear any old cruft
+	     * from the display when I am resized larger.
+	     */
+	    register Widget *childP = w->composite.children;
+	    int i;
+	    for (i = w->composite.num_children; i; i--, childP++) {
+		if (XtIsWidget(*childP) && XtIsManaged(*childP)) {
+		    if ((*childP)->core.background_pixmap
+			    != XtUnspecifiedPixmap) {
+			mask &= ~(CWBackPixel);
+			mask |= CWBackPixmap;
+			attr->background_pixmap =
+			    w->core.background_pixmap =
+				(*childP)->core.background_pixmap;
+		    } else {
+			attr->background_pixel =
+			    w->core.background_pixel =
+				(*childP)->core.background_pixel;
+		    }
+		    break;
+		}
+	    }
+	}
+
+	if(w->shell.save_under) {
+		mask |= CWSaveUnder;
+		attr->save_under = TRUE;
+	}
+	if(w->shell.override_redirect) {
+		mask |= CWOverrideRedirect;
+		attr->override_redirect = TRUE;
+	}
+	if (wid->core.width == 0 || wid->core.height == 0) {
+	    Cardinal count = 1;
+	    XtErrorMsg("invalidDimension", "shellRealize", XtCXtToolkitError,
+		       "Shell widget %s has zero width and/or height",
+		       &wid->core.name, &count);
+	}
+	wid->core.window = XCreateWindow(XtDisplay(wid),
+		wid->core.screen->root, (int)wid->core.x, (int)wid->core.y,
+		(unsigned int)wid->core.width, (unsigned int)wid->core.height,
+		(unsigned int)wid->core.border_width, (int) wid->core.depth,
+		(unsigned int) InputOutput, w->shell.visual,
+		mask, attr);
+
+	_popup_set_prop(w);
+}
+
+
+static void _SetTransientForHint(
+     TransientShellWidget w,
+     Boolean delete)
+{
+    Window window_group;
+
+    if (w->wm.transient) {
+	if (w->transient.transient_for != NULL
+	    && XtIsRealized(w->transient.transient_for))
+	    window_group = XtWindow(w->transient.transient_for);
+	else if ((window_group = w->wm.wm_hints.window_group)
+		 == XtUnspecifiedWindowGroup) {
+	    if (delete)
+		XDeleteProperty( XtDisplay((Widget)w),
+				 XtWindow((Widget)w),
+				 XA_WM_TRANSIENT_FOR
+				);
+	    return;
+	}
+
+	XSetTransientForHint( XtDisplay((Widget)w),
+			      XtWindow((Widget)w),
+			      window_group
+			     );
+    }
+}
+
+
+static void TransientRealize(
+     Widget w,
+     Mask *vmask,
+     XSetWindowAttributes *attr)
+{
+    XtRealizeProc realize;
+
+    LOCK_PROCESS;
+    realize =
+	transientShellWidgetClass->core_class.superclass->core_class.realize;
+    UNLOCK_PROCESS;
+    (*realize) (w, vmask, attr);
+
+    _SetTransientForHint((TransientShellWidget)w, False);
+}
+
+static Widget GetClientLeader(
+    Widget w)
+{
+    while ((! XtIsWMShell(w) || ! ((WMShellWidget)w)->wm.client_leader)
+	   && w->core.parent)
+	w = w->core.parent;
+
+    /* ASSERT: w is a WMshell with client_leader set, or w has no parent */
+
+    if (XtIsWMShell(w) && ((WMShellWidget)w)->wm.client_leader)
+	w = ((WMShellWidget)w)->wm.client_leader;
+    return w;
+}
+
+static void EvaluateWMHints(
+    WMShellWidget w)
+{
+	XWMHints *hintp = &w->wm.wm_hints;
+
+	hintp->flags = StateHint | InputHint;
+
+	if (hintp->icon_x == XtUnspecifiedShellInt)
+	    hintp->icon_x = -1;
+	else
+	    hintp->flags |= IconPositionHint;
+
+	if (hintp->icon_y == XtUnspecifiedShellInt)
+	    hintp->icon_y = -1;
+	else
+	    hintp->flags |= IconPositionHint;
+
+	if (hintp->icon_pixmap != None) hintp->flags |= IconPixmapHint;
+	if (hintp->icon_mask != None)   hintp->flags |= IconMaskHint;
+	if (hintp->icon_window != None) hintp->flags |= IconWindowHint;
+
+	if (hintp->window_group == XtUnspecifiedWindow) {
+	    if(w->core.parent) {
+		Widget p;
+		for (p = w->core.parent; p->core.parent; p = p->core.parent);
+		if (XtIsRealized(p)) {
+		    hintp->window_group = XtWindow(p);
+		    hintp->flags |=  WindowGroupHint;
+		}
+	    }
+	} else if (hintp->window_group != XtUnspecifiedWindowGroup)
+	    hintp->flags |=  WindowGroupHint;
+
+	if (w->wm.urgency) hintp->flags |= XUrgencyHint;
+}
+
+
+static void EvaluateSizeHints(
+    WMShellWidget w)
+{
+	struct _OldXSizeHints *sizep = &w->wm.size_hints;
+
+	sizep->x = w->core.x;
+	sizep->y = w->core.y;
+	sizep->width = w->core.width;
+	sizep->height = w->core.height;
+
+	if (sizep->flags & USSize) {
+	    if (sizep->flags & PSize) sizep->flags &= ~PSize;
+	} else
+	    sizep->flags |= PSize;
+
+	if (sizep->flags & USPosition) {
+	    if (sizep->flags & PPosition) sizep->flags &= ~PPosition;
+	} else if (w->shell.client_specified & _XtShellPPositionOK)
+	    sizep->flags |= PPosition;
+
+	if (sizep->min_aspect.x != XtUnspecifiedShellInt
+	    || sizep->min_aspect.y != XtUnspecifiedShellInt
+	    || sizep->max_aspect.x != XtUnspecifiedShellInt
+	    || sizep->max_aspect.y != XtUnspecifiedShellInt) {
+	    sizep->flags |= PAspect;
+	}
+	if (sizep->flags & PBaseSize
+	    || w->wm.base_width != XtUnspecifiedShellInt
+	    || w->wm.base_height != XtUnspecifiedShellInt) {
+	    sizep->flags |= PBaseSize;
+	    if (w->wm.base_width == XtUnspecifiedShellInt)
+		w->wm.base_width = 0;
+	    if (w->wm.base_height == XtUnspecifiedShellInt)
+		w->wm.base_height = 0;
+	}
+	if (sizep->flags & PResizeInc
+	    || sizep->width_inc != XtUnspecifiedShellInt
+	    || sizep->height_inc != XtUnspecifiedShellInt) {
+	    if (sizep->width_inc < 1) sizep->width_inc = 1;
+	    if (sizep->height_inc < 1) sizep->height_inc = 1;
+	    sizep->flags |= PResizeInc;
+	}
+	if (sizep->flags & PMaxSize
+	    || sizep->max_width != XtUnspecifiedShellInt
+	    || sizep->max_height != XtUnspecifiedShellInt) {
+	    sizep->flags |= PMaxSize;
+	    if (sizep->max_width == XtUnspecifiedShellInt)
+		sizep->max_width = BIGSIZE;
+	    if (sizep->max_height == XtUnspecifiedShellInt)
+		sizep->max_height = BIGSIZE;
+	}
+	if (sizep->flags & PMinSize
+	    || sizep->min_width != XtUnspecifiedShellInt
+	    || sizep->min_height != XtUnspecifiedShellInt) {
+	    sizep->flags |= PMinSize;
+	    if (sizep->min_width == XtUnspecifiedShellInt)
+		sizep->min_width = 1;
+	    if (sizep->min_height == XtUnspecifiedShellInt)
+		sizep->min_height = 1;
+	}
+}
+
+static void _popup_set_prop(
+	ShellWidget w)
+{
+	Widget p;
+	WMShellWidget wmshell = (WMShellWidget) w;
+	TopLevelShellWidget tlshell = (TopLevelShellWidget) w;
+	ApplicationShellWidget appshell = (ApplicationShellWidget) w;
+	XTextProperty icon_name;
+	XTextProperty window_name;
+	char **argv;
+	int argc;
+	XSizeHints *size_hints;
+	Window window_group;
+	XClassHint classhint;
+	Boolean copied_iname, copied_wname;
+
+	if (!XtIsWMShell((Widget)w) || w->shell.override_redirect) return;
+
+	if ((size_hints = XAllocSizeHints()) == NULL)
+	    _XtAllocError("XAllocSizeHints");
+
+	copied_iname = copied_wname = False;
+        if (wmshell->wm.title_encoding == None &&
+	    XmbTextListToTextProperty(XtDisplay((Widget)w),
+				      (char**)&wmshell->wm.title,
+				      1, XStdICCTextStyle,
+				      &window_name) >= Success) {
+	    copied_wname = True;
+	} else {
+	    window_name.value = (unsigned char*)wmshell->wm.title;
+	    window_name.encoding = wmshell->wm.title_encoding ?
+		wmshell->wm.title_encoding : XA_STRING;
+	    window_name.format = 8;
+	    window_name.nitems = strlen((char *)window_name.value);
+	}
+
+	if (XtIsTopLevelShell((Widget)w)) {
+            if (tlshell->topLevel.icon_name_encoding == None &&
+		XmbTextListToTextProperty(XtDisplay((Widget)w),
+					  (char**)&tlshell->topLevel.icon_name,
+					  1, XStdICCTextStyle,
+					  &icon_name) >= Success) {
+		copied_iname = True;
+	    } else {
+		icon_name.value = (unsigned char*)tlshell->topLevel.icon_name;
+		icon_name.encoding = tlshell->topLevel.icon_name_encoding ?
+		    tlshell->topLevel.icon_name_encoding : XA_STRING;
+		icon_name.format = 8;
+		icon_name.nitems = strlen((char *)icon_name.value);
+	    }
+	}
+
+	EvaluateWMHints(wmshell);
+	EvaluateSizeHints(wmshell);
+	ComputeWMSizeHints(wmshell, size_hints);
+
+	if (wmshell->wm.transient
+	    && !XtIsTransientShell((Widget)w)
+	    && (window_group = wmshell->wm.wm_hints.window_group)
+	       != XtUnspecifiedWindowGroup) {
+
+	    XSetTransientForHint(XtDisplay((Widget)w),
+				 XtWindow((Widget)w),
+				 window_group
+				 );
+	}
+
+	classhint.res_name = w->core.name;
+	/* For the class, look up to the top of the tree */
+	for (p = (Widget)w; p->core.parent != NULL; p = p->core.parent);
+	if (XtIsApplicationShell(p)) {
+	    classhint.res_class =
+		((ApplicationShellWidget)p)->application.class;
+	} else {
+	    LOCK_PROCESS;
+	    classhint.res_class = XtClass(p)->core_class.class_name;
+	    UNLOCK_PROCESS;
+	}
+
+	if (XtIsApplicationShell((Widget)w)
+	    && (argc = appshell->application.argc) != -1)
+	    argv = (char**)appshell->application.argv;
+	else {
+	    argv = NULL;
+	    argc = 0;
+	}
+
+	XSetWMProperties(XtDisplay((Widget)w), XtWindow((Widget)w),
+			 &window_name,
+			 (XtIsTopLevelShell((Widget)w)) ? &icon_name : NULL,
+			 argv, argc,
+			 size_hints,
+			 &wmshell->wm.wm_hints,
+			 &classhint);
+	XFree((char*)size_hints);
+	if (copied_wname)
+	    XFree((XPointer)window_name.value);
+	if (copied_iname)
+	    XFree((XPointer)icon_name.value);
+
+	LOCK_PROCESS;
+	if (XtWidgetToApplicationContext((Widget)w)->langProcRec.proc) {
+	    char *locale = setlocale(LC_CTYPE, (char *)NULL);
+	    if (locale)
+		XChangeProperty(XtDisplay((Widget)w), XtWindow((Widget)w),
+				XInternAtom(XtDisplay((Widget)w),
+					    "WM_LOCALE_NAME", False),
+				XA_STRING, 8, PropModeReplace,
+				(unsigned char *)locale, strlen(locale));
+	}
+	UNLOCK_PROCESS;
+
+	p = GetClientLeader((Widget)w);
+	if (XtWindow(p))
+	    XChangeProperty(XtDisplay((Widget)w), XtWindow((Widget)w),
+			    XInternAtom(XtDisplay((Widget)w),
+					"WM_CLIENT_LEADER", False),
+			    XA_WINDOW, 32, PropModeReplace,
+			    (unsigned char *)(&(p->core.window)), 1);
+#ifndef XT_NO_SM
+	if (p == (Widget) w) {
+	    for ( ; p->core.parent != NULL; p = p->core.parent);
+	    if (XtIsSubclass(p, sessionShellWidgetClass)) {
+		String sm_client_id =
+		    ((SessionShellWidget)p)->session.session_id;
+		if (sm_client_id != NULL) {
+		    XChangeProperty(XtDisplay((Widget)w), XtWindow((Widget)w),
+				    XInternAtom(XtDisplay((Widget)w),
+						"SM_CLIENT_ID", False),
+				    XA_STRING, 8, PropModeReplace,
+				    (unsigned char *) sm_client_id,
+				    strlen(sm_client_id));
+		}
+	    }
+	}
+#endif /* !XT_NO_SM */
+
+	if (wmshell->wm.window_role)
+	    XChangeProperty(XtDisplay((Widget)w), XtWindow((Widget)w),
+			    XInternAtom(XtDisplay((Widget)w),
+					"WM_WINDOW_ROLE", False),
+			    XA_STRING, 8, PropModeReplace,
+			    (unsigned char *)wmshell->wm.window_role,
+			    strlen(wmshell->wm.window_role));
+}
+
+/* ARGSUSED */
+static void EventHandler(
+	Widget wid,
+	XtPointer closure,	/* unused */
+	XEvent *event,
+        Boolean *continue_to_dispatch) /* unused */
+{
+	register ShellWidget w = (ShellWidget) wid;
+	WMShellWidget wmshell = (WMShellWidget) w;
+	Boolean  sizechanged = FALSE;
+
+	if(w->core.window != event->xany.window) {
+		XtAppErrorMsg(XtWidgetToApplicationContext(wid),
+			"invalidWindow","eventHandler",XtCXtToolkitError,
+                        "Event with wrong window",
+			(String *)NULL, (Cardinal *)NULL);
+		return;
+	}
+
+	switch(event->type) {
+	    case ConfigureNotify:
+	        if (w->core.window != event->xconfigure.window)
+		    return;  /* in case of SubstructureNotify */
+#define NEQ(x)	( w->core.x != event->xconfigure.x )
+		if( NEQ(width) || NEQ(height) || NEQ(border_width) ) {
+			sizechanged = TRUE;
+#undef NEQ
+			w->core.width = event->xconfigure.width;
+			w->core.height = event->xconfigure.height;
+			w->core.border_width = event->xconfigure.border_width;
+		}
+		if (event->xany.send_event /* ICCCM compliant synthetic ev */
+		    /* || w->shell.override_redirect */
+		    || w->shell.client_specified & _XtShellNotReparented)
+	        {
+		    w->core.x = event->xconfigure.x;
+		    w->core.y = event->xconfigure.y;
+		    w->shell.client_specified |= _XtShellPositionValid;
+		}
+		else w->shell.client_specified &= ~_XtShellPositionValid;
+		if (XtIsWMShell(wid) && !wmshell->wm.wait_for_wm) {
+		    /* Consider trusting the wm again */
+		    register struct _OldXSizeHints *hintp
+			= &wmshell->wm.size_hints;
+#define EQ(x) (hintp->x == w->core.x)
+		    if (EQ(x) && EQ(y) && EQ(width) && EQ(height)) {
+			wmshell->wm.wait_for_wm = TRUE;
+		    }
+#undef EQ
+		}
+		break;
+
+	      case ReparentNotify:
+		if (event->xreparent.window == XtWindow(w)) {
+		   if (event->xreparent.parent !=
+		       RootWindowOfScreen(XtScreen(w)))
+		       w->shell.client_specified &=
+			   ~(_XtShellNotReparented | _XtShellPositionValid);
+		   else {
+		       w->core.x = event->xreparent.x;
+		       w->core.y = event->xreparent.y;
+		       w->shell.client_specified |=
+			   (_XtShellNotReparented | _XtShellPositionValid);
+		   }
+	        }
+		return;
+
+              case MapNotify:
+                if (XtIsTopLevelShell(wid)) {
+                    ((TopLevelShellWidget)wid)->topLevel.iconic = FALSE;
+                }
+                return;
+
+	      case UnmapNotify:
+		{
+		    XtPerDisplayInput	pdi;
+		    XtDevice		device;
+		    Widget		p;
+
+                    if (XtIsTopLevelShell(wid))
+                        ((TopLevelShellWidget)wid)->topLevel.iconic = TRUE;
+
+		    pdi = _XtGetPerDisplayInput(event->xunmap.display);
+
+		    device = &pdi->pointer;
+		    if (device->grabType == XtPassiveServerGrab) {
+			p = device->grab.widget;
+			while (p && !(XtIsShell(p)))
+			    p = p->core.parent;
+			if (p == wid)
+			    device->grabType = XtNoServerGrab;
+		    }
+
+		    device = &pdi->keyboard;
+		    if (IsEitherPassiveGrab(device->grabType)) {
+			p = device->grab.widget;
+			while (p && !(XtIsShell(p)))
+			    p = p->core.parent;
+			if (p == wid) {
+			    device->grabType = XtNoServerGrab;
+			    pdi->activatingKey = 0;
+			}
+		    }
+
+		    return;
+		}
+	      default:
+		 return;
+	}
+	{
+	XtWidgetProc resize;
+
+	LOCK_PROCESS;
+	resize = XtClass(wid)->core_class.resize;
+	UNLOCK_PROCESS;
+
+	if (sizechanged && resize) {
+	    CALLGEOTAT(_XtGeoTrace((Widget)w,
+			   "Shell \"%s\" is being resized to %d %d.\n",
+			   XtName(wid), wid->core.width, wid->core.height ));
+	    (*resize)(wid);
+	 }
+	}
+}
+
+static void Destroy(
+	Widget wid)
+{
+	if (XtIsRealized(wid))
+	    XDestroyWindow( XtDisplay(wid), XtWindow(wid) );
+}
+
+static void WMDestroy(
+	Widget wid)
+{
+	WMShellWidget w = (WMShellWidget) wid;
+
+	XtFree((char *) w->wm.title);
+	XtFree((char *) w->wm.window_role);
+}
+
+static void TopLevelDestroy(
+	Widget wid)
+{
+	TopLevelShellWidget w = (TopLevelShellWidget) wid;
+
+	XtFree((char *) w->topLevel.icon_name);
+}
+
+static void ApplicationDestroy(
+    Widget wid)
+{
+    ApplicationShellWidget w = (ApplicationShellWidget) wid;
+    if (w->application.argc > 0)
+	FreeStringArray(w->application.argv);
+}
+
+static void SessionDestroy(
+    Widget wid)
+{
+#ifndef XT_NO_SM
+    SessionShellWidget w = (SessionShellWidget) wid;
+
+    StopManagingSession(w, w->session.connection);
+    XtFree(w->session.session_id);
+    FreeStringArray(w->session.restart_command);
+    FreeStringArray(w->session.clone_command);
+    FreeStringArray(w->session.discard_command);
+    FreeStringArray(w->session.resign_command);
+    FreeStringArray(w->session.shutdown_command);
+    FreeStringArray(w->session.environment);
+    XtFree(w->session.current_dir);
+    XtFree(w->session.program_path);
+#endif /* !XT_NO_SM */
+}
+
+/*
+ * If the Shell has a width and a height which are zero, and as such
+ * suspect, and it has not yet been realized then it will grow to
+ * match the child before parsing the geometry resource.
+ *
+ */
+static void GetGeometry(
+    Widget W, Widget child)
+{
+    register ShellWidget w = (ShellWidget)W;
+    Boolean is_wmshell = XtIsWMShell(W);
+    int x, y, width, height, win_gravity = -1, flag;
+    XSizeHints hints;
+
+    if (child != NULL) {
+	/* we default to our child's size */
+	if (is_wmshell && (w->core.width == 0 || w->core.height == 0))
+	    ((WMShellWidget)W)->wm.size_hints.flags |= PSize;
+	if (w->core.width == 0)	    w->core.width = child->core.width;
+	if (w->core.height == 0)    w->core.height = child->core.height;
+    }
+    if(w->shell.geometry != NULL) {
+	char def_geom[64];
+	x = w->core.x;
+	y = w->core.y;
+	width = w->core.width;
+	height = w->core.height;
+	if (is_wmshell) {
+	    WMShellPart* wm = &((WMShellWidget)w)->wm;
+	    EvaluateSizeHints((WMShellWidget)w);
+	    (void) memmove((char*)&hints, (char*)&wm->size_hints,
+			   sizeof(struct _OldXSizeHints));
+	    hints.win_gravity = wm->win_gravity;
+	    if (wm->size_hints.flags & PBaseSize) {
+		width -= wm->base_width;
+		height -= wm->base_height;
+		hints.base_width = wm->base_width;
+		hints.base_height = wm->base_height;
+	    }
+	    else if (wm->size_hints.flags & PMinSize) {
+		width -= wm->size_hints.min_width;
+		height -= wm->size_hints.min_height;
+	    }
+	    if (wm->size_hints.flags & PResizeInc) {
+		width /= wm->size_hints.width_inc;
+		height /= wm->size_hints.height_inc;
+	    }
+	}
+	else hints.flags = 0;
+
+	sprintf( def_geom, "%dx%d+%d+%d", width, height, x, y );
+	flag = XWMGeometry( XtDisplay(W),
+			    XScreenNumberOfScreen(XtScreen(W)),
+			    w->shell.geometry, def_geom,
+			    (unsigned int)w->core.border_width,
+			    &hints, &x, &y, &width, &height,
+			    &win_gravity
+			   );
+	if (flag) {
+	    if (flag & XValue) w->core.x = (Position)x;
+	    if (flag & YValue) w->core.y = (Position)y;
+	    if (flag & WidthValue) w->core.width = (Dimension)width;
+	    if (flag & HeightValue) w->core.height = (Dimension)height;
+	}
+	else {
+	    String params[2];
+	    Cardinal num_params = 2;
+	    params[0] = XtName(W);
+	    params[1] = w->shell.geometry;
+	    XtAppWarningMsg(XtWidgetToApplicationContext(W),
+       "badGeometry", "shellRealize", XtCXtToolkitError,
+       "Shell widget \"%s\" has an invalid geometry specification: \"%s\"",
+			    params, &num_params);
+	}
+    }
+    else
+	flag = 0;
+
+    if (is_wmshell) {
+	WMShellWidget wmshell = (WMShellWidget) w;
+	if (wmshell->wm.win_gravity == XtUnspecifiedShellInt) {
+	    if (win_gravity != -1)
+		wmshell->wm.win_gravity = win_gravity;
+	    else
+		wmshell->wm.win_gravity = NorthWestGravity;
+	}
+	wmshell->wm.size_hints.flags |= PWinGravity;
+	if ((flag & (XValue|YValue)) == (XValue|YValue))
+	    wmshell->wm.size_hints.flags |= USPosition;
+	if ((flag & (WidthValue|HeightValue)) == (WidthValue|HeightValue))
+	    wmshell->wm.size_hints.flags |= USSize;
+    }
+    w->shell.client_specified |= _XtShellGeometryParsed;
+}
+
+
+static void ChangeManaged(Widget wid)
+{
+    ShellWidget w = (ShellWidget) wid;
+    Widget child = NULL;
+    Cardinal i;
+
+    for (i = 0; i < w->composite.num_children; i++) {
+	if (XtIsManaged(w->composite.children[i])) {
+	    child = w->composite.children[i];
+	    break;		/* there can only be one of them! */
+	}
+    }
+
+    if (!XtIsRealized (wid))	/* then we're about to be realized... */
+	GetGeometry(wid, child);
+
+    if (child != NULL)
+	XtConfigureWidget (child, (Position)0, (Position)0,
+			   w->core.width, w->core.height, (Dimension)0 );
+}
+
+/*
+ * This is gross, I can't wait to see if the change happened so I will ask
+ * the window manager to change my size and do the appropriate X work.
+ * I will then tell the requester that he can.  Care must be taken because
+ * it is possible that some time in the future the request will be
+ * asynchronusly denied and the window reverted to it's old size/shape.
+ */
+
+/*ARGSUSED*/
+static XtGeometryResult GeometryManager(
+	Widget wid,
+	XtWidgetGeometry *request,
+	XtWidgetGeometry *reply)
+{
+	ShellWidget shell = (ShellWidget)(wid->core.parent);
+	XtWidgetGeometry my_request;
+
+	if(shell->shell.allow_shell_resize == FALSE && XtIsRealized(wid))
+		return(XtGeometryNo);
+
+	if (request->request_mode & (CWX | CWY))
+	    return(XtGeometryNo);
+
+	my_request.request_mode = (request->request_mode & XtCWQueryOnly);
+	if (request->request_mode & CWWidth) {
+	    my_request.width = request->width;
+	    my_request.request_mode |= CWWidth;
+	}
+	if (request->request_mode & CWHeight) {
+	    my_request.height = request->height;
+	    my_request.request_mode |= CWHeight;
+	}
+	if (request->request_mode & CWBorderWidth) {
+	    my_request.border_width = request->border_width;
+	    my_request.request_mode |= CWBorderWidth;
+	}
+	if (XtMakeGeometryRequest((Widget)shell, &my_request, NULL)
+		== XtGeometryYes) {
+	    /* assert: if (request->request_mode & CWWidth) then
+	     * 		  shell->core.width == request->width
+	     * assert: if (request->request_mode & CWHeight) then
+	     * 		  shell->core.height == request->height
+	     *
+	     * so, whatever the WM sized us to (if the Shell requested
+	     * only one of the two) is now the correct child size
+	     */
+
+	    if (!(request->request_mode & XtCWQueryOnly)) {
+		wid->core.width = shell->core.width;
+		wid->core.height = shell->core.height;
+		if (request->request_mode & CWBorderWidth) {
+		    wid->core.x = wid->core.y = -request->border_width;
+		}
+	    }
+	    return XtGeometryYes;
+	} else return XtGeometryNo;
+}
+
+typedef struct {
+	Widget  w;
+	unsigned long request_num;
+	Boolean done;
+} QueryStruct;
+
+static Bool isMine(
+	Display *dpy,
+	register XEvent  *event,
+	char *arg)
+{
+	QueryStruct *q = (QueryStruct *) arg;
+	register Widget w = q->w;
+
+	if ( (dpy != XtDisplay(w)) || (event->xany.window != XtWindow(w)) ) {
+	    return FALSE;
+	}
+	if (event->xany.serial >= q->request_num) {
+	    if (event->type == ConfigureNotify) {
+		q->done = TRUE;
+		return TRUE;
+	    }
+	}
+	else if (event->type == ConfigureNotify)
+	    return TRUE;	/* flush old events */
+	if (event->type == ReparentNotify
+		 && event->xreparent.window == XtWindow(w)) {
+	    /* we might get ahead of this event, so just in case someone
+	     * asks for coordinates before this event is dispatched...
+	     */
+	    register ShellWidget s = (ShellWidget)w;
+	    if (event->xreparent.parent != RootWindowOfScreen(XtScreen(w)))
+		s->shell.client_specified &= ~_XtShellNotReparented;
+	    else
+		s->shell.client_specified |= _XtShellNotReparented;
+	}
+	return FALSE;
+}
+
+static Boolean _wait_for_response(
+	ShellWidget	w,
+	XEvent		*event,
+        unsigned long	request_num)
+{
+	XtAppContext app = XtWidgetToApplicationContext((Widget) w);
+	QueryStruct q;
+	unsigned long timeout;
+
+	if (XtIsWMShell((Widget)w))
+	    timeout = ((WMShellWidget)w)->wm.wm_timeout;
+	else
+	    timeout = DEFAULT_WM_TIMEOUT;
+
+	XFlush(XtDisplay(w));
+	q.w = (Widget) w;
+	q.request_num = request_num;
+	q.done = FALSE;
+
+	/*
+	 * look for match event and discard all prior configures
+	 */
+	while (XCheckIfEvent(XtDisplay(w),event,isMine,(char*)&q)) {
+	    if (q.done) return TRUE;
+	}
+
+	while (timeout > 0) {
+	    if (_XtWaitForSomething (app,
+				     FALSE, TRUE, TRUE, TRUE,
+				     TRUE,
+#ifdef XTHREADS
+				     FALSE,
+#endif
+				     &timeout) != -1) {
+		while (XCheckIfEvent(XtDisplay(w),event,isMine,(char*)&q)) {
+		    if (q.done) return TRUE;
+		}
+	    }
+	}
+	return FALSE;
+}
+
+/*ARGSUSED*/
+static XtGeometryResult RootGeometryManager(
+    Widget gw,
+    XtWidgetGeometry *request, XtWidgetGeometry *reply)
+{
+    register ShellWidget w = (ShellWidget)gw;
+    XWindowChanges values;
+    unsigned int mask = request->request_mode;
+    XEvent event;
+    Boolean wm;
+    register struct _OldXSizeHints *hintp = NULL;
+    int oldx, oldy, oldwidth, oldheight, oldborder_width;
+    unsigned long request_num;
+
+    CALLGEOTAT(_XtGeoTab(1));
+
+    if (XtIsWMShell(gw)) {
+	wm = True;
+	hintp = &((WMShellWidget)w)->wm.size_hints;
+	/* for draft-ICCCM wm's, need to make sure hints reflect
+	   (current) reality so client can move and size separately. */
+  	hintp->x = w->core.x;
+  	hintp->y = w->core.y;
+  	hintp->width = w->core.width;
+   	hintp->height = w->core.height;
+    } else
+	wm = False;
+
+    oldx = w->core.x;
+    oldy = w->core.y;
+    oldwidth = w->core.width;
+    oldheight = w->core.height;
+    oldborder_width = w->core.border_width;
+
+#define PutBackGeometry() \
+	{ w->core.x = oldx; \
+	  w->core.y = oldy; \
+	  w->core.width = oldwidth; \
+	  w->core.height = oldheight; \
+	  w->core.border_width = oldborder_width; }
+
+    if (mask & CWX) {
+	    if (w->core.x == request->x) mask &= ~CWX;
+	    else {
+		w->core.x = values.x = request->x;
+		if (wm) {
+		    hintp->flags &= ~USPosition;
+		    hintp->flags |= PPosition;
+		    hintp->x = values.x;
+		}
+	    }
+    }
+    if (mask & CWY) {
+	    if (w->core.y == request->y) mask &= ~CWY;
+	    else {
+		w->core.y = values.y = request->y;
+		if (wm) {
+		    hintp->flags &= ~USPosition;
+		    hintp->flags |= PPosition;
+		    hintp->y = values.y;
+		}
+	    }
+    }
+    if (mask & CWBorderWidth) {
+	    if (w->core.border_width == request->border_width) {
+		    mask &= ~CWBorderWidth;
+	    } else
+		w->core.border_width =
+		    values.border_width =
+			request->border_width;
+    }
+    if (mask & CWWidth) {
+	    if (w->core.width == request->width) mask &= ~CWWidth;
+	    else {
+		w->core.width = values.width = request->width;
+		if (wm) {
+		    hintp->flags &= ~USSize;
+		    hintp->flags |= PSize;
+		    hintp->width = values.width;
+		}
+	    }
+    }
+    if (mask & CWHeight) {
+	    if (w->core.height == request->height) mask &= ~CWHeight;
+	    else {
+		w->core.height = values.height = request->height;
+		if (wm) {
+		    hintp->flags &= ~USSize;
+		    hintp->flags |= PSize;
+		    hintp->height = values.height;
+		}
+	    }
+    }
+    if (mask & CWStackMode) {
+	values.stack_mode = request->stack_mode;
+	if (mask & CWSibling)
+	    values.sibling = XtWindow(request->sibling);
+    }
+
+    if (!XtIsRealized((Widget)w)) {
+	CALLGEOTAT(_XtGeoTrace((Widget)w,
+		      "Shell \"%s\" is not realized, return XtGeometryYes.\n",
+		       XtName((Widget)w)));
+    	CALLGEOTAT(_XtGeoTab(-1));
+	return XtGeometryYes;
+    }
+
+    request_num = NextRequest(XtDisplay(w));
+
+    CALLGEOTAT(_XtGeoTrace((Widget)w,"XConfiguring the Shell X window :\n"));
+    CALLGEOTAT(_XtGeoTab(1));
+#ifdef XT_GEO_TATTLER
+    if (mask & CWX) { CALLGEOTAT(_XtGeoTrace((Widget)w,"x = %d\n",values.x));}
+    if (mask & CWY) { CALLGEOTAT(_XtGeoTrace((Widget)w,"y = %d\n",values.y));}
+    if (mask & CWWidth) { CALLGEOTAT(_XtGeoTrace((Widget)w,
+					       "width = %d\n",values.width));}
+    if (mask & CWHeight) { CALLGEOTAT(_XtGeoTrace((Widget)w,
+					    "height = %d\n",values.height));}
+    if (mask & CWBorderWidth) { CALLGEOTAT(_XtGeoTrace((Widget)w,
+				  "border_width = %d\n",values.border_width));}
+#endif
+    CALLGEOTAT(_XtGeoTab(-1));
+
+    XConfigureWindow(XtDisplay((Widget)w), XtWindow((Widget)w), mask,&values);
+
+    if (wm && !w->shell.override_redirect
+	&& mask & (CWX | CWY | CWWidth | CWHeight | CWBorderWidth)) {
+	_SetWMSizeHints((WMShellWidget)w);
+    }
+
+    if (w->shell.override_redirect) {
+	CALLGEOTAT(_XtGeoTrace((Widget)w,"Shell \"%s\" is override redirect, return XtGeometryYes.\n", XtName((Widget)w)));
+    	CALLGEOTAT(_XtGeoTab(-1));
+	return XtGeometryYes;
+    }
+
+
+    /* If no non-stacking bits are set, there's no way to tell whether
+       or not this worked, so assume it did */
+
+    if (!(mask & ~(CWStackMode | CWSibling))) return XtGeometryYes;
+
+    if (wm && ((WMShellWidget)w)->wm.wait_for_wm == FALSE) {
+	    /* the window manager is sick
+	     * so I will do the work and
+	     * say no so if a new WM starts up,
+	     * or the current one recovers
+	     * my size requests will be visible
+	     */
+	CALLGEOTAT(_XtGeoTrace((Widget)w,"Shell \"%s\" has wait_for_wm == FALSE, return XtGeometryNo.\n",
+		       XtName((Widget)w)));
+    	CALLGEOTAT(_XtGeoTab(-1));
+
+	PutBackGeometry();
+	return XtGeometryNo;
+    }
+
+    if (_wait_for_response(w, &event, request_num)) {
+	/* got an event */
+	if (event.type == ConfigureNotify) {
+
+#define NEQ(x, msk) ((mask & msk) && (values.x != event.xconfigure.x))
+	    if (NEQ(x, CWX) ||
+		NEQ(y, CWY) ||
+		NEQ(width, CWWidth) ||
+		NEQ(height, CWHeight) ||
+		NEQ(border_width, CWBorderWidth)) {
+#ifdef XT_GEO_TATTLER
+		if (NEQ(x, CWX)) {
+		    CALLGEOTAT(_XtGeoTrace((Widget)w,
+					   "received Configure X %d\n",
+					   event.xconfigure.x));
+		}
+		if (NEQ(y, CWY)) {
+		    CALLGEOTAT(_XtGeoTrace((Widget)w,
+					   "received Configure Y %d\n",
+					   event.xconfigure.y));
+		}
+		if (NEQ(width, CWWidth)) {
+		    CALLGEOTAT(_XtGeoTrace((Widget)w,
+					   "received Configure Width %d\n",
+					   event.xconfigure.width));
+		}
+		if (NEQ(height, CWHeight)) {
+		    CALLGEOTAT(_XtGeoTrace((Widget)w,
+					   "received Configure Height %d\n",
+					   event.xconfigure.height));
+		}
+		if (NEQ(border_width, CWBorderWidth)) {
+		    CALLGEOTAT(_XtGeoTrace((Widget)w,
+				        "received Configure BorderWidth %d\n",
+					event.xconfigure.border_width));
+		}
+#endif
+#undef NEQ
+		XPutBackEvent(XtDisplay(w), &event);
+		PutBackGeometry();
+		/*
+		 * We just potentially re-ordered the event queue
+		 * w.r.t. ConfigureNotifies with some trepidation.
+		 * But this is probably a Good Thing because we
+		 * will know the new true state of the world sooner
+		 * this way.
+		 */
+		CALLGEOTAT(_XtGeoTrace((Widget)w,
+			   "ConfigureNotify failed, return XtGeometryNo.\n"));
+		CALLGEOTAT(_XtGeoTab(-1));
+
+		return XtGeometryNo;
+	    }
+	    else {
+		w->core.width = event.xconfigure.width;
+		w->core.height = event.xconfigure.height;
+		w->core.border_width = event.xconfigure.border_width;
+		if (event.xany.send_event || /* ICCCM compliant synth */
+		    w->shell.client_specified & _XtShellNotReparented) {
+
+		    w->core.x = event.xconfigure.x;
+		    w->core.y = event.xconfigure.y;
+		    w->shell.client_specified |= _XtShellPositionValid;
+		}
+		else w->shell.client_specified &= ~_XtShellPositionValid;
+		CALLGEOTAT(_XtGeoTrace((Widget)w,
+			 "ConfigureNotify succeed, return XtGeometryYes.\n"));
+		CALLGEOTAT(_XtGeoTab(-1));
+		return XtGeometryYes;
+	    }
+	} else if (!wm) {
+	    PutBackGeometry();
+	    CALLGEOTAT(_XtGeoTrace((Widget)w,
+				   "Not wm, return XtGeometryNo.\n"));
+	    CALLGEOTAT(_XtGeoTab(-1));
+	    return XtGeometryNo;
+	} else XtAppWarningMsg(XtWidgetToApplicationContext((Widget)w),
+			       "internalError", "shell", XtCXtToolkitError,
+			       "Shell's window manager interaction is broken",
+			       (String *)NULL, (Cardinal *)NULL);
+    } else if (wm) { /* no event */
+	((WMShellWidget)w)->wm.wait_for_wm = FALSE; /* timed out; must be broken */
+    }
+    PutBackGeometry();
+#undef PutBackGeometry
+    CALLGEOTAT(_XtGeoTrace((Widget)w,
+			   "Timeout passed?, return XtGeometryNo.\n"));
+    CALLGEOTAT(_XtGeoTab(-1));
+    return XtGeometryNo;
+		}
+
+/* ARGSUSED */
+static Boolean SetValues(
+	Widget old, Widget ref, Widget new,
+	ArgList args,
+	Cardinal *num_args)
+{
+	ShellWidget nw = (ShellWidget) new;
+	ShellWidget ow = (ShellWidget) old;
+	Mask mask = 0;
+	XSetWindowAttributes attr;
+
+	if (!XtIsRealized(new))
+	    return False;
+
+	if (ow->shell.save_under != nw->shell.save_under) {
+	    mask = CWSaveUnder;
+	    attr.save_under = nw->shell.save_under;
+	}
+
+	if (ow->shell.override_redirect != nw->shell.override_redirect) {
+	    mask |= CWOverrideRedirect;
+	    attr.override_redirect = nw->shell.override_redirect;
+	}
+
+	if (mask) {
+	    XChangeWindowAttributes(XtDisplay(new),XtWindow(new), mask, &attr);
+	    if ((mask & CWOverrideRedirect) && !nw->shell.override_redirect)
+		_popup_set_prop(nw);
+	}
+
+	if (! (ow->shell.client_specified & _XtShellPositionValid)) {
+	    Cardinal n;
+
+	    for (n = *num_args; n; n--, args++) {
+		if (strcmp(XtNx, args->name) == 0) {
+		    _XtShellGetCoordinates((Widget)ow, &ow->core.x,
+							&ow->core.y);
+		} else if (strcmp(XtNy, args->name) == 0) {
+		    _XtShellGetCoordinates((Widget)ow, &ow->core.x,
+							&ow->core.y);
+		}
+	    }
+	}
+	return FALSE;
+}
+
+/* ARGSUSED */
+static Boolean WMSetValues(
+	Widget old, Widget ref, Widget new,
+	ArgList args,		/* unused */
+	Cardinal *num_args)	/* unused */
+{
+	WMShellWidget nwmshell = (WMShellWidget) new;
+	WMShellWidget owmshell = (WMShellWidget) old;
+	Boolean set_prop
+	    = XtIsRealized(new) && !nwmshell->shell.override_redirect;
+	Boolean title_changed;
+
+	EvaluateSizeHints(nwmshell);
+
+#define NEQ(f) (nwmshell->wm.size_hints.f != owmshell->wm.size_hints.f)
+
+	if (set_prop
+	    && (NEQ(flags) || NEQ(min_width) || NEQ(min_height)
+		|| NEQ(max_width) || NEQ(max_height)
+		|| NEQ(width_inc) || NEQ(height_inc)
+		|| NEQ(min_aspect.x) || NEQ(min_aspect.y)
+		|| NEQ(max_aspect.x) || NEQ(max_aspect.y)
+#undef NEQ
+#define NEQ(f) (nwmshell->wm.f != owmshell->wm.f)
+
+		|| NEQ(base_width) || NEQ(base_height) || NEQ(win_gravity))) {
+	    _SetWMSizeHints(nwmshell);
+	}
+#undef NEQ
+
+	if (nwmshell->wm.title != owmshell->wm.title) {
+	    XtFree(owmshell->wm.title);
+	    if (! nwmshell->wm.title) nwmshell->wm.title = "";
+	    nwmshell->wm.title = XtNewString(nwmshell->wm.title);
+	    title_changed = True;
+	} else
+	    title_changed = False;
+
+	if (set_prop
+	    && (title_changed ||
+		nwmshell->wm.title_encoding != owmshell->wm.title_encoding)) {
+
+	    XTextProperty title;
+	    Boolean copied = False;
+
+            if (nwmshell->wm.title_encoding == None &&
+		XmbTextListToTextProperty(XtDisplay(new),
+					  (char**)&nwmshell->wm.title,
+					  1, XStdICCTextStyle,
+					  &title) >= Success) {
+		copied = True;
+	    } else {
+		title.value = (unsigned char*)nwmshell->wm.title;
+		title.encoding = nwmshell->wm.title_encoding ?
+		    nwmshell->wm.title_encoding : XA_STRING;
+		title.format = 8;
+		title.nitems = strlen(nwmshell->wm.title);
+	    }
+	    XSetWMName(XtDisplay(new), XtWindow(new), &title);
+	    if (copied)
+		XFree((XPointer)title.value);
+	}
+
+	EvaluateWMHints(nwmshell);
+
+#define NEQ(f)	(nwmshell->wm.wm_hints.f != owmshell->wm.wm_hints.f)
+
+	if (set_prop
+	    && (NEQ(flags) || NEQ(input) || NEQ(initial_state)
+		|| NEQ(icon_x) || NEQ(icon_y)
+		|| NEQ(icon_pixmap) || NEQ(icon_mask) || NEQ(icon_window)
+		|| NEQ(window_group))) {
+
+	    XSetWMHints(XtDisplay(new), XtWindow(new), &nwmshell->wm.wm_hints);
+	}
+#undef NEQ
+
+ 	if (XtIsRealized(new) &&
+	    nwmshell->wm.transient != owmshell->wm.transient) {
+ 	    if (nwmshell->wm.transient) {
+		if (!XtIsTransientShell(new) &&
+		    !nwmshell->shell.override_redirect &&
+		    nwmshell->wm.wm_hints.window_group !=
+		       XtUnspecifiedWindowGroup)
+		    XSetTransientForHint(XtDisplay(new), XtWindow(new),
+					 nwmshell->wm.wm_hints.window_group);
+	    }
+ 	    else XDeleteProperty(XtDisplay(new), XtWindow(new),
+ 				 XA_WM_TRANSIENT_FOR);
+ 	}
+
+	if (nwmshell->wm.client_leader != owmshell->wm.client_leader
+	    && XtWindow(new) && !nwmshell->shell.override_redirect) {
+	    Widget leader = GetClientLeader(new);
+	    if (XtWindow(leader))
+		XChangeProperty(XtDisplay(new), XtWindow(new),
+				XInternAtom(XtDisplay(new),
+					    "WM_CLIENT_LEADER", False),
+				XA_WINDOW, 32, PropModeReplace,
+				(unsigned char *) &(leader->core.window), 1);
+	}
+
+	if (nwmshell->wm.window_role != owmshell->wm.window_role) {
+	    XtFree(owmshell->wm.window_role);
+	    if (set_prop && nwmshell->wm.window_role) {
+		XChangeProperty(XtDisplay(new), XtWindow(new),
+				XInternAtom(XtDisplay(new), "WM_WINDOW_ROLE",
+					    False),
+				XA_STRING, 8, PropModeReplace,
+				(unsigned char *)nwmshell->wm.window_role,
+				strlen(nwmshell->wm.window_role));
+	    } else if (XtIsRealized(new) && ! nwmshell->wm.window_role) {
+		XDeleteProperty(XtDisplay(new), XtWindow(new),
+				XInternAtom(XtDisplay(new), "WM_WINDOW_ROLE",
+					    False));
+	    }
+	}
+
+	return FALSE;
+}
+
+/*ARGSUSED*/
+static Boolean TransientSetValues(
+     Widget oldW, Widget refW, Widget newW,
+     ArgList args,		/* unused */
+     Cardinal *num_args)	/* unused */
+{
+    TransientShellWidget old = (TransientShellWidget)oldW;
+    TransientShellWidget new = (TransientShellWidget)newW;
+
+    if (XtIsRealized(newW)
+	&& ((new->wm.transient && !old->wm.transient)
+	    || ((new->transient.transient_for != old->transient.transient_for)
+		|| (new->transient.transient_for == NULL
+		    && (new->wm.wm_hints.window_group
+			!= old->wm.wm_hints.window_group))))) {
+
+	_SetTransientForHint(new, True);
+    }
+    return False;
+}
+
+
+/* ARGSUSED */
+static Boolean TopLevelSetValues(
+     Widget oldW, Widget refW, Widget newW,
+     ArgList args,		/* unused */
+     Cardinal *num_args)	/* unused */
+{
+    TopLevelShellWidget old = (TopLevelShellWidget)oldW;
+    TopLevelShellWidget new = (TopLevelShellWidget)newW;
+    Boolean name_changed;
+
+    if (old->topLevel.icon_name != new->topLevel.icon_name) {
+	XtFree((XtPointer)old->topLevel.icon_name);
+	if (! new->topLevel.icon_name) new->topLevel.icon_name = "";
+	new->topLevel.icon_name = XtNewString(new->topLevel.icon_name);
+	name_changed = True;
+    } else
+	name_changed = False;
+
+    if (XtIsRealized(newW)) {
+	if (new->topLevel.iconic != old->topLevel.iconic) {
+	    if (new->topLevel.iconic)
+		XIconifyWindow(XtDisplay(newW),
+			       XtWindow(newW),
+			       XScreenNumberOfScreen(XtScreen(newW))
+			       );
+	    else {
+		Boolean map = new->shell.popped_up;
+		XtPopup(newW, XtGrabNone);
+		if (map) XMapWindow(XtDisplay(newW), XtWindow(newW));
+	    }
+	}
+
+	if (!new->shell.override_redirect &&
+	    (name_changed ||
+	     (old->topLevel.icon_name_encoding
+	      != new->topLevel.icon_name_encoding))) {
+
+	    XTextProperty icon_name;
+	    Boolean copied = False;
+
+            if (new->topLevel.icon_name_encoding == None &&
+		XmbTextListToTextProperty(XtDisplay(newW),
+					  (char**) &new->topLevel.icon_name,
+					  1, XStdICCTextStyle,
+					  &icon_name) >= Success) {
+		copied = True;
+	    } else {
+		icon_name.value = (unsigned char *)new->topLevel.icon_name;
+		icon_name.encoding = new->topLevel.icon_name_encoding ?
+		    new->topLevel.icon_name_encoding : XA_STRING;
+		icon_name.format = 8;
+		icon_name.nitems = strlen((char *)icon_name.value);
+	    }
+	    XSetWMIconName(XtDisplay(newW), XtWindow(newW), &icon_name);
+	    if (copied)
+		XFree((XPointer)icon_name.value);
+	}
+    }
+    return False;
+}
+
+static String * NewArgv(
+    int count,
+    String *str)  /* do not assume it's terminated by a NULL element */
+{
+    Cardinal nbytes = 0;
+    Cardinal num = 0;
+    String *newarray, *new;
+    String *strarray = str;
+    String sptr;
+
+    if (count <= 0 || !str) return NULL;
+
+    for (num = count; num--; str++) {
+	nbytes += strlen(*str);
+	nbytes++;
+    }
+    num = (count+1) * sizeof(String);
+    new = newarray = (String *) __XtMalloc(num + nbytes);
+    sptr = ((char *) new) + num;
+
+    for (str = strarray; count--; str++) {
+	*new = sptr;
+	strcpy(*new, *str);
+	new++;
+	sptr = strchr(sptr, '\0');
+	sptr++;
+    }
+    *new = NULL;
+    return newarray;
+}
+
+
+/*ARGSUSED*/
+static Boolean ApplicationSetValues(
+    Widget current, Widget request, Widget new,
+    ArgList args,
+    Cardinal *num_args)
+{
+    ApplicationShellWidget nw = (ApplicationShellWidget) new;
+    ApplicationShellWidget cw = (ApplicationShellWidget) current;
+
+    if (cw->application.argc != nw->application.argc ||
+	cw->application.argv != nw->application.argv) {
+
+	if (nw->application.argc > 0)
+	    nw->application.argv = NewArgv(nw->application.argc,
+					   nw->application.argv);
+	if (cw->application.argc > 0)
+	    FreeStringArray(cw->application.argv);
+
+	if (XtIsRealized(new) && !nw->shell.override_redirect) {
+	    if (nw->application.argc >= 0 && nw->application.argv)
+		XSetCommand(XtDisplay(new), XtWindow(new),
+			    nw->application.argv, nw->application.argc);
+	    else
+		XDeleteProperty(XtDisplay(new), XtWindow(new), XA_WM_COMMAND);
+	}
+    }
+    return False;
+}
+
+/*ARGSUSED*/
+static Boolean SessionSetValues(
+    Widget current, Widget request, Widget new,
+    ArgList args,
+    Cardinal *num_args)
+{
+#ifndef XT_NO_SM
+    SessionShellWidget nw = (SessionShellWidget) new;
+    SessionShellWidget cw = (SessionShellWidget) current;
+    unsigned long set_mask = 0UL;
+    unsigned long unset_mask = 0UL;
+    Boolean initialize = False;
+
+    if (cw->session.session_id != nw->session.session_id) {
+	nw->session.session_id = XtNewString(nw->session.session_id);
+	XtFree(cw->session.session_id);
+    }
+
+    if (cw->session.clone_command != nw->session.clone_command) {
+	if (nw->session.clone_command) {
+	    nw->session.clone_command =
+		NewStringArray(nw->session.clone_command);
+	    set_mask |= XtCloneCommandMask;
+	} else unset_mask |= XtCloneCommandMask;
+	FreeStringArray(cw->session.clone_command);
+    }
+
+    if (cw->session.current_dir != nw->session.current_dir) {
+	if (nw->session.current_dir) {
+	    nw->session.current_dir =
+		XtNewString(nw->session.current_dir);
+	    set_mask |= XtCurrentDirectoryMask;
+	} else unset_mask |= XtCurrentDirectoryMask;
+	XtFree((char *) cw->session.current_dir);
+    }
+
+    if (cw->session.discard_command != nw->session.discard_command) {
+	if (nw->session.discard_command) {
+	    nw->session.discard_command =
+		NewStringArray(nw->session.discard_command);
+	    set_mask |=  XtDiscardCommandMask;
+	} else unset_mask |= XtDiscardCommandMask;
+	FreeStringArray(cw->session.discard_command);
+    }
+
+    if (cw->session.environment != nw->session.environment) {
+	if (nw->session.environment) {
+	    nw->session.environment =
+		NewStringArray(nw->session.environment);
+	    set_mask |= XtEnvironmentMask;
+	} else unset_mask |= XtEnvironmentMask;
+	FreeStringArray(cw->session.environment);
+    }
+
+    if (cw->session.program_path != nw->session.program_path) {
+	if (nw->session.program_path) {
+	    nw->session.program_path =
+		XtNewString(nw->session.program_path);
+	    set_mask |= XtProgramMask;
+	} else unset_mask |= XtProgramMask;
+	XtFree((char *) cw->session.program_path);
+    }
+
+    if (cw->session.resign_command != nw->session.resign_command) {
+	if (nw->session.resign_command) {
+	    nw->session.resign_command =
+		NewStringArray(nw->session.resign_command);
+	    set_mask |= XtResignCommandMask;
+	} else set_mask |= XtResignCommandMask;
+	FreeStringArray(cw->session.resign_command);
+    }
+
+    if (cw->session.restart_command != nw->session.restart_command) {
+	if (nw->session.restart_command) {
+	    nw->session.restart_command =
+		NewStringArray(nw->session.restart_command);
+	    set_mask |= XtRestartCommandMask;
+	} else unset_mask |= XtRestartCommandMask;
+	FreeStringArray(cw->session.restart_command);
+    }
+
+    if (cw->session.restart_style != nw->session.restart_style)
+	set_mask |= XtRestartStyleHintMask;
+
+    if (cw->session.shutdown_command != nw->session.shutdown_command) {
+	if (nw->session.shutdown_command) {
+	    nw->session.shutdown_command =
+		NewStringArray(nw->session.shutdown_command);
+	    set_mask |= XtShutdownCommandMask;
+	} else unset_mask |= XtShutdownCommandMask;
+	FreeStringArray(cw->session.shutdown_command);
+    }
+
+    if ((!cw->session.join_session && nw->session.join_session) ||
+	(!cw->session.connection && nw->session.connection)) {
+	JoinSession(nw);
+	initialize = True;
+    }
+
+    if (nw->session.connection && (set_mask || unset_mask || initialize))
+	SetSessionProperties((SessionShellWidget) new, initialize, set_mask, unset_mask);
+
+    if ((cw->session.join_session && !nw->session.join_session) ||
+	(cw->session.connection && !nw->session.connection))
+	StopManagingSession(nw, nw->session.connection);
+#endif /* !XT_NO_SM */
+
+    if (cw->wm.client_leader != nw->wm.client_leader ||
+	cw->session.session_id != nw->session.session_id) {
+	Widget leader;
+	if (cw->session.session_id) {
+	    leader = GetClientLeader(current);
+	    if (XtWindow(leader))
+		XDeleteProperty(XtDisplay(leader), XtWindow(leader),
+				XInternAtom(XtDisplay(leader), "SM_CLIENT_ID",
+					    False));
+	}
+	if (nw->session.session_id) {
+	    leader = GetClientLeader(new);
+	    if (XtWindow(leader))
+		XChangeProperty(XtDisplay(leader), XtWindow(leader),
+				XInternAtom(XtDisplay(leader), "SM_CLIENT_ID",
+					    False),
+				XA_STRING, 8, PropModeReplace,
+				(unsigned char *) nw->session.session_id,
+				strlen(nw->session.session_id));
+	}
+    }
+    return False;
+}
+
+void _XtShellGetCoordinates(
+    Widget widget,
+    Position* x,
+    Position* y)
+{
+    ShellWidget w = (ShellWidget)widget;
+    if (XtIsRealized(widget) &&
+	!(w->shell.client_specified & _XtShellPositionValid)) {
+	int tmpx, tmpy;
+	Window tmpchild;
+	(void) XTranslateCoordinates(XtDisplay(w), XtWindow(w),
+				     RootWindowOfScreen(XtScreen(w)),
+				     (int) -w->core.border_width,
+				     (int) -w->core.border_width,
+				     &tmpx, &tmpy, &tmpchild);
+	w->core.x = tmpx;
+	w->core.y = tmpy;
+	w->shell.client_specified |= _XtShellPositionValid;
+    }
+    *x = w->core.x;
+    *y = w->core.y;
+}
+
+static void GetValuesHook(
+    Widget	widget,
+    ArgList	args,
+    Cardinal*	num_args)
+{
+    ShellWidget w = (ShellWidget) widget;
+
+    /* x and y resource values may be invalid after a shell resize */
+    if (XtIsRealized(widget) &&
+	!(w->shell.client_specified & _XtShellPositionValid)) {
+	Cardinal	n;
+	Position	x, y;
+
+	for (n = *num_args; n; n--, args++) {
+	    if (strcmp(XtNx, args->name) == 0) {
+		_XtShellGetCoordinates(widget, &x, &y);
+		_XtCopyToArg((char *) &x, &args->value, sizeof(Position));
+	    } else if (strcmp(XtNy, args->name) == 0) {
+		_XtShellGetCoordinates(widget, &x, &y);
+		_XtCopyToArg((char *) &y, &args->value, sizeof(Position));
+	    }
+	}
+    }
+}
+
+static void ApplicationShellInsertChild(
+    Widget widget)
+{
+    if (! XtIsWidget(widget) && XtIsRectObj(widget)) {
+	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+	       "invalidClass", "applicationShellInsertChild", XtCXtToolkitError,
+	       "ApplicationShell does not accept RectObj children; ignored",
+	       (String*)NULL, (Cardinal*)NULL);
+    }
+    else {
+	XtWidgetProc insert_child;
+
+	LOCK_PROCESS;
+	insert_child =
+	    ((CompositeWidgetClass)applicationShellClassRec.core_class.
+	   superclass)->composite_class.insert_child;
+	UNLOCK_PROCESS;
+	(*insert_child) (widget);
+    }
+}
+
+/**************************************************************************
+
+  Session Protocol Participation
+
+ *************************************************************************/
+
+#define XtSessionCheckpoint	0
+#define XtSessionInteract	1
+
+static void CallSaveCallbacks(SessionShellWidget );
+static String *EditCommand(String, String *, String *);
+static Boolean ExamineToken(XtPointer);
+static void GetIceEvent(XtPointer, int *, XtInputId *);
+static XtCheckpointToken GetToken(Widget, int);
+static void XtCallCancelCallbacks(SmcConn, SmPointer);
+static void XtCallDieCallbacks(SmcConn, SmPointer);
+static void XtCallSaveCallbacks(SmcConn, SmPointer, int, Bool, int, Bool);
+static void XtCallSaveCompleteCallbacks(SmcConn, SmPointer);
+
+#ifndef XT_NO_SM
+static void StopManagingSession(
+    SessionShellWidget w,
+    SmcConn connection) /* connection to close, if any */
+{
+    if (connection)
+	SmcCloseConnection(connection, 0, NULL);
+
+    if (w->session.input_id) {
+	XtRemoveInput(w->session.input_id);
+	w->session.input_id = 0;
+    }
+    w->session.connection = NULL;
+}
+
+#define XT_MSG_LENGTH 256
+static void JoinSession(
+    SessionShellWidget w)
+{
+    IceConn ice_conn;
+    SmcCallbacks smcb;
+    char * sm_client_id;
+    unsigned long mask;
+    static char context;  /* used to guarantee the connection isn't shared */
+
+    smcb.save_yourself.callback = XtCallSaveCallbacks;
+    smcb.die.callback = XtCallDieCallbacks;
+    smcb.save_complete.callback = XtCallSaveCompleteCallbacks;
+    smcb.shutdown_cancelled.callback = XtCallCancelCallbacks;
+    smcb.save_yourself.client_data = smcb.die.client_data =
+	smcb.save_complete.client_data =
+	    smcb.shutdown_cancelled.client_data = (SmPointer) w;
+    mask = SmcSaveYourselfProcMask | SmcDieProcMask |
+	SmcSaveCompleteProcMask | SmcShutdownCancelledProcMask;
+
+    if (w->session.connection) {
+	SmcModifyCallbacks(w->session.connection, mask, &smcb);
+	sm_client_id = SmcClientID(w->session.connection);
+    } else if (getenv("SESSION_MANAGER")) {
+	char error_msg[XT_MSG_LENGTH];
+	error_msg[0] = '\0';
+	w->session.connection =
+	    SmcOpenConnection(NULL, &context, SmProtoMajor, SmProtoMinor,
+			      mask, &smcb, w->session.session_id,
+			      &sm_client_id, XT_MSG_LENGTH, error_msg);
+	if (error_msg[0]) {
+	    String params[1];
+	    Cardinal num_params = 1;
+	    params[0] = error_msg;
+	    XtAppWarningMsg(XtWidgetToApplicationContext((Widget) w),
+			    "sessionManagement", "SmcOpenConnection",
+			    XtCXtToolkitError,
+			    "Tried to connect to session manager, %s",
+			    params, &num_params);
+	}
+    }
+
+    if (w->session.connection) {
+	if (w->session.session_id == NULL
+	    || (strcmp(w->session.session_id, sm_client_id) != 0)) {
+	    XtFree(w->session.session_id);
+	    w->session.session_id = XtNewString(sm_client_id);
+	}
+	free(sm_client_id);
+	ice_conn = SmcGetIceConnection(w->session.connection);
+	w->session.input_id =
+	    XtAppAddInput(XtWidgetToApplicationContext((Widget)w),
+			  IceConnectionNumber(ice_conn),
+			  (XtPointer) XtInputReadMask,
+			  GetIceEvent, (XtPointer) w);
+
+	w->session.restart_command =
+	    EditCommand(w->session.session_id, w->session.restart_command,
+			w->application.argv);
+
+	if (! w->session.clone_command) w->session.clone_command =
+	    EditCommand(NULL, NULL, w->session.restart_command);
+
+	if (! w->session.program_path)
+	    w->session.program_path = w->session.restart_command
+		? XtNewString(w->session.restart_command[0]) : NULL;
+    }
+}
+#undef XT_MSG_LENGTH
+
+#endif /* !XT_NO_SM */
+
+static String * NewStringArray(String *str)
+{
+    Cardinal nbytes = 0;
+    Cardinal num = 0;
+    String *newarray, *new;
+    String *strarray = str;
+    String sptr;
+
+    if (!str) return NULL;
+
+    for (num = 0; *str; num++, str++) {
+	nbytes += strlen(*str);
+	nbytes++;
+    }
+    num = (num + 1) * sizeof(String);
+    new = newarray = (String *) __XtMalloc(num + nbytes);
+    sptr = ((char *) new) + num;
+
+    for (str = strarray; *str; str++) {
+	*new = sptr;
+	strcpy(*new, *str);
+	new++;
+	sptr = strchr(sptr, '\0');
+	sptr++;
+    }
+    *new = NULL;
+    return newarray;
+}
+
+static void FreeStringArray(String *str)
+{
+    if (str)
+	XtFree((char *) str);
+}
+
+
+#ifndef XT_NO_SM
+static SmProp * CardPack(
+    char *name,
+    XtPointer closure)
+{
+    unsigned char *prop = (unsigned char *) closure;
+    SmProp *p;
+
+    p = (SmProp *) __XtMalloc(sizeof(SmProp) + sizeof(SmPropValue));
+    p->vals = (SmPropValue *) (((char *) p) + sizeof(SmProp));
+    p->num_vals = 1;
+    p->type = SmCARD8;
+    p->name = name;
+    p->vals->length = 1;
+    p->vals->value = (SmPointer) prop;
+    return p;
+}
+
+static SmProp * ArrayPack(char *name, XtPointer closure)
+{
+    String prop = *(String *) closure;
+    SmProp *p;
+
+    p = (SmProp *) __XtMalloc(sizeof(SmProp) + sizeof(SmPropValue));
+    p->vals = (SmPropValue *) (((char *) p) + sizeof(SmProp));
+    p->num_vals = 1;
+    p->type = SmARRAY8;
+    p->name = name;
+    p->vals->length = strlen(prop) + 1;
+    p->vals->value = prop;
+    return p;
+}
+
+static SmProp * ListPack(
+    char *name,
+    XtPointer closure)
+{
+    String *prop = *(String **) closure;
+    SmProp *p;
+    String *ptr;
+    SmPropValue *vals;
+    int n = 0;
+
+    for (ptr = prop; *ptr; ptr++)
+	n++;
+    p = (SmProp*) __XtMalloc(sizeof(SmProp) + (Cardinal)(n*sizeof(SmPropValue)));
+    p->vals = (SmPropValue *) (((char *) p) + sizeof(SmProp));
+    p->num_vals = n;
+    p->type = SmLISTofARRAY8;
+    p->name = name;
+    for (ptr = prop, vals = p->vals; *ptr; ptr++, vals++) {
+	vals->length = strlen(*ptr) + 1;
+	vals->value = *ptr;
+    }
+    return p;
+}
+
+static void FreePacks(
+    SmProp **props,
+    int num_props)
+{
+    while (--num_props >= 0)
+	XtFree((char *) props[num_props]);
+}
+
+typedef SmProp* (*PackProc)(char *, XtPointer);
+
+typedef struct PropertyRec {
+    char *	name;
+    int		offset;
+    PackProc	proc;
+} PropertyRec, *PropertyTable;
+
+#define Offset(x) (XtOffsetOf(SessionShellRec, x))
+static PropertyRec propertyTable[] = {
+  {SmCloneCommand,     Offset(session.clone_command),    ListPack},
+  {SmCurrentDirectory, Offset(session.current_dir),      ArrayPack},
+  {SmDiscardCommand,   Offset(session.discard_command),  ListPack},
+  {SmEnvironment,      Offset(session.environment),      ListPack},
+  {SmProgram,          Offset(session.program_path),     ArrayPack},
+  {SmResignCommand,    Offset(session.resign_command),   ListPack},
+  {SmRestartCommand,   Offset(session.restart_command),  ListPack},
+  {SmRestartStyleHint, Offset(session.restart_style),    CardPack},
+  {SmShutdownCommand,  Offset(session.shutdown_command), ListPack}
+};
+#undef Offset
+
+#define XT_NUM_SM_PROPS 11
+
+static void SetSessionProperties(
+    SessionShellWidget w,
+    Boolean initialize,
+    unsigned long set_mask,
+    unsigned long unset_mask)
+{
+    PropertyTable p = propertyTable;
+    int n;
+    int num_props = 0;
+    XtPointer *addr;
+    unsigned long mask;
+    SmProp *props[XT_NUM_SM_PROPS];
+    char *pnames[XT_NUM_SM_PROPS];
+
+    if (w->session.connection == NULL)
+	return;
+
+    if (initialize) {
+	char nam_buf[32];
+	char pid[12];
+	String user_name;
+	String pidp = pid;
+
+	/* set all non-NULL session properties, the UserID and the ProcessID */
+	for (n = XtNumber(propertyTable); n; n--, p++) {
+	    addr = (XtPointer *) ((char *) w + p->offset);
+	    if (p->proc == CardPack) {
+		if (*(unsigned char *)addr)
+		    props[num_props++] =(*(p->proc))(p->name, (XtPointer)addr);
+	    }
+	    else if (* addr)
+		props[num_props++] = (*(p->proc))(p->name, (XtPointer)addr);
+
+	}
+	user_name = _XtGetUserName(nam_buf, sizeof nam_buf);
+	if (user_name)
+	    props[num_props++] = ArrayPack(SmUserID, &user_name);
+	sprintf(pid, "%ld", (long)getpid());
+	props[num_props++] = ArrayPack(SmProcessID, &pidp);
+
+	if (num_props) {
+	    SmcSetProperties(w->session.connection, num_props, props);
+	    FreePacks(props, num_props);
+	}
+	return;
+    }
+
+    if (set_mask) {
+	mask = 1L;
+	for (n = XtNumber(propertyTable); n; n--, p++, mask <<= 1)
+	    if (mask & set_mask) {
+		addr = (XtPointer *) ((char *) w + p->offset);
+		props[num_props++] = (*(p->proc))(p->name, (XtPointer)addr);
+	    }
+	SmcSetProperties(w->session.connection, num_props, props);
+	FreePacks(props, num_props);
+    }
+
+    if (unset_mask) {
+	mask = 1L;
+	num_props = 0;
+	for (n = XtNumber(propertyTable); n; n--, p++, mask <<= 1)
+	    if (mask & unset_mask)
+		pnames[num_props++] = p->name;
+	SmcDeleteProperties(w->session.connection, num_props, pnames);
+    }
+}
+
+/*ARGSUSED*/
+static void GetIceEvent(
+    XtPointer	client_data,
+    int *	source,
+    XtInputId *	id)
+{
+    SessionShellWidget w = (SessionShellWidget) client_data;
+    IceProcessMessagesStatus status;
+
+    status = IceProcessMessages(SmcGetIceConnection(w->session.connection),
+				NULL, NULL);
+
+    if (status == IceProcessMessagesIOError) {
+	StopManagingSession(w, w->session.connection);
+	XtCallCallbackList((Widget)w, w->session.error_callbacks,
+			   (XtPointer) NULL);
+    }
+}
+
+static void CleanUpSave(
+    SessionShellWidget w)
+{
+    XtSaveYourself next = w->session.save->next;
+    XtFree((char *)w->session.save);
+    w->session.save = next;
+    if (w->session.save)
+	CallSaveCallbacks(w);
+}
+
+static void CallSaveCallbacks(
+    SessionShellWidget w)
+{
+    XtCheckpointToken token;
+
+    if (XtHasCallbacks((Widget) w, XtNsaveCallback) != XtCallbackHasSome) {
+	/* if the application makes no attempt to save state, report failure */
+	SmcSaveYourselfDone(w->session.connection, False);
+	CleanUpSave(w);
+    } else {
+	w->session.checkpoint_state = XtSaveActive;
+	token = GetToken((Widget) w, XtSessionCheckpoint);
+	_XtCallConditionalCallbackList((Widget)w, w->session.save_callbacks,
+				       (XtPointer)token, ExamineToken);
+	XtSessionReturnToken(token);
+    }
+}
+
+/*ARGSUSED*/
+static void XtCallSaveCallbacks(
+    SmcConn	connection,	/* unused */
+    SmPointer	client_data,
+    int		save_type,
+    Bool	shutdown,
+    int		interact,
+    Bool	fast)
+{
+    SessionShellWidget w = (SessionShellWidget) client_data;
+    XtSaveYourself save;
+    XtSaveYourself prev;
+
+    save = XtNew(XtSaveYourselfRec);
+    save->next = NULL;
+    save->save_type = save_type;
+    save->interact_style = interact;
+    save->shutdown = shutdown;
+    save->fast = fast;
+    save->cancel_shutdown = False;
+    save->phase = 1;
+    save->interact_dialog_type = SmDialogNormal;
+    save->request_cancel = save->request_next_phase = False;
+    save->save_success = True;
+    save->save_tokens = save->interact_tokens = 0;
+
+    prev = (XtSaveYourself) &w->session.save;
+    while (prev->next)
+	prev = prev->next;
+    prev->next = save;
+
+    if (w->session.checkpoint_state == XtSaveInactive)
+	CallSaveCallbacks(w);
+}
+
+static void XtInteractPermission(
+    SmcConn	connection,
+    SmPointer	data)
+{
+    Widget w = (Widget) data;
+    SessionShellWidget sw = (SessionShellWidget) data;
+    XtCheckpointToken token;
+    XtCallbackProc callback;
+    XtPointer client_data;
+
+
+    _XtPeekCallback(w, sw->session.interact_callbacks, &callback,
+		    &client_data);
+    if (callback) {
+	sw->session.checkpoint_state = XtInteractActive;
+	token = GetToken(w, XtSessionInteract);
+    	XtRemoveCallback(w, XtNinteractCallback, callback, client_data);
+	(*callback)(w, client_data, (XtPointer) token);
+    } else if (! sw->session.save->cancel_shutdown) {
+	SmcInteractDone(connection, False);
+    }
+}
+
+/*ARGSUSED*/
+static void XtCallSaveCompleteCallbacks(
+    SmcConn	connection,
+    SmPointer	client_data)
+{
+    SessionShellWidget w =  (SessionShellWidget) client_data;
+
+    XtCallCallbackList((Widget)w, w->session.save_complete_callbacks,
+		       (XtPointer) NULL);
+}
+
+/*ARGSUSED*/
+static void XtCallNextPhaseCallbacks(
+    SmcConn	connection,	/* unused */
+    SmPointer	client_data)
+{
+    SessionShellWidget w =  (SessionShellWidget) client_data;
+    w->session.save->phase = 2;
+    CallSaveCallbacks(w);
+}
+
+/*ARGSUSED*/
+static void XtCallDieCallbacks(
+    SmcConn	connection,	/* unused */
+    SmPointer	client_data)
+{
+    SessionShellWidget w =  (SessionShellWidget) client_data;
+
+    StopManagingSession(w, w->session.connection);
+    XtCallCallbackList((Widget)w, w->session.die_callbacks,
+		       (XtPointer) NULL);
+}
+
+/*ARGSUSED*/
+static void XtCallCancelCallbacks(
+    SmcConn	connection,	/* unused */
+    SmPointer	client_data)
+{
+    SessionShellWidget w = (SessionShellWidget) client_data;
+    Boolean call_interacts = False;
+
+    if (w->session.checkpoint_state != XtSaveInactive) {
+	w->session.save->cancel_shutdown = True;
+	call_interacts = (w->session.save->interact_style !=
+			  SmInteractStyleNone);
+    }
+
+    XtCallCallbackList((Widget)w, w->session.cancel_callbacks,
+		       (XtPointer) NULL);
+
+    if (call_interacts) {
+	w->session.save->interact_style = SmInteractStyleNone;
+	XtInteractPermission(w->session.connection, (SmPointer) w);
+    }
+
+    if (w->session.checkpoint_state != XtSaveInactive) {
+	if (w->session.save->save_tokens == 0 &&
+	    w->session.checkpoint_state == XtSaveActive) {
+	    w->session.checkpoint_state = XtSaveInactive;
+	    SmcSaveYourselfDone(w->session.connection,
+				w->session.save->save_success);
+	    CleanUpSave(w);
+	}
+    }
+}
+
+static XtCheckpointToken GetToken(
+    Widget	widget,
+    int		type)
+{
+    SessionShellWidget w = (SessionShellWidget) widget;
+    XtCheckpointToken token;
+    XtSaveYourself save = w->session.save;
+
+    if (type == XtSessionCheckpoint)
+	w->session.save->save_tokens++;
+    else if (type == XtSessionInteract)
+	w->session.save->interact_tokens++;
+    else
+	return (XtCheckpointToken) NULL;
+
+    token = (XtCheckpointToken) __XtMalloc(sizeof(XtCheckpointTokenRec));
+    token->save_type = save->save_type;
+    token->interact_style = save->interact_style;
+    token->shutdown = save->shutdown;
+    token->fast = save->fast;
+    token->cancel_shutdown = save->cancel_shutdown;
+    token->phase = save->phase;
+    token->interact_dialog_type = save->interact_dialog_type;
+    token->request_cancel = save->request_cancel;
+    token->request_next_phase = save->request_next_phase;
+    token->save_success = save->save_success;
+    token->type = type;
+    token->widget = widget;
+    return token;
+}
+
+XtCheckpointToken XtSessionGetToken(Widget widget)
+{
+    SessionShellWidget w = (SessionShellWidget) widget;
+    XtCheckpointToken token = NULL;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (w->session.checkpoint_state)
+	token = GetToken(widget, XtSessionCheckpoint);
+
+    UNLOCK_APP(app);
+    return token;
+}
+
+static Boolean ExamineToken(
+    XtPointer	call_data)
+{
+    XtCheckpointToken token = (XtCheckpointToken) call_data;
+    SessionShellWidget w = (SessionShellWidget) token->widget;
+
+    if (token->interact_dialog_type == SmDialogError)
+	w->session.save->interact_dialog_type = SmDialogError;
+    if (token->request_next_phase)
+	w->session.save->request_next_phase = True;
+    if (! token->save_success)
+	w->session.save->save_success = False;
+
+    token->interact_dialog_type = w->session.save->interact_dialog_type;
+    token->request_next_phase = w->session.save->request_next_phase;
+    token->save_success = w->session.save->save_success;
+    token->cancel_shutdown = w->session.save->cancel_shutdown;
+
+    return True;
+}
+
+void XtSessionReturnToken(XtCheckpointToken token)
+{
+    SessionShellWidget w = (SessionShellWidget) token->widget;
+    Boolean has_some;
+    Boolean phase_done;
+    XtCallbackProc callback;
+    XtPointer client_data;
+    WIDGET_TO_APPCON((Widget)w);
+
+    LOCK_APP(app);
+
+    has_some = (XtHasCallbacks(token->widget, XtNinteractCallback)
+		== XtCallbackHasSome);
+
+    (void) ExamineToken((XtPointer) token);
+
+    if (token->type == XtSessionCheckpoint) {
+	w->session.save->save_tokens--;
+	if (has_some && w->session.checkpoint_state == XtSaveActive) {
+	    w->session.checkpoint_state = XtInteractPending;
+	    SmcInteractRequest(w->session.connection,
+			       w->session.save->interact_dialog_type,
+			       XtInteractPermission, (SmPointer) w);
+	}
+	XtFree((char*) token);
+    } else {
+	if (token->request_cancel)
+	    w->session.save->request_cancel = True;
+	token->request_cancel = w->session.save->request_cancel;
+	if (has_some) {
+	    _XtPeekCallback((Widget)w, w->session.interact_callbacks,
+			    &callback, &client_data);
+	    XtRemoveCallback((Widget)w, XtNinteractCallback,
+			     callback, client_data);
+	    (*callback)((Widget)w, client_data, (XtPointer)token);
+	} else {
+	    w->session.save->interact_tokens--;
+	    if (w->session.save->interact_tokens == 0) {
+		w->session.checkpoint_state = XtSaveActive;
+		if (! w->session.save->cancel_shutdown)
+		    SmcInteractDone(w->session.connection,
+				    w->session.save->request_cancel);
+	    }
+	    XtFree((char *) token);
+	}
+    }
+
+    phase_done = (w->session.save->save_tokens == 0 &&
+		  w->session.checkpoint_state == XtSaveActive);
+
+    if (phase_done) {
+	if (w->session.save->request_next_phase &&
+	    w->session.save->phase == 1) {
+	    SmcRequestSaveYourselfPhase2(w->session.connection,
+					 XtCallNextPhaseCallbacks,
+					 (SmPointer)w);
+	} else {
+	    w->session.checkpoint_state = XtSaveInactive;
+	    SmcSaveYourselfDone(w->session.connection,
+				w->session.save->save_success);
+	    CleanUpSave(w);
+	}
+    }
+
+    UNLOCK_APP(app);
+}
+
+static Boolean IsInArray(
+    String str,
+    String *sarray)
+{
+    if (str == NULL || sarray == NULL)
+	return False;
+    for (; *sarray; sarray++) {
+	if (strcmp(*sarray, str) == 0)
+	    return True;
+    }
+    return False;
+}
+
+static String* EditCommand(
+    String str,		/* if not NULL, the sm_client_id */
+    String *src1,	/* first choice */
+    String *src2)	/* alternate */
+{
+    Boolean have;
+    Boolean want;
+    int count;
+    String *sarray;
+    String *s;
+    String *new;
+
+    want = (str != NULL);
+    sarray = (src1 ? src1 : src2);
+    if (! sarray) return NULL;
+    have = IsInArray("-xtsessionID", sarray);
+    if ((want && have) || (!want && !have)) {
+	if (sarray == src1)
+	    return src1;
+	else
+	    return NewStringArray(sarray);
+    }
+
+    count = 0;
+    for (s = sarray; *s; s++)
+	count++;
+
+    if (want) {
+	s = new = (String *) __XtMalloc((Cardinal)(count+3) * sizeof(String*));
+	*s = *sarray;		s++; sarray++;
+	*s = "-xtsessionID";	s++;
+	*s = str;		s++;
+	for (; --count > 0; s++, sarray++)
+	    *s = *sarray;
+	*s = (String) NULL;
+    } else {
+	if (count < 3)
+	    return NewStringArray(sarray);
+	s = new = (String *) __XtMalloc((Cardinal)(count-1) * sizeof(String*));
+	for (; --count >= 0; sarray++) {
+	    if (strcmp(*sarray, "-xtsessionID") == 0) {
+		sarray++;
+		count--;
+	    } else {
+		*s = *sarray;
+		s++;
+	    }
+	}
+	*s = (String) NULL;
+    }
+    s = new;
+    new = NewStringArray(new);
+    XtFree((char *)s);
+    return new;
+}
+
+#endif /* !XT_NO_SM */
diff --git a/libXt/src/TMaction.c b/libXt/src/TMaction.c
new file mode 100644
index 000000000..54a8402ec
--- /dev/null
+++ b/libXt/src/TMaction.c
@@ -0,0 +1,1056 @@
+/* $Xorg: TMaction.c,v 1.5 2001/02/09 02:03:58 xorgcvs Exp $ */
+/*LINTLIBRARY*/
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/TMaction.c,v 3.7 2001/12/14 19:56:30 dawes Exp $ */
+
+/* TMaction.c -- maintains the state table of actions for the translation 
+ *              manager.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+
+#if defined(__STDC__) && !defined(NORCONST)
+#define RConst const
+#else
+#define RConst /**/
+#endif
+
+static String XtNtranslationError = "translationError";
+
+typedef struct _CompiledAction{
+    XrmQuark		signature;
+    XtActionProc	proc;
+}CompiledAction, *CompiledActionTable;
+
+
+#define GetClassActions(wc) \
+  ((wc->core_class.actions) \
+? (((TMClassCache)wc->core_class.actions)->actions) \
+: NULL)
+
+static CompiledActionTable CompileActionTable(
+    register RConst struct _XtActionsRec *actions,
+    register Cardinal count,	/* may be 0 */
+    Boolean stat,	/* if False, copy before compiling in place */
+    Boolean perm)	/* if False, use XrmStringToQuark */
+{
+    register CompiledActionTable cActions;
+    register int i;
+    CompiledAction hold;
+    CompiledActionTable cTableHold;
+    XrmQuark (*func)(_Xconst char*);
+
+    if (!count)
+	return (CompiledActionTable) NULL;
+    func = (perm ? XrmPermStringToQuark : XrmStringToQuark);
+
+    if (! stat) {
+	cTableHold = cActions = (CompiledActionTable)
+	    __XtMalloc(count * sizeof(CompiledAction));
+
+	for (i=count; --i >= 0; cActions++, actions++) {
+	    cActions->proc = actions->proc;
+	    cActions->signature = (*func)(actions->string);
+	}
+    } else {
+	cTableHold = (CompiledActionTable) actions;
+
+	for (i=count; --i >= 0; actions++)
+	    ((CompiledActionTable) actions)->signature =
+		(*func)(actions->string);
+    }
+    cActions = cTableHold;
+
+    /* Insertion sort.  Whatever sort is used, it must be stable. */
+    for (i=1; (Cardinal) i <= count - 1; i++) {
+	register Cardinal j;
+	hold = cActions[i];
+	j = i;
+	while (j && cActions[j-1].signature > hold.signature) {
+	    cActions[j] = cActions[j-1];
+	    j--;
+	}
+	cActions[j] = hold;
+    }
+
+    return cActions;
+}
+
+
+typedef struct _ActionListRec *ActionList;
+typedef struct _ActionListRec {
+    ActionList		next;
+    CompiledActionTable table;
+    TMShortCard		count;
+} ActionListRec;
+
+static void ReportUnboundActions(
+    XtTranslations	xlations,
+    TMBindData		bindData)
+{
+    TMSimpleStateTree	stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[0];
+    Cardinal num_unbound = 0;
+    Cardinal num_params = 1;
+    char* message;
+    char messagebuf[1000];
+    String params[1];
+    register Cardinal num_chars = 0;
+    register Cardinal i, j;
+    XtActionProc *procs;
+
+    for (i=0; i < xlations->numStateTrees; i++) {
+	if (bindData->simple.isComplex)
+	  procs = TMGetComplexBindEntry(bindData, i)->procs;
+	else
+	  procs = TMGetSimpleBindEntry(bindData, i)->procs;
+
+	stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[i];
+	for (j=0; j < stateTree->numQuarks; j++) {
+	    if (procs[j] == NULL) {
+		String s = XrmQuarkToString(stateTree->quarkTbl[j]);
+		if (num_unbound != 0)
+		    num_chars += 2;
+		num_chars += strlen(s);
+		num_unbound++;
+	    }
+	}
+    }
+    if (num_unbound == 0)
+	return;
+    message = XtStackAlloc (num_chars + 1, messagebuf);
+    if (message != NULL) {
+	*message = '\0';
+	num_unbound = 0;
+	stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[0];
+	for (i=0; i < xlations->numStateTrees; i++) {
+	    if (bindData->simple.isComplex)
+		procs = TMGetComplexBindEntry(bindData, i)->procs;
+	    else
+		procs = TMGetSimpleBindEntry(bindData, i)->procs;
+
+	    stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[i];
+	    for (j=0; j < stateTree->numQuarks; j++) {
+		if (procs[j] == NULL) {
+		    String s = XrmQuarkToString(stateTree->quarkTbl[j]);
+		    if (num_unbound != 0)
+			(void) strcat(message, ", ");
+		    (void) strcat(message, s);
+		    num_unbound++;
+		}
+	    }
+	}
+	message[num_chars] = '\0';
+	params[0] = message;
+	XtWarningMsg(XtNtranslationError,"unboundActions",XtCXtToolkitError,
+		     "Actions not found: %s",
+		     params, &num_params);
+	XtStackFree (message, messagebuf);
+    }
+}
+
+
+static CompiledAction *SearchActionTable(
+    XrmQuark		signature,
+    CompiledActionTable	actionTable,
+    Cardinal		numActions)
+{
+    register int i, left, right;
+
+    left = 0;
+    right = numActions - 1;
+    while (left <= right) {
+	i = (left + right) >> 1;
+	if (signature < actionTable[i].signature)
+	    right = i - 1;
+	else if (signature > actionTable[i].signature)
+	    left = i + 1;
+	else {
+	    while (i && actionTable[i - 1].signature == signature)
+		i--;
+	    return &actionTable[i];
+	}
+    }
+    return (CompiledAction *) NULL;
+}
+
+static int BindActions(
+    TMSimpleStateTree	stateTree,
+    XtActionProc	*procs,
+    CompiledActionTable compiledActionTable,
+    TMShortCard		numActions,
+    Cardinal 		*ndxP)
+{
+    register int unbound = stateTree->numQuarks - *ndxP;
+    CompiledAction* action;
+    register Cardinal ndx;
+    register Boolean savedNdx = False;
+
+    for (ndx = *ndxP; ndx < stateTree->numQuarks; ndx++) {
+	if (procs[ndx] == NULL) {
+	    /* attempt to bind it */
+	    XrmQuark q = stateTree->quarkTbl[ndx];
+
+	    action = SearchActionTable(q, compiledActionTable, numActions);
+	    if (action) {
+		procs[ndx] = action->proc;
+		unbound--;
+	    } else if (!savedNdx) {
+		*ndxP= ndx;
+		savedNdx = True;
+	    }
+	} else {
+	    /* already bound, leave it alone */
+	    unbound--;
+	}
+    }
+    return unbound;
+}
+
+typedef struct _TMBindCacheStatusRec{
+    unsigned int	boundInClass:1;
+    unsigned int	boundInHierarchy:1;
+    unsigned int	boundInContext:1;
+    unsigned int	notFullyBound:1;
+    unsigned int	refCount:28;
+}TMBindCacheStatusRec, *TMBindCacheStatus;
+
+typedef struct _TMBindCacheRec{
+    struct _TMBindCacheRec *next;
+    TMBindCacheStatusRec status;
+    TMStateTree		stateTree;
+#ifdef TRACE_TM
+    WidgetClass		widgetClass;
+#endif /* TRACE_TM */
+    XtActionProc	procs[1];	/* variable length */
+}TMBindCacheRec, *TMBindCache;
+
+typedef struct _TMClassCacheRec {
+    CompiledActionTable	actions;
+    TMBindCacheRec	*bindCache;
+}TMClassCacheRec, *TMClassCache;
+
+#define IsPureClassBind(bc) \
+  (bc->status.boundInClass && \
+   !(bc->status.boundInHierarchy || \
+     bc->status.boundInContext || \
+     bc->status.notFullyBound))
+
+#define GetClassCache(w) \
+  ((TMClassCache)w->core.widget_class->core_class.actions)
+
+
+static int  BindProcs(
+    Widget 		widget,
+    TMSimpleStateTree	stateTree,
+    XtActionProc	*procs,
+    TMBindCacheStatus 	bindStatus)
+{
+    register WidgetClass    	class;
+    register ActionList     	actionList;
+    int 			unbound = -1, newUnbound = -1;
+    Cardinal 			ndx = 0;
+    Widget			w = widget;
+
+    LOCK_PROCESS;
+    do {
+        class = w->core.widget_class;
+        do {
+            if (class->core_class.actions != NULL)
+	      unbound =
+		BindActions(stateTree,
+			    procs,
+			    GetClassActions(class),
+			    class->core_class.num_actions,
+			    &ndx);
+	    class = class->core_class.superclass;
+        } while (unbound != 0 && class != NULL);
+	if (unbound < (int)stateTree->numQuarks)
+	  bindStatus->boundInClass = True;
+	else
+	  bindStatus->boundInClass = False;
+	if (newUnbound == -1)
+	  newUnbound = unbound;
+	w = XtParent(w);
+    } while (unbound != 0 && w != NULL);
+
+    if (newUnbound > unbound)
+      bindStatus->boundInHierarchy = True;
+    else
+      bindStatus->boundInHierarchy = False;
+
+    if (unbound) {
+	XtAppContext app = XtWidgetToApplicationContext(widget);
+	newUnbound = unbound;
+	for (actionList = app->action_table;
+	     unbound != 0 && actionList != NULL;
+	     actionList = actionList->next) {
+	    unbound = BindActions(stateTree,
+				  procs,
+				  actionList->table,
+				  actionList->count,
+				  &ndx);
+	}
+	if (newUnbound > unbound)
+	  bindStatus->boundInContext = True;
+	else
+	  bindStatus->boundInContext = False;
+
+    } else {
+	bindStatus->boundInContext = False;
+    }
+    UNLOCK_PROCESS;
+    return unbound;
+}
+
+static XtActionProc  *TryBindCache(
+    Widget	widget,
+    TMStateTree	stateTree)
+{
+    TMClassCache	classCache;
+
+    LOCK_PROCESS;
+    classCache = GetClassCache(widget);
+
+    if (classCache == NULL)
+      {
+	  WidgetClass	wc = XtClass(widget);
+
+	  wc->core_class.actions = (XtActionList)
+	    _XtInitializeActionData(NULL, 0, True);
+      }
+    else
+      {
+	  TMBindCache bindCache =
+	    (TMBindCache)(classCache->bindCache);
+	  for (; bindCache; bindCache = bindCache->next)
+	    {
+		if (IsPureClassBind(bindCache) &&
+		    (stateTree == bindCache->stateTree))
+		  {
+		      bindCache->status.refCount++;
+		      UNLOCK_PROCESS;
+		      return &bindCache->procs[0];
+		  }
+	    }
+      }
+    UNLOCK_PROCESS;
+    return NULL;
+}
+
+
+
+/*
+ * The class record actions field will point to the bind cache header
+ * after this call is made out of coreClassPartInit.
+ */
+XtPointer _XtInitializeActionData(
+    register struct _XtActionsRec	*actions,
+    register Cardinal			count,
+    _XtBoolean				inPlace)
+{
+    TMClassCache	classCache;
+
+    classCache = XtNew(TMClassCacheRec);
+    classCache->actions = CompileActionTable(actions, count, inPlace, True);
+    classCache->bindCache = NULL;
+    return (XtPointer)classCache;
+}
+
+
+#define TM_BIND_CACHE_REALLOC	2
+
+static XtActionProc *EnterBindCache(
+    Widget		w,
+    TMSimpleStateTree	stateTree,
+    XtActionProc 	*procs,
+    TMBindCacheStatus 	bindStatus)
+{
+    TMClassCache	classCache;
+    TMBindCache*	bindCachePtr;
+    TMShortCard		procsSize;
+    TMBindCache		bindCache;
+
+    LOCK_PROCESS;
+    classCache = GetClassCache(w);
+    bindCachePtr = &classCache->bindCache;
+    procsSize = stateTree->numQuarks * sizeof(XtActionProc);
+
+    for (bindCache = *bindCachePtr;
+	 (*bindCachePtr);
+	bindCachePtr = &(*bindCachePtr)->next, bindCache = *bindCachePtr)
+      {
+	  TMBindCacheStatus	cacheStatus = &bindCache->status;
+
+	  if ((bindStatus->boundInClass == cacheStatus->boundInClass) &&
+	      (bindStatus->boundInHierarchy == cacheStatus->boundInHierarchy) &&
+	      (bindStatus->boundInContext == cacheStatus->boundInContext) &&
+	      (bindCache->stateTree == (TMStateTree)stateTree) &&
+	      !XtMemcmp(&bindCache->procs[0], procs, procsSize))
+	    {
+		bindCache->status.refCount++;
+		break;
+	    }
+      }
+    if (*bindCachePtr == NULL)
+      {
+	  *bindCachePtr =
+	    bindCache = (TMBindCache)
+	      __XtMalloc(sizeof(TMBindCacheRec) +
+		       (procsSize - sizeof(XtActionProc)));
+	  bindCache->next = NULL;
+	  bindCache->status = *bindStatus;
+	  bindCache->status.refCount = 1;
+	  bindCache->stateTree = (TMStateTree)stateTree;
+#ifdef TRACE_TM
+	  bindCache->widgetClass = XtClass(w);
+	  if (_XtGlobalTM.numBindCache == _XtGlobalTM.bindCacheTblSize)
+	    {
+		_XtGlobalTM.bindCacheTblSize += 16;
+		_XtGlobalTM.bindCacheTbl = (TMBindCache *)
+		  XtRealloc((char *)_XtGlobalTM.bindCacheTbl,
+			    ((_XtGlobalTM.bindCacheTblSize) *
+			     sizeof(TMBindCache)));
+	    }
+	  _XtGlobalTM.bindCacheTbl[_XtGlobalTM.numBindCache++] = bindCache;
+#endif /* TRACE_TM */
+	  XtMemmove((XtPointer)&bindCache->procs[0],
+		    (XtPointer)procs, procsSize);
+      }
+    UNLOCK_PROCESS;
+    return &bindCache->procs[0];
+}
+
+static void RemoveFromBindCache(
+    Widget		w,
+    XtActionProc 	*procs)
+{
+    TMClassCache	classCache;
+    TMBindCache*	bindCachePtr;
+    TMBindCache		bindCache;
+    XtAppContext	app = XtWidgetToApplicationContext (w);
+
+    LOCK_PROCESS;
+    classCache = GetClassCache(w);
+    bindCachePtr = (TMBindCache *)&classCache->bindCache;
+
+    for (bindCache = *bindCachePtr;
+	 *bindCachePtr;
+	 bindCachePtr = &(*bindCachePtr)->next, bindCache = *bindCachePtr)
+      {
+	  if (&bindCache->procs[0] == procs)
+	    {
+		if (--bindCache->status.refCount == 0)
+		  {
+#ifdef TRACE_TM
+		      TMShortCard	j;
+		      Boolean		found = False;
+		      TMBindCache	*tbl = _XtGlobalTM.bindCacheTbl;
+
+		      for (j = 0; j < _XtGlobalTM.numBindCache; j++) {
+			  if (found)
+			    tbl[j-1] = tbl[j];
+			  if (tbl[j] == bindCache)
+			    found = True;
+		      }
+		      if (!found)
+			XtWarning("where's the action ??? ");
+		      else
+			_XtGlobalTM.numBindCache--;
+#endif /* TRACE_TM */
+		      *bindCachePtr = bindCache->next;
+		      bindCache->next = app->free_bindings;
+		      app->free_bindings = bindCache;
+		  }
+		break;
+	    }
+      }
+      UNLOCK_PROCESS;
+}
+
+/* ARGSUSED */
+static void RemoveAccelerators(
+    Widget widget,
+    XtPointer closure, XtPointer data)
+{
+    Widget 		destination = (Widget)closure;
+    TMComplexBindProcs	bindProcs;
+    XtTranslations	stackXlations[16];
+    XtTranslations	*xlationsList, destXlations;
+    TMShortCard		i, numXlations = 0;
+
+    if ((destXlations = destination->core.tm.translations) == NULL) {
+        XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+            XtNtranslationError,"nullTable",XtCXtToolkitError,
+            "Can't remove accelerators from NULL table",
+            (String *)NULL, (Cardinal *)NULL);
+        return;
+    }
+
+    xlationsList = (XtTranslations *)
+      XtStackAlloc((destXlations->numStateTrees * sizeof(XtTranslations)),
+		   stackXlations);
+
+    for (i = 0, bindProcs = TMGetComplexBindEntry(destination->core.tm.proc_table, i);
+	 i < destXlations->numStateTrees;
+	 i++, bindProcs++) {
+	if (bindProcs->widget == widget) {
+	    /*
+	     * if it's being destroyed don't do all the work
+	     */
+	    if (destination->core.being_destroyed) {
+		bindProcs->procs = NULL;
+	    }
+	    else
+	      xlationsList[numXlations] = bindProcs->aXlations;
+	    numXlations++;
+	}
+    }
+
+    if (numXlations == 0)
+      XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		      XtNtranslationError,"nullTable",XtCXtToolkitError,
+		      "Tried to remove nonexistent accelerators",
+		      (String *)NULL, (Cardinal *)NULL);
+    else {
+	if (!destination->core.being_destroyed)
+	  for (i = 0; i < numXlations; i++)
+	    _XtUnmergeTranslations(destination, xlationsList[i]);
+    }
+    XtStackFree((char *)xlationsList, stackXlations);
+}
+
+void _XtBindActions(
+    Widget widget,
+    XtTM tm)
+{
+    XtTranslations  		xlations = tm->translations;
+    TMSimpleStateTree		stateTree;
+    int				globalUnbound = 0;
+    Cardinal 			i;
+    TMBindData			bindData = (TMBindData)tm->proc_table;
+    TMSimpleBindProcs		simpleBindProcs = NULL;
+    TMComplexBindProcs 		complexBindProcs = NULL;
+    XtActionProc		*newProcs;
+    Widget			bindWidget;
+
+    if ((xlations == NULL) || widget->core.being_destroyed)
+      return;
+
+    stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[0];
+
+    for (i = 0; i < xlations->numStateTrees; i++)
+      {
+	  stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[i];
+	  if (bindData->simple.isComplex) {
+	      complexBindProcs = TMGetComplexBindEntry(bindData, i);
+	      if (complexBindProcs->widget) {
+		  bindWidget = complexBindProcs->widget;
+
+		  if (bindWidget->core.destroy_callbacks != NULL)
+		      _XtAddCallbackOnce((InternalCallbackList *)
+					 &bindWidget->core.destroy_callbacks,
+					 RemoveAccelerators,
+					 (XtPointer)widget);
+		  else
+		      _XtAddCallback((InternalCallbackList *)
+				     &bindWidget->core.destroy_callbacks,
+				     RemoveAccelerators,
+				     (XtPointer)widget);
+	      }
+	      else
+		bindWidget = widget;
+	  }
+	  else {
+	      simpleBindProcs = TMGetSimpleBindEntry(bindData, i);
+	      bindWidget = widget;
+	  }
+	  if ((newProcs =
+	       TryBindCache(bindWidget,(TMStateTree)stateTree)) == NULL)
+	    {
+		XtActionProc		*procs, stackProcs[256];
+		int			localUnbound;
+		TMBindCacheStatusRec	bcStatusRec;
+
+		procs = (XtActionProc *)
+		  XtStackAlloc(stateTree->numQuarks * sizeof(XtActionProc),
+			       stackProcs);
+		XtBZero((XtPointer)procs,
+			stateTree->numQuarks * sizeof(XtActionProc));
+
+		localUnbound = BindProcs(bindWidget,
+					 stateTree,
+					 procs,
+					 &bcStatusRec);
+
+		if (localUnbound)
+		  bcStatusRec.notFullyBound = True;
+		else
+		  bcStatusRec.notFullyBound = False;
+
+		newProcs =
+		  EnterBindCache(bindWidget,
+				 stateTree,
+				 procs,
+				 &bcStatusRec);
+		XtStackFree((XtPointer)procs, (XtPointer)stackProcs);
+		globalUnbound += localUnbound;
+	    }
+	  if (bindData->simple.isComplex)
+	    complexBindProcs->procs = newProcs;
+	  else
+	    simpleBindProcs->procs = newProcs;
+      }
+    if (globalUnbound)
+      ReportUnboundActions(xlations,
+			   (TMBindData)tm->proc_table);
+}
+
+
+void _XtUnbindActions(
+    Widget 	widget,
+    XtTranslations xlations,
+    TMBindData	bindData)
+{
+    Cardinal			i;
+    Widget			bindWidget;
+    XtActionProc		*procs;
+
+    if ((xlations == NULL) || !XtIsRealized(widget)) return;
+
+    for (i = 0; i < xlations->numStateTrees; i++) {
+	if (bindData->simple.isComplex) {
+	    TMComplexBindProcs	complexBindProcs;
+
+	    complexBindProcs = TMGetComplexBindEntry(bindData, i);
+
+	    if (complexBindProcs->widget) {
+		/*
+		 * check for this being an accelerator binding whose
+		 * source is gone ( set by RemoveAccelerators)
+		 */
+		if (complexBindProcs->procs == NULL)
+		  continue;
+
+		XtRemoveCallback(complexBindProcs->widget,
+				 XtNdestroyCallback,
+				 RemoveAccelerators,
+				 (XtPointer)widget);
+		bindWidget = complexBindProcs->widget;
+	    }
+	    else
+	      bindWidget = widget;
+	    procs = complexBindProcs->procs;
+	    complexBindProcs->procs = NULL;
+	}
+	else {
+	    TMSimpleBindProcs simpleBindProcs;
+	    simpleBindProcs = TMGetSimpleBindEntry(bindData,i);
+	    procs = simpleBindProcs->procs;
+	    simpleBindProcs->procs = NULL;
+	    bindWidget = widget;
+	}
+	RemoveFromBindCache(bindWidget, procs);
+      }
+}
+
+#ifdef notdef
+void _XtRemoveBindProcsByIndex(
+    Widget	w,
+    TMBindData	bindData,
+    TMShortCard	ndx)
+{
+    TMShortCard	i = ndx;
+    TMBindProcs	bindProcs = (TMBindProcs)&bindData->bindTbl[0];
+
+    RemoveFromBindCache(bindProcs->widget ? bindProcs->widget : w,
+			bindProcs[i].procs);
+
+    for (; i < bindData->bindTblSize; i++)
+      bindProcs[i] = bindProcs[i+1];
+}
+#endif /* notdef */
+
+/*
+ * used to free all copied action tables, called from DestroyAppContext
+ */
+void _XtFreeActions(
+    ActionList	actions)
+{
+    ActionList	curr, next;
+
+    for (curr = actions; curr;) {
+	next = curr->next;
+	XtFree((char *)curr->table);
+	XtFree((char *)curr);
+	curr = next;
+    }
+}
+
+void XtAddActions(
+    XtActionList actions,
+    Cardinal num_actions)
+{
+    XtAppAddActions(_XtDefaultAppContext(), actions, num_actions);
+}
+
+void XtAppAddActions(
+    XtAppContext app,
+    XtActionList actions,
+    Cardinal num_actions)
+{
+    register ActionList rec;
+
+    LOCK_APP(app);
+    rec = XtNew(ActionListRec);
+    rec->next = app->action_table;
+    app->action_table = rec;
+    rec->table = CompileActionTable(actions, num_actions, False, False);
+    rec->count = num_actions;
+    UNLOCK_APP(app);
+}
+
+void XtGetActionList(
+    WidgetClass widget_class,
+    XtActionList* actions_return,
+    Cardinal* num_actions_return)
+{
+    XtActionList list;
+    CompiledActionTable table;
+    int i;
+
+    *actions_return = NULL;
+    *num_actions_return = 0;
+
+    LOCK_PROCESS;
+    if (! widget_class->core_class.class_inited) {
+	UNLOCK_PROCESS;
+	return;
+    }
+    if (! (widget_class->core_class.class_inited & WidgetClassFlag)) {
+	UNLOCK_PROCESS;
+	return;
+    }
+    *num_actions_return = widget_class->core_class.num_actions;
+    if (*num_actions_return) {
+	list = *actions_return = (XtActionList)
+	    __XtMalloc(*num_actions_return * sizeof(XtActionsRec));
+	table = GetClassActions(widget_class);
+	for (i= (*num_actions_return); --i >= 0; list++, table++) {
+	    list->string = XrmQuarkToString(table->signature);
+	    list->proc = table->proc;
+	}
+    }
+    UNLOCK_PROCESS;
+}
+
+/***********************************************************************
+ *
+ * Pop-up and Grab stuff
+ *
+ ***********************************************************************/
+
+static Widget _XtFindPopup(
+    Widget widget,
+    String name)
+{
+    register Cardinal i;
+    register XrmQuark q;
+    register Widget w;
+
+    q = XrmStringToQuark(name);
+
+    for (w=widget; w != NULL; w=w->core.parent)
+	for (i=0; i<w->core.num_popups; i++)
+	    if (w->core.popup_list[i]->core.xrm_name == q)
+		return w->core.popup_list[i];
+
+    return NULL;
+}
+
+void XtMenuPopupAction(
+    Widget widget,
+    XEvent *event,
+    String *params,
+    Cardinal *num_params)
+{
+    Boolean spring_loaded;
+    register Widget popup_shell;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+
+    LOCK_APP(app);
+    if (*num_params != 1) {
+	XtAppWarningMsg(app,
+		      "invalidParameters","xtMenuPopupAction",XtCXtToolkitError,
+			"MenuPopup wants exactly one argument",
+			(String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+
+    if (event->type == ButtonPress)
+	spring_loaded = True;
+    else if (event->type == KeyPress || event->type == EnterNotify)
+	spring_loaded = False;
+    else {
+	XtAppWarningMsg(app,
+		"invalidPopup","unsupportedOperation",XtCXtToolkitError,
+"Pop-up menu creation is only supported on ButtonPress, KeyPress or EnterNotify events.",
+                  (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_APP(app);
+	return;
+    }
+
+    popup_shell = _XtFindPopup(widget, params[0]);
+    if (popup_shell == NULL) {
+	XtAppWarningMsg(app,
+			"invalidPopup","xtMenuPopup",XtCXtToolkitError,
+			"Can't find popup widget \"%s\" in XtMenuPopup",
+			params, num_params);
+	UNLOCK_APP(app);
+	return;
+    }
+
+    if (spring_loaded) _XtPopup(popup_shell, XtGrabExclusive, TRUE);
+    else _XtPopup(popup_shell, XtGrabNonexclusive, FALSE);
+    UNLOCK_APP(app);
+}
+
+
+/*ARGSUSED*/
+static void _XtMenuPopdownAction(
+    Widget widget,
+    XEvent *event,
+    String *params,
+    Cardinal *num_params)
+{
+    Widget popup_shell;
+
+    if (*num_params == 0) {
+	XtPopdown(widget);
+    } else if (*num_params == 1) {
+	popup_shell = _XtFindPopup(widget, params[0]);
+	if (popup_shell == NULL) {
+            XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+			    "invalidPopup","xtMenuPopdown",XtCXtToolkitError,
+			    "Can't find popup widget \"%s\" in XtMenuPopdown",
+			    params, num_params);
+	    return;
+	}
+	XtPopdown(popup_shell);
+    } else {
+	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+			"invalidParameters","xtMenuPopdown",XtCXtToolkitError,
+			"XtMenuPopdown called with num_params != 0 or 1",
+			(String *)NULL, (Cardinal *)NULL);
+    }
+}
+
+static XtActionsRec RConst tmActions[] = {
+    {"XtMenuPopup", XtMenuPopupAction},
+    {"XtMenuPopdown", _XtMenuPopdownAction},
+    {"MenuPopup", XtMenuPopupAction}, /* old & obsolete */
+    {"MenuPopdown", _XtMenuPopdownAction}, /* ditto */
+#ifndef NO_MIT_HACKS
+    {"XtDisplayTranslations", _XtDisplayTranslations},
+    {"XtDisplayAccelerators", _XtDisplayAccelerators},
+    {"XtDisplayInstalledAccelerators", _XtDisplayInstalledAccelerators},
+#endif
+};
+
+
+void _XtPopupInitialize(
+    XtAppContext app)
+{
+    register ActionList rec;
+
+    /*
+     * The _XtGlobalTM.newMatchSemantics flag determines whether
+     * we support old or new matching
+     * behavior. This is mainly an issue of whether subsequent lhs will
+     * get pushed up in the match table if a lhs containing thier initial
+     * sequence has already been encountered. Currently inited to False;
+     */
+#ifdef NEW_TM
+    _XtGlobalTM.newMatchSemantics = True;
+#else
+    _XtGlobalTM.newMatchSemantics = False;
+#endif
+
+    rec = XtNew(ActionListRec);
+    rec->next = app->action_table;
+    app->action_table = rec;
+    LOCK_PROCESS;
+    rec->table = CompileActionTable(tmActions, XtNumber(tmActions), False,
+				    True);
+    rec->count = XtNumber(tmActions);
+    UNLOCK_PROCESS;
+    _XtGrabInitialize(app);
+}
+
+
+void XtCallActionProc(
+    Widget widget,
+    _Xconst char* action,
+    XEvent *event,
+    String *params,
+    Cardinal num_params)
+{
+    CompiledAction* actionP;
+    XrmQuark q = XrmStringToQuark(action);
+    Widget w = widget;
+    XtAppContext app = XtWidgetToApplicationContext(widget);
+    ActionList actionList;
+    Cardinal i;
+
+    LOCK_APP(app);
+    XtCheckSubclass(widget, coreWidgetClass,
+		    "XtCallActionProc first argument is not a subclass of Core");
+    LOCK_PROCESS;
+    do {
+	WidgetClass class = XtClass(w);
+	do {
+	    if ((actionP = GetClassActions(class)) != NULL)
+	      for (i = 0;
+		   i < class->core_class.num_actions;
+		   i++, actionP++) {
+
+		  if (actionP->signature == q) {
+		      ActionHook hook = app->action_hook_list;
+		      while (hook != NULL) {
+			  (*hook->proc)( widget,
+					hook->closure,
+					(String)action,
+					event,
+					params,
+					&num_params
+					);
+			  hook= hook->next;
+		      }
+		      (*(actionP->proc))
+			(widget, event, params, &num_params);
+		      UNLOCK_PROCESS;
+		      UNLOCK_APP(app);
+		      return;
+		  }
+	      }
+	    class = class->core_class.superclass;
+	} while (class != NULL);
+	w = XtParent(w);
+    } while (w != NULL);
+    UNLOCK_PROCESS;
+
+    for (actionList = app->action_table;
+	 actionList != NULL;
+	 actionList = actionList->next) {
+
+	for (i = 0, actionP = actionList->table;
+	     i < actionList->count;
+	     i++, actionP++) {
+	    if (actionP->signature == q) {
+		ActionHook hook = app->action_hook_list;
+		while (hook != NULL) {
+		    (*hook->proc)( widget,
+				  hook->closure,
+				  (String)action,
+				  event,
+				  params,
+				  &num_params
+				  );
+		    hook= hook->next;
+		}
+		(*(actionP->proc))
+		  (widget, event, params, &num_params);
+		UNLOCK_APP(app);
+		return;
+	    }
+	}
+
+    }
+
+    {
+	String params[2];
+	Cardinal num_params = 2;
+	params[0] = (String)action;
+	params[1] = XtName(widget);
+	XtAppWarningMsg(app,
+			"noActionProc", "xtCallActionProc", XtCXtToolkitError,
+			"No action proc named \"%s\" is registered for widget \"%s\"",
+			params, &num_params
+			);
+    }
+    UNLOCK_APP(app);
+}
+
+void _XtDoFreeBindings(
+    XtAppContext app)
+{
+    TMBindCache bcp;
+
+    while (app->free_bindings) {
+	bcp = app->free_bindings->next;
+	XtFree ((char *) app->free_bindings);
+	app->free_bindings = bcp;
+    }
+}
diff --git a/libXt/src/TMgrab.c b/libXt/src/TMgrab.c
new file mode 100644
index 000000000..9fc4df982
--- /dev/null
+++ b/libXt/src/TMgrab.c
@@ -0,0 +1,336 @@
+/* $Xorg: TMgrab.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/TMgrab.c,v 1.3 2001/12/14 19:56:30 dawes Exp $ */
+
+/*LINTLIBRARY*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+typedef struct _GrabActionRec {
+    struct _GrabActionRec* next;
+    XtActionProc action_proc;
+    Boolean owner_events;
+    unsigned int event_mask;
+    int pointer_mode, keyboard_mode;
+} GrabActionRec;
+
+static GrabActionRec *grabActionList = NULL;
+
+static void GrabAllCorrectKeys(
+    Widget widget,
+    TMTypeMatch typeMatch,
+    TMModifierMatch modMatch,
+    GrabActionRec* grabP)
+{
+    Display *dpy = XtDisplay(widget);
+    KeyCode *keycodes, *keycodeP;
+    Cardinal keycount;
+    Modifiers careOn = 0;
+    Modifiers careMask = 0;
+
+    if (modMatch->lateModifiers) {
+	Boolean resolved;
+	resolved = _XtComputeLateBindings(dpy, modMatch->lateModifiers,
+					  &careOn, &careMask);
+	if (!resolved) return;
+    }
+    careOn |= modMatch->modifiers;
+    careMask |= modMatch->modifierMask;
+
+    XtKeysymToKeycodeList(
+	    dpy,
+	    (KeySym)typeMatch->eventCode,
+	    &keycodes,
+	    &keycount
+			 );
+    if (keycount == 0) return;
+    for (keycodeP = keycodes; keycount--; keycodeP++) {
+	if (modMatch->standard) {
+	    /* find standard modifiers that produce this keysym */
+	    KeySym keysym;
+	    int std_mods, least_mod;
+	    Modifiers modifiers_return;
+	    XtTranslateKeycode( dpy, *keycodeP, (Modifiers)0,
+			        &modifiers_return, &keysym );
+	    if (careOn & modifiers_return)
+		return;
+	    if (keysym == typeMatch->eventCode) {
+		XtGrabKey(widget, *keycodeP, careOn,
+			  grabP->owner_events,
+			  grabP->pointer_mode,
+			  grabP->keyboard_mode
+			);
+		/* continue; */		/* grab all modifier combinations */
+	    }
+	    least_mod = modifiers_return & (~modifiers_return + 1);
+	    for (std_mods = modifiers_return;
+		 std_mods >= least_mod; std_mods--) {
+		Modifiers dummy;
+		 /* check all useful combinations of modifier bits */
+		if (modifiers_return & std_mods &&
+		    !(~modifiers_return & std_mods)) {
+		    XtTranslateKeycode( dpy, *keycodeP,
+					(Modifiers)std_mods,
+					&dummy, &keysym );
+		    if (keysym == typeMatch->eventCode) {
+			XtGrabKey(widget, *keycodeP,
+				  careOn | (Modifiers) std_mods,
+				  grabP->owner_events,
+				  grabP->pointer_mode,
+				  grabP->keyboard_mode
+				);
+			/* break; */	/* grab all modifier combinations */
+		    }
+		}
+	    }
+	} else /* !event->standard */ {
+	    XtGrabKey(widget, *keycodeP, careOn,
+		      grabP->owner_events,
+		      grabP->pointer_mode,
+		      grabP->keyboard_mode
+		    );
+	}
+    }
+    XtFree((char *)keycodes);
+}
+
+typedef struct {
+    TMShortCard count;
+    Widget	widget;
+    GrabActionRec *grabP;
+}DoGrabRec;
+
+static Boolean DoGrab(
+    StatePtr		state,
+    XtPointer		data)
+{
+    DoGrabRec		*doGrabP = (DoGrabRec *)data;
+    GrabActionRec* 	grabP = doGrabP->grabP;
+    Widget		widget = doGrabP->widget;
+    TMShortCard		count = doGrabP->count;
+    TMShortCard		typeIndex = state->typeIndex;
+    TMShortCard		modIndex = state->modIndex;
+    ActionRec		*action;
+    TMTypeMatch		typeMatch;
+    TMModifierMatch	modMatch;
+    Modifiers		careOn = 0;
+    Modifiers		careMask = 0;
+    Boolean		resolved;
+
+    LOCK_PROCESS;
+    typeMatch = TMGetTypeMatch(typeIndex);
+    modMatch = TMGetModifierMatch(modIndex);
+
+    for (action = state->actions; action; action = action->next)
+      if (count == action->idx) break;
+    if (!action) {
+	UNLOCK_PROCESS;
+	return False;
+    }
+
+    switch (typeMatch->eventType) {
+      case ButtonPress:
+      case ButtonRelease:
+	if (modMatch->lateModifiers) {
+	    resolved = _XtComputeLateBindings(XtDisplay(widget),
+					      modMatch->lateModifiers,
+					      &careOn, &careMask);
+	    if (!resolved) break;
+	}
+	careOn |= modMatch->modifiers;
+	XtGrabButton(
+		     widget,
+		     (unsigned) typeMatch->eventCode,
+		     careOn,
+		     grabP->owner_events,
+		     grabP->event_mask,
+		     grabP->pointer_mode,
+		     grabP->keyboard_mode,
+		     None,
+		     None
+		     );
+	break;
+
+      case KeyPress:
+      case KeyRelease:
+	GrabAllCorrectKeys(widget, typeMatch, modMatch, grabP);
+	break;
+
+      case EnterNotify:
+	break;
+
+      default:
+	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+			"invalidPopup","unsupportedOperation",XtCXtToolkitError,
+			"Pop-up menu creation is only supported on Button, Key or EnterNotify events.",
+			(String *)NULL, (Cardinal *)NULL);
+	break;
+    }
+    UNLOCK_PROCESS;
+    return False;
+}
+
+void _XtRegisterGrabs(
+    Widget widget)
+{
+    XtTranslations 	xlations = widget->core.tm.translations;
+    TMComplexStateTree 	*stateTreePtr;
+    unsigned int 	count;
+    TMShortCard		i;
+    TMBindData   	bindData = (TMBindData) widget->core.tm.proc_table;
+    XtActionProc	*procs;
+
+    if (! XtIsRealized(widget) || widget->core.being_destroyed)
+	return;
+
+    /* walk the widget instance action bindings table looking for */
+    /* actions registered as grab actions. */
+    /* when you find one, do a grab on the triggering event */
+
+    if (xlations == NULL) return;
+    stateTreePtr = (TMComplexStateTree *) xlations->stateTreeTbl;
+    if (*stateTreePtr == NULL) return;
+    for (i = 0; i < xlations->numStateTrees; i++, stateTreePtr++) {
+	if (bindData->simple.isComplex)
+	  procs = TMGetComplexBindEntry(bindData, i)->procs;
+	else
+	  procs = TMGetSimpleBindEntry(bindData, i)->procs;
+	for (count=0; count < (*stateTreePtr)->numQuarks; count++) {
+	    GrabActionRec* grabP;
+	    DoGrabRec      doGrab;
+
+	    LOCK_PROCESS;
+	    for (grabP = grabActionList; grabP != NULL; grabP = grabP->next) {
+		if (grabP->action_proc == procs[count]) {
+		    /* we've found a "grabber" in the action table. Find the
+		     * states that call this action.  Note that if there is
+		     * more than one "grabber" in the action table, we end
+		     * up searching all of the states multiple times.
+		     */
+		    doGrab.widget = widget;
+		    doGrab.grabP = grabP;
+		    doGrab.count = count;
+		    _XtTraverseStateTree((TMStateTree)*stateTreePtr,
+					 DoGrab,
+					 (XtPointer)&doGrab);
+		}
+	    }
+	    UNLOCK_PROCESS;
+	}
+    }
+}
+
+void XtRegisterGrabAction(
+    XtActionProc action_proc,
+    _XtBoolean owner_events,
+    unsigned int event_mask,
+    int pointer_mode,
+    int keyboard_mode)
+{
+    GrabActionRec* actionP;
+
+    LOCK_PROCESS;
+    for (actionP = grabActionList; actionP != NULL; actionP = actionP->next) {
+	if (actionP->action_proc == action_proc) break;
+    }
+    if (actionP == NULL) {
+	actionP = XtNew(GrabActionRec);
+	actionP->action_proc = action_proc;
+	actionP->next = grabActionList;
+	grabActionList = actionP;
+    }
+#ifdef DEBUG
+    else
+	if (   actionP->owner_events != owner_events
+	    || actionP->event_mask != event_mask
+	    || actionP->pointer_mode != pointer_mode
+	    || actionP->keyboard_mode != keyboard_mode) {
+	    Cardinal n = 0;
+	    XtWarningMsg(
+		"argsReplaced", "xtRegisterGrabAction", XtCXtToolkitError,
+		"XtRegisterGrabAction called on same proc with different args",
+			 NULL, &n);
+	}
+#endif /*DEBUG*/
+
+    actionP->owner_events = owner_events;
+    actionP->event_mask = event_mask;
+    actionP->pointer_mode = pointer_mode;
+    actionP->keyboard_mode = keyboard_mode;
+    UNLOCK_PROCESS;
+}
+
+/*ARGSUSED*/
+void _XtGrabInitialize(
+    XtAppContext	app)
+{
+    LOCK_PROCESS;
+    if (grabActionList == NULL)
+	XtRegisterGrabAction( XtMenuPopupAction, True,
+			      (unsigned)(ButtonPressMask | ButtonReleaseMask),
+			      GrabModeAsync,
+			      GrabModeAsync
+			    );
+    UNLOCK_PROCESS;
+
+}
diff --git a/libXt/src/TMkey.c b/libXt/src/TMkey.c
new file mode 100644
index 000000000..71bfddb36
--- /dev/null
+++ b/libXt/src/TMkey.c
@@ -0,0 +1,718 @@
+/* $Xorg: TMkey.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+/*LINTLIBRARY*/
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/TMkey.c,v 3.10 2001/12/14 19:56:30 dawes Exp $ */
+
+#define XK_MISCELLANY
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include <X11/keysymdef.h>
+#ifdef XKB
+#include <X11/XKBlib.h>
+#endif
+
+#define FLUSHKEYCACHE(ctx) \
+	bzero((char *)&ctx->keycache, sizeof(TMKeyCache))
+
+/*
+ * The following array reorders the modifier bits so that the most common ones
+ * (used by a translator) are in the top-most bits with respect to the size of
+ * the keycache.  The array currently just reverses the bits as a good guess.
+ * This might be more trouble than it is worth, but it seems to help.
+ */
+
+#define FM(i) i >> (8 - TMKEYCACHELOG2)
+static const unsigned char modmix[256] = {
+FM(0x0f), FM(0x8f), FM(0x4f), FM(0xcf), FM(0x2f), FM(0xaf), FM(0x6f), FM(0xef),
+FM(0x1f), FM(0x9f), FM(0x5f), FM(0xdf), FM(0x3f), FM(0xbf), FM(0x7f), FM(0xff),
+FM(0x07), FM(0x87), FM(0x47), FM(0xc7), FM(0x27), FM(0xa7), FM(0x67), FM(0xe7),
+FM(0x17), FM(0x97), FM(0x57), FM(0xd7), FM(0x37), FM(0xb7), FM(0x77), FM(0xf7),
+FM(0x0b), FM(0x8b), FM(0x4b), FM(0xcb), FM(0x2b), FM(0xab), FM(0x6b), FM(0xeb),
+FM(0x1b), FM(0x9b), FM(0x5b), FM(0xdb), FM(0x3b), FM(0xbb), FM(0x7b), FM(0xfb),
+FM(0x03), FM(0x83), FM(0x43), FM(0xc3), FM(0x23), FM(0xa3), FM(0x63), FM(0xe3),
+FM(0x13), FM(0x93), FM(0x53), FM(0xd3), FM(0x33), FM(0xb3), FM(0x73), FM(0xf3),
+FM(0x0d), FM(0x8d), FM(0x4d), FM(0xcd), FM(0x2d), FM(0xad), FM(0x6d), FM(0xed),
+FM(0x1d), FM(0x9d), FM(0x5d), FM(0xdd), FM(0x3d), FM(0xbd), FM(0x7d), FM(0xfd),
+FM(0x05), FM(0x85), FM(0x45), FM(0xc5), FM(0x25), FM(0xa5), FM(0x65), FM(0xe5),
+FM(0x15), FM(0x95), FM(0x55), FM(0xd5), FM(0x35), FM(0xb5), FM(0x75), FM(0xf5),
+FM(0x09), FM(0x89), FM(0x49), FM(0xc9), FM(0x29), FM(0xa9), FM(0x69), FM(0xe9),
+FM(0x19), FM(0x99), FM(0x59), FM(0xd9), FM(0x39), FM(0xb9), FM(0x79), FM(0xf9),
+FM(0x01), FM(0x81), FM(0x41), FM(0xc1), FM(0x21), FM(0xa1), FM(0x61), FM(0xe1),
+FM(0x11), FM(0x91), FM(0x51), FM(0xd1), FM(0x31), FM(0xb1), FM(0x71), FM(0xf1),
+FM(0x00), FM(0x8e), FM(0x4e), FM(0xce), FM(0x2e), FM(0xae), FM(0x6e), FM(0xee),
+FM(0x1e), FM(0x9e), FM(0x5e), FM(0xde), FM(0x3e), FM(0xbe), FM(0x7e), FM(0xfe),
+FM(0x08), FM(0x88), FM(0x48), FM(0xc8), FM(0x28), FM(0xa8), FM(0x68), FM(0xe8),
+FM(0x18), FM(0x98), FM(0x58), FM(0xd8), FM(0x38), FM(0xb8), FM(0x78), FM(0xf8),
+FM(0x04), FM(0x84), FM(0x44), FM(0xc4), FM(0x24), FM(0xa4), FM(0x64), FM(0xe4),
+FM(0x14), FM(0x94), FM(0x54), FM(0xd4), FM(0x34), FM(0xb4), FM(0x74), FM(0xf4),
+FM(0x0c), FM(0x8c), FM(0x4c), FM(0xcc), FM(0x2c), FM(0xac), FM(0x6c), FM(0xec),
+FM(0x1c), FM(0x9c), FM(0x5c), FM(0xdc), FM(0x3c), FM(0xbc), FM(0x7c), FM(0xfc),
+FM(0x02), FM(0x82), FM(0x42), FM(0xc2), FM(0x22), FM(0xa2), FM(0x62), FM(0xe2),
+FM(0x12), FM(0x92), FM(0x52), FM(0xd2), FM(0x32), FM(0xb2), FM(0x72), FM(0xf2),
+FM(0x0a), FM(0x8a), FM(0x4a), FM(0xca), FM(0x2a), FM(0xaa), FM(0x6a), FM(0xea),
+FM(0x1a), FM(0x9a), FM(0x5a), FM(0xda), FM(0x3a), FM(0xba), FM(0x7a), FM(0xfa),
+FM(0x06), FM(0x86), FM(0x46), FM(0xc6), FM(0x26), FM(0xa6), FM(0x66), FM(0xe6),
+FM(0x16), FM(0x96), FM(0x56), FM(0xd6), FM(0x36), FM(0xb6), FM(0x76), FM(0xf6),
+FM(0x0e), FM(0x8e), FM(0x4e), FM(0xce), FM(0x2e), FM(0xae), FM(0x6e), FM(0xee),
+FM(0x1e), FM(0x9e), FM(0x5e), FM(0xde), FM(0x3e), FM(0xbe), FM(0x7e), FM(0xfe)
+};
+#undef FM
+
+#define MOD_RETURN(ctx, key) (ctx)->keycache.modifiers_return[key]
+
+#define TRANSLATE(ctx,pd,dpy,key,mod,mod_ret,sym_ret) \
+{ \
+    int _i_ = (((key) - (pd)->min_keycode + modmix[(mod) & 0xff]) & \
+	       (TMKEYCACHESIZE-1)); \
+    if ((key) == 0) { /* Xlib XIM composed input */ \
+	mod_ret = 0; \
+	sym_ret = 0; \
+    } else if (   /* not Xlib XIM composed input */ \
+	(ctx)->keycache.keycode[_i_] == (key) && \
+	(ctx)->keycache.modifiers[_i_] == (mod)) { \
+	mod_ret = MOD_RETURN(ctx, key); \
+	sym_ret = (ctx)->keycache.keysym[_i_]; \
+    } else { \
+	XtTranslateKeycode(dpy, key, mod, &mod_ret, &sym_ret); \
+	(ctx)->keycache.keycode[_i_] = key; \
+	(ctx)->keycache.modifiers[_i_] = (unsigned char)(mod); \
+	(ctx)->keycache.keysym[_i_] = sym_ret; \
+	MOD_RETURN(ctx, key) = (unsigned char)mod_ret; \
+    } \
+}
+
+#define UPDATE_CACHE(ctx, pd, key, mod, mod_ret, sym_ret) \
+{ \
+    int _i_ = (((key) - (pd)->min_keycode + modmix[(mod) & 0xff]) & \
+	       (TMKEYCACHESIZE-1)); \
+    (ctx)->keycache.keycode[_i_] = key; \
+    (ctx)->keycache.modifiers[_i_] = (unsigned char)(mod); \
+    (ctx)->keycache.keysym[_i_] = sym_ret; \
+    MOD_RETURN(ctx, key) = (unsigned char)mod_ret; \
+}
+
+/* usual number of expected keycodes in XtKeysymToKeycodeList */
+#define KEYCODE_ARRAY_SIZE 10
+
+Boolean _XtComputeLateBindings(
+    Display *dpy,
+    LateBindingsPtr lateModifiers,
+    Modifiers *computed,
+    Modifiers *computedMask)
+{
+    int i,j,ref;
+    ModToKeysymTable* temp;
+    XtPerDisplay perDisplay;
+    Boolean found;
+    KeySym tempKeysym = NoSymbol;
+
+    perDisplay = _XtGetPerDisplay(dpy);
+    if (perDisplay == NULL) {
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+		"displayError","invalidDisplay",XtCXtToolkitError,
+            "Can't find display structure",
+            (String *)NULL, (Cardinal *)NULL);
+         return FALSE;
+    }
+    _InitializeKeysymTables(dpy, perDisplay);
+    for (ref=0; lateModifiers[ref].keysym; ref++) {
+        found = FALSE;
+        for (i=0;i<8;i++) {
+            temp = &(perDisplay->modsToKeysyms[i]);
+            for (j=0;j<temp->count;j++){
+                if (perDisplay->modKeysyms[temp->idx+j] ==
+		    lateModifiers[ref].keysym) {
+                    *computedMask = *computedMask | temp->mask;
+                    if (!lateModifiers[ref].knot)
+		      *computed |= temp->mask;
+                    tempKeysym = lateModifiers[ref].keysym;
+                    found = TRUE; break;
+                }
+            }
+            if (found) break;
+        }
+        if (!found  && !lateModifiers[ref].knot)
+            if (!lateModifiers[ref].pair && (tempKeysym == NoSymbol))
+                return FALSE;
+        /* if you didn't find the modifier and the modifier must be
+           asserted then return FALSE. If you didn't find the modifier
+           and the modifier must be off, then it is OK . Don't
+           return FALSE if this is the first member of a pair or if
+           it is the second member of a pair when the first member
+           was bound to a modifier */
+    if (!lateModifiers[ref].pair) tempKeysym = NoSymbol;
+    }
+    return TRUE;
+}
+
+void _XtAllocTMContext(
+    XtPerDisplay pd)
+{
+    TMKeyContext ctx;
+    ctx = (TMKeyContext)_XtHeapAlloc(&pd->heap,
+				     sizeof(TMKeyContextRec));
+    ctx->event = NULL;
+    ctx->serial = 0;
+    ctx->keysym = NoSymbol;
+    ctx->modifiers = 0;
+    FLUSHKEYCACHE(ctx);
+    pd->tm_context = ctx;
+}
+
+static unsigned int num_bits(unsigned long mask)
+{
+    register unsigned long y;
+
+    y = (mask >> 1) &033333333333;
+    y = mask - y - ((y >>1) & 033333333333);
+    return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
+}
+
+Boolean _XtMatchUsingDontCareMods(
+    TMTypeMatch 	typeMatch,
+    TMModifierMatch 	modMatch,
+    TMEventPtr 		eventSeq)
+{
+    Modifiers modifiers_return;
+    KeySym keysym_return;
+    Modifiers useful_mods;
+    int i, num_modbits;
+    Modifiers computed = 0;
+    Modifiers computedMask = 0;
+    Boolean resolved = TRUE;
+    Display *dpy = eventSeq->xev->xany.display;
+    XtPerDisplay pd;
+    TMKeyContext tm_context;
+
+    if (modMatch->lateModifiers != NULL)
+	resolved = _XtComputeLateBindings(dpy, modMatch->lateModifiers,
+					  &computed, &computedMask);
+    if (!resolved) return FALSE;
+    computed |= modMatch->modifiers;
+    computedMask |= modMatch->modifierMask; /* gives do-care mask */
+
+    if ( (computed & computedMask) ==
+        (eventSeq->event.modifiers & computedMask) ) {
+
+	pd = _XtGetPerDisplay(dpy);
+	tm_context = pd->tm_context;
+	TRANSLATE(tm_context, pd, dpy, (KeyCode)eventSeq->event.eventCode,
+			    (unsigned)0, modifiers_return, keysym_return);
+
+        if ((keysym_return & typeMatch->eventCodeMask)  == typeMatch->eventCode ) {
+	    tm_context->event = eventSeq->xev;
+	    tm_context->serial = eventSeq->xev->xany.serial;
+	    tm_context->keysym = keysym_return;
+	    tm_context->modifiers = (Modifiers)0;
+	    return TRUE;
+	}
+        useful_mods = ~computedMask & modifiers_return;
+        if (useful_mods == 0) return FALSE;
+
+	switch (num_modbits = num_bits(useful_mods)) {
+	case 1:
+	case 8:
+	    /*
+	     * one modbit should never happen, in fact the implementation
+	     * of XtTranslateKey and XmTranslateKey guarantee that it
+	     * won't, so don't care if the loop is set up for the case
+	     * when one modbit is set.
+	     * The performance implications of all eight modbits being
+	     * set is horrendous. This isn't a problem with Xt/Xaw based
+	     * applications. We can only hope that Motif's virtual
+	     * modifiers won't result in all eight modbits being set.
+	     */
+	    for (i = useful_mods; i > 0; i--) {
+		TRANSLATE(tm_context, pd, dpy, eventSeq->event.eventCode,
+			  (Modifiers)i, modifiers_return, keysym_return);
+		if (keysym_return ==
+		    (typeMatch->eventCode & typeMatch->eventCodeMask)) {
+		    tm_context->event = eventSeq->xev;
+		    tm_context->serial = eventSeq->xev->xany.serial;
+		    tm_context->keysym = keysym_return;
+		    tm_context->modifiers = (Modifiers)i;
+		    return TRUE;
+		}
+	    }
+	    break;
+	default: /* (2..7) */
+	    {
+	    /*
+	     * Only translate using combinations of the useful modifiers.
+	     * to minimize the chance of invalidating the cache.
+	     */
+		static char pows[] = { 0, 1, 3, 7, 15, 31, 63, 127 };
+		Modifiers tmod, mod_masks[8];
+		int j;
+		for (tmod = 1, i = 0; tmod <= (Mod5Mask<<1); tmod <<= 1)
+		    if (tmod & useful_mods) mod_masks[i++] = tmod;
+		for (j = (int) pows[num_modbits]; j > 0; j--) {
+		    tmod = 0;
+		    for (i = 0; i < num_modbits; i++)
+			if (j & (1<<i)) tmod |= mod_masks[i];
+		    TRANSLATE(tm_context, pd, dpy, eventSeq->event.eventCode,
+			      tmod, modifiers_return, keysym_return);
+		    if (keysym_return ==
+			(typeMatch->eventCode & typeMatch->eventCodeMask)) {
+			tm_context->event = eventSeq->xev;
+			tm_context->serial = eventSeq->xev->xany.serial;
+			tm_context->keysym = keysym_return;
+			tm_context->modifiers = (Modifiers)i;
+			return TRUE;
+		    }
+		}
+	    }
+	    break;
+	} /* switch (num_modbits) */
+    }
+    return FALSE;
+}
+
+void XtConvertCase(
+    Display *dpy,
+    KeySym keysym,
+    KeySym *lower_return,
+    KeySym *upper_return)
+{
+    XtPerDisplay pd;
+    CaseConverterPtr ptr;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+
+    *lower_return = *upper_return = keysym;
+    for (ptr=pd->case_cvt;  ptr; ptr = ptr->next)
+	if (ptr->start <= keysym && keysym <= ptr->stop) {
+	    (*ptr->proc)(dpy, keysym, lower_return, upper_return);
+	    return;
+	}
+    XConvertCase(keysym, lower_return, upper_return);
+    UNLOCK_APP(app);
+}
+
+Boolean _XtMatchUsingStandardMods (
+    TMTypeMatch typeMatch,
+    TMModifierMatch modMatch,
+    TMEventPtr eventSeq)
+{
+    Modifiers modifiers_return;
+    KeySym keysym_return;
+    Modifiers computed= 0;
+    Modifiers computedMask = 0;
+    Boolean resolved = TRUE;
+    Display *dpy = eventSeq->xev->xany.display;
+    XtPerDisplay pd = _XtGetPerDisplay(dpy);
+    TMKeyContext tm_context = pd->tm_context;
+    Modifiers translateModifiers;
+
+    /* To maximize cache utilization, we mask off nonstandard modifiers
+       before cache lookup.  For a given key translator, standard modifiers
+       are constant per KeyCode.  If a key translator uses no standard
+       modifiers this implementation will never reference the cache.
+     */
+
+    modifiers_return = MOD_RETURN(tm_context, eventSeq->event.eventCode);
+    if (!modifiers_return) {
+	XtTranslateKeycode(dpy, (KeyCode)eventSeq->event.eventCode,
+			   eventSeq->event.modifiers, &modifiers_return,
+			   &keysym_return);
+	translateModifiers = eventSeq->event.modifiers & modifiers_return;
+	UPDATE_CACHE(tm_context, pd, eventSeq->event.eventCode,
+		     translateModifiers, modifiers_return, keysym_return);
+    } else {
+	translateModifiers = eventSeq->event.modifiers & modifiers_return;
+	TRANSLATE(tm_context, pd, dpy, (KeyCode)eventSeq->event.eventCode,
+		  translateModifiers, modifiers_return, keysym_return);
+    }
+
+    if ((typeMatch->eventCode & typeMatch->eventCodeMask) ==
+             (keysym_return & typeMatch->eventCodeMask)) {
+        if (modMatch->lateModifiers != NULL)
+            resolved = _XtComputeLateBindings(dpy, modMatch->lateModifiers,
+					      &computed, &computedMask);
+        if (!resolved) return FALSE;
+        computed |= modMatch->modifiers;
+        computedMask |= modMatch->modifierMask;
+
+        if ((computed & computedMask) ==
+	    (eventSeq->event.modifiers & ~modifiers_return & computedMask)) {
+	    tm_context->event = eventSeq->xev;
+	    tm_context->serial = eventSeq->xev->xany.serial;
+	    tm_context->keysym = keysym_return;
+	    tm_context->modifiers = translateModifiers;
+	    return TRUE;
+	}
+    }
+    return FALSE;
+}
+
+
+void _XtBuildKeysymTables(
+    Display *dpy,
+    register XtPerDisplay pd)
+{
+    ModToKeysymTable *table;
+    int maxCount,i,j,k,tempCount,idx;
+    KeySym keysym,tempKeysym;
+    XModifierKeymap* modKeymap;
+    KeyCode keycode;
+#define KeysymTableSize 16
+
+    FLUSHKEYCACHE(pd->tm_context);
+    if (pd->keysyms)
+	XFree( (char *)pd->keysyms );
+    pd->keysyms_serial = NextRequest(dpy);
+    pd->keysyms = XGetKeyboardMapping(dpy, pd->min_keycode,
+				      pd->max_keycode-pd->min_keycode+1,
+				      &pd->keysyms_per_keycode);
+    if (pd->modKeysyms)
+	XtFree((char *)pd->modKeysyms);
+    if (pd->modsToKeysyms)
+	XtFree((char *)pd->modsToKeysyms);
+    pd->modKeysyms = (KeySym*)__XtMalloc((Cardinal)KeysymTableSize*sizeof(KeySym));
+    maxCount = KeysymTableSize;
+    tempCount = 0;
+
+    table = (ModToKeysymTable*)__XtMalloc((Cardinal)8*sizeof(ModToKeysymTable));
+    pd->modsToKeysyms = table;
+
+    table[0].mask = ShiftMask;
+    table[1].mask = LockMask;
+    table[2].mask = ControlMask;
+    table[3].mask = Mod1Mask;
+    table[4].mask = Mod2Mask;
+    table[5].mask = Mod3Mask;
+    table[6].mask = Mod4Mask;
+    table[7].mask = Mod5Mask;
+    tempKeysym = 0;
+
+    modKeymap = XGetModifierMapping(dpy);
+    for (i=0;i<32;i++)
+	pd->isModifier[i] = 0;
+    pd->mode_switch = 0;
+    pd->num_lock = 0;
+    for (i=0;i<8;i++) {
+        table[i].idx = tempCount;
+        table[i].count = 0;
+        for (j=0;j<modKeymap->max_keypermod;j++) {
+            keycode = modKeymap->modifiermap[i*modKeymap->max_keypermod+j];
+            if (keycode != 0) {
+		pd->isModifier[keycode>>3] |= 1 << (keycode & 7);
+                for (k=0; k<pd->keysyms_per_keycode;k++) {
+                    idx = ((keycode-pd->min_keycode)*
+                             pd->keysyms_per_keycode)+k;
+                    keysym = pd->keysyms[idx];
+		    if ((keysym == XK_Mode_switch) && (i > 2))
+			pd->mode_switch |= 1 << i;
+		    if ((keysym == XK_Num_Lock) && (i > 2))
+			pd->num_lock |= 1 << i;
+                    if (keysym != 0 && keysym != tempKeysym ){
+                        if (tempCount==maxCount) {
+                            maxCount += KeysymTableSize;
+                            pd->modKeysyms = (KeySym*)XtRealloc(
+                                (char*)pd->modKeysyms,
+                                (unsigned) (maxCount*sizeof(KeySym)) );
+                        }
+                        pd->modKeysyms[tempCount++] = keysym;
+                        table[i].count++;
+                        tempKeysym = keysym;
+                    }
+                }
+            }
+        }
+    }
+    pd->lock_meaning = NoSymbol;
+    for (i = 0; i < table[1].count; i++) {
+	keysym = pd->modKeysyms[table[1].idx + i];
+	if (keysym == XK_Caps_Lock) {
+	    pd->lock_meaning = XK_Caps_Lock;
+	    break;
+	} else if (keysym == XK_Shift_Lock) {
+	    pd->lock_meaning = XK_Shift_Lock;
+	}
+    }
+    XFreeModifiermap(modKeymap);
+}
+
+void XtTranslateKeycode (
+    Display *dpy,
+    _XtKeyCode keycode,
+    Modifiers modifiers,
+    Modifiers *modifiers_return,
+    KeySym *keysym_return)
+{
+    XtPerDisplay pd;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+    _InitializeKeysymTables(dpy, pd);
+    (*pd->defaultKeycodeTranslator)(
+            dpy,keycode,modifiers,modifiers_return,keysym_return);
+    UNLOCK_APP(app);
+}
+
+/* This code should match XTranslateKey (internal, sigh) in Xlib */
+void XtTranslateKey(
+    register Display *dpy,
+    _XtKeyCode keycode,
+    Modifiers modifiers,
+    Modifiers *modifiers_return,
+    KeySym *keysym_return)
+{
+#ifndef XKB
+    XtPerDisplay pd;
+    int per;
+    register KeySym *syms;
+    KeySym sym, lsym, usym;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+    *modifiers_return = (ShiftMask|LockMask) | pd->mode_switch | pd->num_lock;
+    if (((int)keycode < pd->min_keycode) || ((int)keycode > pd->max_keycode)) {
+	*keysym_return = NoSymbol;
+	UNLOCK_APP(app);
+	return;
+    }
+    per = pd->keysyms_per_keycode;
+    syms = &pd->keysyms[(keycode - pd->min_keycode) * per];
+    while ((per > 2) && (syms[per - 1] == NoSymbol))
+	per--;
+    if ((per > 2) && (modifiers & pd->mode_switch)) {
+	syms += 2;
+	per -= 2;
+    }
+    if ((modifiers & pd->num_lock) &&
+	(per > 1 && (IsKeypadKey(syms[1]) || IsPrivateKeypadKey(syms[1])))) {
+	if ((modifiers & ShiftMask) ||
+	    ((modifiers & LockMask) && (pd->lock_meaning == XK_Shift_Lock)))
+	    *keysym_return = syms[0];
+	else
+	    *keysym_return = syms[1];
+    } else if (!(modifiers & ShiftMask) &&
+	(!(modifiers & LockMask) || (pd->lock_meaning == NoSymbol))) {
+	if ((per == 1) || (syms[1] == NoSymbol))
+	    XtConvertCase(dpy, syms[0], keysym_return, &usym);
+	else
+	    *keysym_return = syms[0];
+    } else if (!(modifiers & LockMask) ||
+	       (pd->lock_meaning != XK_Caps_Lock)) {
+	if ((per == 1) || ((usym = syms[1]) == NoSymbol))
+	    XtConvertCase(dpy, syms[0], &lsym, &usym);
+	*keysym_return = usym;
+    } else {
+	if ((per == 1) || ((sym = syms[1]) == NoSymbol))
+	    sym = syms[0];
+	XtConvertCase(dpy, sym, &lsym, &usym);
+	if (!(modifiers & ShiftMask) && (sym != syms[0]) &&
+	    ((sym != usym) || (lsym == usym)))
+	    XtConvertCase(dpy, syms[0], &lsym, &usym);
+	*keysym_return = usym;
+    }
+
+    if (*keysym_return == XK_VoidSymbol)
+	*keysym_return = NoSymbol;
+    UNLOCK_APP(app);
+#else
+    XkbLookupKeySym(dpy, keycode, modifiers, modifiers_return, keysym_return);
+#endif
+}
+
+void XtSetKeyTranslator(
+    Display *dpy,
+    XtKeyProc translator)
+{
+    XtPerDisplay pd;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+
+    pd->defaultKeycodeTranslator = translator;
+    FLUSHKEYCACHE(pd->tm_context);
+    /* XXX should now redo grabs */
+    UNLOCK_APP(app);
+}
+
+void XtRegisterCaseConverter(
+    Display *dpy,
+    XtCaseProc proc,
+    KeySym start,
+    KeySym stop)
+{
+    XtPerDisplay pd;
+    CaseConverterPtr ptr, prev;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+
+    ptr = (CaseConverterPtr) __XtMalloc(sizeof(CaseConverterRec));
+    ptr->start = start;
+    ptr->stop = stop;
+    ptr->proc = proc;
+    ptr->next = pd->case_cvt;
+    pd->case_cvt = ptr;
+
+    /* Remove obsolete case converters from the list */
+    prev = ptr;
+    for (ptr=ptr->next; ptr; ptr=prev->next) {
+	if (start <= ptr->start && stop >= ptr->stop) {
+	    prev->next = ptr->next;
+	    XtFree((char *)ptr);
+	}
+	else prev = ptr;
+    }
+    FLUSHKEYCACHE(pd->tm_context);
+    /* XXX should now redo grabs */
+    UNLOCK_APP(app);
+}
+
+KeySym *XtGetKeysymTable(
+    Display *dpy,
+    KeyCode *min_keycode_return,
+    int *keysyms_per_keycode_return)
+{
+    XtPerDisplay pd;
+    KeySym* retval;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+    _InitializeKeysymTables(dpy, pd);
+    *min_keycode_return = pd->min_keycode; /* %%% */
+    *keysyms_per_keycode_return = pd->keysyms_per_keycode;
+    retval = pd->keysyms;
+    UNLOCK_APP(app);
+    return retval;
+}
+
+void XtKeysymToKeycodeList(
+    Display *dpy,
+    KeySym keysym,
+    KeyCode **keycodes_return,
+    Cardinal *keycount_return)
+{
+    XtPerDisplay pd;
+    unsigned keycode;
+    int per, match;
+    register KeySym *syms;
+    register int i, j;
+    KeySym lsym, usym;
+    unsigned maxcodes = 0;
+    unsigned ncodes = 0;
+    KeyCode *keycodes, *codeP = NULL;
+    DPY_TO_APPCON(dpy);
+
+    LOCK_APP(app);
+    pd = _XtGetPerDisplay(dpy);
+    _InitializeKeysymTables(dpy, pd);
+    keycodes = NULL;
+    per = pd->keysyms_per_keycode;
+    for (syms = pd->keysyms, keycode = (unsigned) pd->min_keycode;
+	 (int)keycode <= pd->max_keycode;
+	 syms += per, keycode++) {
+	match = 0;
+	for (j = 0; j < per; j++) {
+	    if (syms[j] == keysym) {
+		match = 1;
+		break;
+	    }
+	}
+	if (!match)
+	    for (i = 1; i < 5; i += 2) {
+		if ((per == i) || ((per > i) && (syms[i] == NoSymbol))) {
+		    XtConvertCase(dpy, syms[i-1], &lsym, &usym);
+		    if ((lsym == keysym) || (usym == keysym)) {
+			match = 1;
+			break;
+		    }
+		}
+	    }
+	if (match) {
+	    if (ncodes == maxcodes) {
+		KeyCode *old = keycodes;
+		maxcodes += KEYCODE_ARRAY_SIZE;
+		keycodes = (KeyCode*)__XtMalloc(maxcodes*sizeof(KeyCode));
+		if (ncodes) {
+		    (void) memmove((char *)keycodes, (char *)old,
+				   ncodes*sizeof(KeyCode) );
+		    XtFree((char *)old);
+		}
+		codeP = &keycodes[ncodes];
+	    }
+	    *codeP++ = (KeyCode) keycode;
+	    ncodes++;
+	}
+    }
+    *keycodes_return = keycodes;
+    *keycount_return = ncodes;
+    UNLOCK_APP(app);
+}
diff --git a/libXt/src/TMparse.c b/libXt/src/TMparse.c
new file mode 100644
index 000000000..43ee8c9d5
--- /dev/null
+++ b/libXt/src/TMparse.c
@@ -0,0 +1,2136 @@
+/* $Xorg: TMparse.c,v 1.6 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/TMparse.c,v 3.10tsi Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include <ctype.h>
+#include <stdlib.h>
+#ifndef NOTASCII
+#define XK_LATIN1
+#endif
+#define XK_MISCELLANY
+#include <X11/keysymdef.h>
+
+#ifdef CACHE_TRANSLATIONS
+# ifdef REFCNT_TRANSLATIONS
+#  define CACHED XtCacheAll | XtCacheRefCount
+# else
+#  define CACHED XtCacheAll
+# endif
+#else
+# define CACHED XtCacheNone
+#endif
+
+#ifndef MAX
+#define MAX(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+
+#ifndef MIN
+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+static String XtNtranslationParseError = "translationParseError";
+
+typedef int		EventType;
+
+typedef String (*ParseProc)(
+    String /* str; */,
+    Opaque /* closure; */,
+    EventPtr /* event; */,
+    Boolean* /* error */);
+
+typedef TMShortCard	Value;
+typedef void (*ModifierProc)(Value, LateBindingsPtr*, Boolean, Value*);
+
+typedef struct _ModifierRec {
+    char*      name;
+    XrmQuark   signature;
+    ModifierProc modifierParseProc;
+    Value      value;
+} ModifierRec, *ModifierKeys;
+
+typedef struct _EventKey {
+    char    	*event;
+    XrmQuark	signature;
+    EventType	eventType;
+    ParseProc	parseDetail;
+    Opaque	closure;
+}EventKey, *EventKeys;
+
+typedef struct {
+    char	*name;
+    XrmQuark	signature;
+    Value	value;
+} NameValueRec, *NameValueTable;
+
+static void ParseModImmed(Value, LateBindingsPtr*, Boolean, Value*);
+static void ParseModSym(Value, LateBindingsPtr*, Boolean, Value*);
+static String PanicModeRecovery(String);
+static String CheckForPoundSign(String, _XtTranslateOp, _XtTranslateOp *);
+static KeySym StringToKeySym(String, Boolean *);
+static ModifierRec modifiers[] = {
+    {"Shift",	0,	ParseModImmed,ShiftMask},
+    {"Lock",	0,	ParseModImmed,LockMask},
+    {"Ctrl",	0,	ParseModImmed,ControlMask},
+    {"Mod1",	0,	ParseModImmed,Mod1Mask},
+    {"Mod2",	0,	ParseModImmed,Mod2Mask},
+    {"Mod3",	0,	ParseModImmed,Mod3Mask},
+    {"Mod4",	0,	ParseModImmed,Mod4Mask},
+    {"Mod5",	0,	ParseModImmed,Mod5Mask},
+    {"Meta",	0,	ParseModSym,  XK_Meta_L},
+    {"m",       0,      ParseModSym,  XK_Meta_L},
+    {"h",       0,      ParseModSym,  XK_Hyper_L},
+    {"su",      0,      ParseModSym,  XK_Super_L},
+    {"a",       0,      ParseModSym,  XK_Alt_L},
+    {"Hyper",   0,      ParseModSym,  XK_Hyper_L},
+    {"Super",   0,      ParseModSym,  XK_Super_L},
+    {"Alt",     0,      ParseModSym,  XK_Alt_L},
+    {"Button1",	0,	ParseModImmed,Button1Mask},
+    {"Button2",	0,	ParseModImmed,Button2Mask},
+    {"Button3",	0,	ParseModImmed,Button3Mask},
+    {"Button4",	0,	ParseModImmed,Button4Mask},
+    {"Button5",	0,	ParseModImmed,Button5Mask},
+    {"c",	0,	ParseModImmed,ControlMask},
+    {"s",	0,	ParseModImmed,ShiftMask},
+    {"l",	0,	ParseModImmed,LockMask},
+};
+
+static NameValueRec buttonNames[] = {
+    {"Button1",	0,	Button1},
+    {"Button2", 0,	Button2},
+    {"Button3", 0,	Button3},
+    {"Button4", 0,	Button4},
+    {"Button5", 0,	Button5},
+    {NULL, NULLQUARK, 0},
+};
+
+static NameValueRec motionDetails[] = {
+    {"Normal",		0,	NotifyNormal},
+    {"Hint",		0,	NotifyHint},
+    {NULL, NULLQUARK, 0},
+};
+
+static NameValueRec notifyModes[] = {
+    {"Normal",		0,	NotifyNormal},
+    {"Grab",		0,	NotifyGrab},
+    {"Ungrab",		0,	NotifyUngrab},
+    {"WhileGrabbed",    0,	NotifyWhileGrabbed},
+    {NULL, NULLQUARK, 0},
+};
+
+#if 0
+static NameValueRec notifyDetail[] = {
+    {"Ancestor",	    0,	NotifyAncestor},
+    {"Virtual",		    0,	NotifyVirtual},
+    {"Inferior",	    0,	NotifyInferior},
+    {"Nonlinear",	    0,	NotifyNonlinear},
+    {"NonlinearVirtual",    0,	NotifyNonlinearVirtual},
+    {"Pointer",		    0,	NotifyPointer},
+    {"PointerRoot",	    0,	NotifyPointerRoot},
+    {"DetailNone",	    0,	NotifyDetailNone},
+    {NULL, NULLQUARK, 0},
+};
+
+static NameValueRec visibilityNotify[] = {
+    {"Unobscured",	    0,	VisibilityUnobscured},
+    {"PartiallyObscured",   0,	VisibilityPartiallyObscured},
+    {"FullyObscured",       0,	VisibilityFullyObscured},
+    {NULL, NULLQUARK, 0},
+};
+
+static NameValueRec circulation[] = {
+    {"OnTop",       0,	PlaceOnTop},
+    {"OnBottom",    0,	PlaceOnBottom},
+    {NULL, NULLQUARK, 0},
+};
+
+static NameValueRec propertyChanged[] = {
+    {"NewValue",    0,	PropertyNewValue},
+    {"Delete",      0,	PropertyDelete},
+    {NULL, NULLQUARK, 0},
+};
+#endif /*0*/
+
+static NameValueRec mappingNotify[] = {
+    {"Modifier",	0,	MappingModifier},
+    {"Keyboard",	0,	MappingKeyboard},
+    {"Pointer",	0,	MappingPointer},
+    {NULL, NULLQUARK, 0},
+};
+
+static String ParseKeySym(String, Opaque, EventPtr, Boolean*);
+static String ParseKeyAndModifiers(String, Opaque, EventPtr, Boolean*);
+static String ParseTable(String, Opaque, EventPtr, Boolean*);
+static String ParseImmed(String, Opaque, EventPtr, Boolean*);
+static String ParseAddModifier(String, Opaque, EventPtr, Boolean*);
+static String ParseNone(String, Opaque, EventPtr, Boolean*);
+static String ParseAtom(String, Opaque, EventPtr, Boolean*);
+
+static EventKey events[] = {
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+{"KeyPress",	    NULLQUARK, KeyPress,	ParseKeySym,	NULL},
+{"Key", 	    NULLQUARK, KeyPress,	ParseKeySym,	NULL},
+{"KeyDown",	    NULLQUARK, KeyPress,	ParseKeySym,	NULL},
+{"Ctrl",            NULLQUARK, KeyPress, ParseKeyAndModifiers,(Opaque)ControlMask},
+{"Shift",           NULLQUARK, KeyPress, ParseKeyAndModifiers,(Opaque)ShiftMask},
+{"Meta",            NULLQUARK, KeyPress,   ParseKeyAndModifiers,(Opaque)NULL},
+{"KeyUp",	    NULLQUARK, KeyRelease,	ParseKeySym,	NULL},
+{"KeyRelease",	    NULLQUARK, KeyRelease,	ParseKeySym,	NULL},
+
+{"ButtonPress",     NULLQUARK, ButtonPress,  ParseTable,(Opaque)buttonNames},
+{"BtnDown",	    NULLQUARK, ButtonPress,  ParseTable,(Opaque)buttonNames},
+{"Btn1Down",	    NULLQUARK, ButtonPress,	ParseImmed,(Opaque)Button1},
+{"Btn2Down", 	    NULLQUARK, ButtonPress,	ParseImmed,(Opaque)Button2},
+{"Btn3Down", 	    NULLQUARK, ButtonPress,	ParseImmed,(Opaque)Button3},
+{"Btn4Down", 	    NULLQUARK, ButtonPress,	ParseImmed,(Opaque)Button4},
+{"Btn5Down", 	    NULLQUARK, ButtonPress,	ParseImmed,(Opaque)Button5},
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+{"ButtonRelease",   NULLQUARK, ButtonRelease,  ParseTable,(Opaque)buttonNames},
+{"BtnUp", 	    NULLQUARK, ButtonRelease,  ParseTable,(Opaque)buttonNames},
+{"Btn1Up", 	    NULLQUARK, ButtonRelease,    ParseImmed,(Opaque)Button1},
+{"Btn2Up", 	    NULLQUARK, ButtonRelease,    ParseImmed,(Opaque)Button2},
+{"Btn3Up", 	    NULLQUARK, ButtonRelease,    ParseImmed,(Opaque)Button3},
+{"Btn4Up", 	    NULLQUARK, ButtonRelease,    ParseImmed,(Opaque)Button4},
+{"Btn5Up", 	    NULLQUARK, ButtonRelease,    ParseImmed,(Opaque)Button5},
+
+{"MotionNotify",    NULLQUARK, MotionNotify, ParseTable, (Opaque)motionDetails},
+{"PtrMoved", 	    NULLQUARK, MotionNotify, ParseTable, (Opaque)motionDetails},
+{"Motion", 	    NULLQUARK, MotionNotify, ParseTable, (Opaque)motionDetails},
+{"MouseMoved", 	    NULLQUARK, MotionNotify, ParseTable, (Opaque)motionDetails},
+{"BtnMotion",  NULLQUARK, MotionNotify, ParseAddModifier, (Opaque)AnyButtonMask},
+{"Btn1Motion", NULLQUARK, MotionNotify, ParseAddModifier, (Opaque)Button1Mask},
+{"Btn2Motion", NULLQUARK, MotionNotify, ParseAddModifier, (Opaque)Button2Mask},
+{"Btn3Motion", NULLQUARK, MotionNotify, ParseAddModifier, (Opaque)Button3Mask},
+{"Btn4Motion", NULLQUARK, MotionNotify, ParseAddModifier, (Opaque)Button4Mask},
+{"Btn5Motion", NULLQUARK, MotionNotify, ParseAddModifier, (Opaque)Button5Mask},
+
+{"EnterNotify",     NULLQUARK, EnterNotify,    ParseTable,(Opaque)notifyModes},
+{"Enter",	    NULLQUARK, EnterNotify,    ParseTable,(Opaque)notifyModes},
+{"EnterWindow",     NULLQUARK, EnterNotify,    ParseTable,(Opaque)notifyModes},
+
+{"LeaveNotify",     NULLQUARK, LeaveNotify,    ParseTable,(Opaque)notifyModes},
+{"LeaveWindow",     NULLQUARK, LeaveNotify,    ParseTable,(Opaque)notifyModes},
+{"Leave",	    NULLQUARK, LeaveNotify,    ParseTable,(Opaque)notifyModes},
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+{"FocusIn",	    NULLQUARK, FocusIn,	  ParseTable,(Opaque)notifyModes},
+
+{"FocusOut",	    NULLQUARK, FocusOut,       ParseTable,(Opaque)notifyModes},
+
+{"KeymapNotify",    NULLQUARK, KeymapNotify,	ParseNone,	NULL},
+{"Keymap",	    NULLQUARK, KeymapNotify,	ParseNone,	NULL},
+
+{"Expose", 	    NULLQUARK, Expose,		ParseNone,	NULL},
+
+{"GraphicsExpose",  NULLQUARK, GraphicsExpose,	ParseNone,	NULL},
+{"GrExp",	    NULLQUARK, GraphicsExpose,	ParseNone,	NULL},
+
+{"NoExpose",	    NULLQUARK, NoExpose,	ParseNone,	NULL},
+{"NoExp",	    NULLQUARK, NoExpose,	ParseNone,	NULL},
+
+{"VisibilityNotify",NULLQUARK, VisibilityNotify,ParseNone,	NULL},
+{"Visible",	    NULLQUARK, VisibilityNotify,ParseNone,	NULL},
+
+{"CreateNotify",    NULLQUARK, CreateNotify,	ParseNone,	NULL},
+{"Create",	    NULLQUARK, CreateNotify,	ParseNone,	NULL},
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+{"DestroyNotify",   NULLQUARK, DestroyNotify,	ParseNone,	NULL},
+{"Destroy",	    NULLQUARK, DestroyNotify,	ParseNone,	NULL},
+
+{"UnmapNotify",     NULLQUARK, UnmapNotify,	ParseNone,	NULL},
+{"Unmap",	    NULLQUARK, UnmapNotify,	ParseNone,	NULL},
+
+{"MapNotify",	    NULLQUARK, MapNotify,	ParseNone,	NULL},
+{"Map",		    NULLQUARK, MapNotify,	ParseNone,	NULL},
+
+{"MapRequest",	    NULLQUARK, MapRequest,	ParseNone,	NULL},
+{"MapReq",	    NULLQUARK, MapRequest,	ParseNone,	NULL},
+
+{"ReparentNotify",  NULLQUARK, ReparentNotify,	ParseNone,	NULL},
+{"Reparent",	    NULLQUARK, ReparentNotify,	ParseNone,	NULL},
+
+{"ConfigureNotify", NULLQUARK, ConfigureNotify,	ParseNone,	NULL},
+{"Configure",	    NULLQUARK, ConfigureNotify,	ParseNone,	NULL},
+
+{"ConfigureRequest",NULLQUARK, ConfigureRequest,ParseNone,	NULL},
+{"ConfigureReq",    NULLQUARK, ConfigureRequest,ParseNone,	NULL},
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+{"GravityNotify",   NULLQUARK, GravityNotify,	ParseNone,	NULL},
+{"Grav",	    NULLQUARK, GravityNotify,	ParseNone,	NULL},
+
+{"ResizeRequest",   NULLQUARK, ResizeRequest,	ParseNone,	NULL},
+{"ResReq",	    NULLQUARK, ResizeRequest,	ParseNone,	NULL},
+
+{"CirculateNotify", NULLQUARK, CirculateNotify,	ParseNone,	NULL},
+{"Circ",	    NULLQUARK, CirculateNotify,	ParseNone,	NULL},
+
+{"CirculateRequest",NULLQUARK, CirculateRequest,ParseNone,	NULL},
+{"CircReq",	    NULLQUARK, CirculateRequest,ParseNone,	NULL},
+
+{"PropertyNotify",  NULLQUARK, PropertyNotify,	ParseAtom,	NULL},
+{"Prop",	    NULLQUARK, PropertyNotify,	ParseAtom,	NULL},
+
+{"SelectionClear",  NULLQUARK, SelectionClear,	ParseAtom,	NULL},
+{"SelClr",	    NULLQUARK, SelectionClear,	ParseAtom,	NULL},
+
+{"SelectionRequest",NULLQUARK, SelectionRequest,ParseAtom,	NULL},
+{"SelReq",	    NULLQUARK, SelectionRequest,ParseAtom,	NULL},
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+{"SelectionNotify", NULLQUARK, SelectionNotify,	ParseAtom,	NULL},
+{"Select",	    NULLQUARK, SelectionNotify,	ParseAtom,	NULL},
+
+{"ColormapNotify",  NULLQUARK, ColormapNotify,	ParseNone,	NULL},
+{"Clrmap",	    NULLQUARK, ColormapNotify,	ParseNone,	NULL},
+
+{"ClientMessage",   NULLQUARK, ClientMessage,	ParseAtom,	NULL},
+{"Message",	    NULLQUARK, ClientMessage,	ParseAtom,	NULL},
+
+{"MappingNotify",   NULLQUARK, MappingNotify, ParseTable, (Opaque)mappingNotify},
+{"Mapping",	    NULLQUARK, MappingNotify, ParseTable, (Opaque)mappingNotify},
+
+#ifdef DEBUG
+# ifdef notdef
+{"Timer",	    NULLQUARK, _XtTimerEventType,ParseNone,	NULL},
+# endif /* notdef */
+{"EventTimer",	    NULLQUARK, _XtEventTimerEventType,ParseNone,NULL},
+#endif /* DEBUG */
+
+/* Event Name,	  Quark, Event Type,	Detail Parser, Closure */
+
+};
+
+#ifndef __UNIXOS2__
+#define IsNewline(str) ((str) == '\n')
+#else
+#define IsNewline(str) ((str) == '\n' || (str) == '\r')
+#endif
+
+#define ScanFor(str, ch) \
+    while ((*(str) != (ch)) && (*(str) != '\0') && !IsNewline(*(str))) (str)++
+
+#define ScanNumeric(str)  while ('0' <= *(str) && *(str) <= '9') (str)++
+
+#define ScanAlphanumeric(str) \
+    while (('A' <= *(str) && *(str) <= 'Z') || \
+           ('a' <= *(str) && *(str) <= 'z') || \
+           ('0' <= *(str) && *(str) <= '9')) (str)++
+
+#ifndef __UNIXOS2__
+#define ScanWhitespace(str) \
+    while (*(str) == ' ' || *(str) == '\t') (str)++
+#else
+#define ScanWhitespace(str) \
+    while (*(str) == ' ' || *(str) == '\t' || *(str) == '\r') (str)++
+#endif
+
+static Boolean initialized = FALSE;
+static XrmQuark QMeta;
+static XrmQuark QCtrl;
+static XrmQuark QNone;
+static XrmQuark QAny;
+
+static void FreeEventSeq(
+    EventSeqPtr eventSeq)
+{
+    register EventSeqPtr evs = eventSeq;
+
+    while (evs != NULL) {
+	evs->state = (StatePtr) evs;
+	if (evs->next != NULL
+	    && evs->next->state == (StatePtr) evs->next)
+	    evs->next = NULL;
+	evs = evs->next;
+    }
+
+    evs = eventSeq;
+    while (evs != NULL) {
+	register EventPtr event = evs;
+	evs = evs->next;
+	if (evs == event) evs = NULL;
+	XtFree((char *)event);
+    }
+}
+
+static void CompileNameValueTable(
+    NameValueTable table)
+{
+    register int i;
+
+    for (i=0; table[i].name; i++)
+        table[i].signature = XrmPermStringToQuark(table[i].name);
+}
+
+static int OrderEvents(_Xconst void *a, _Xconst void *b)
+{
+    return ((((_Xconst EventKey *)a)->signature <
+	     ((_Xconst EventKey *)b)->signature) ? -1 : 1);
+}
+
+static void Compile_XtEventTable(
+    EventKeys	table,
+    Cardinal	count)
+{
+    register int i;
+    register EventKeys entry = table;
+
+    for (i=count; --i >= 0; entry++)
+	entry->signature = XrmPermStringToQuark(entry->event);
+    qsort(table, count, sizeof(EventKey), OrderEvents);
+}
+
+static int OrderModifiers(_Xconst void *a, _Xconst void *b)
+{
+    return ((((_Xconst ModifierRec *)a)->signature <
+	     ((_Xconst ModifierRec *)b)->signature) ? -1 : 1);
+}
+
+static void Compile_XtModifierTable(
+    ModifierKeys table,
+    Cardinal count)
+{
+    register int i;
+    register ModifierKeys entry = table;
+
+    for (i=count; --i >= 0; entry++)
+	entry->signature = XrmPermStringToQuark(entry->name);
+    qsort(table, count, sizeof(ModifierRec), OrderModifiers);
+}
+
+static String PanicModeRecovery(
+    String str)
+{
+     ScanFor(str,'\n');
+     if (*str == '\n') str++;
+     return str;
+
+}
+
+
+static void Syntax(
+    String str0,String str1)
+{
+    Cardinal num_params = 2;
+    String params[2];
+
+    params[0] = str0;
+    params[1] = str1;
+    XtWarningMsg(XtNtranslationParseError,"parseError",XtCXtToolkitError,
+		 "translation table syntax error: %s %s",params,&num_params);
+}
+
+
+
+static Cardinal LookupTMEventType(
+  String eventStr,
+  Boolean *error)
+{
+    register int   i = 0, left, right;
+    register XrmQuark	signature;
+    static int 	previous = 0;
+
+    LOCK_PROCESS;
+    if ((signature = StringToQuark(eventStr)) == events[previous].signature) {
+	UNLOCK_PROCESS;
+	return (Cardinal) previous;
+    }
+
+    left = 0;
+    right = XtNumber(events) - 1;
+    while (left <= right) {
+	i = (left + right) >> 1;
+	if (signature < events[i].signature)
+	    right = i - 1;
+	else if (signature > events[i].signature)
+	    left = i + 1;
+	else {
+	    previous = i;
+	    UNLOCK_PROCESS;
+	    return (Cardinal) i;
+	}
+    }
+
+    Syntax("Unknown event type :  ",eventStr);
+    *error = TRUE;
+    UNLOCK_PROCESS;
+    return (Cardinal) i;
+}
+
+static void StoreLateBindings(
+    KeySym  keysymL,
+    Boolean notL,
+    KeySym keysymR,
+    Boolean notR,
+    LateBindingsPtr* lateBindings)
+{
+    LateBindingsPtr temp;
+    Boolean pair = FALSE;
+    unsigned long count,number;
+    if (lateBindings != NULL){
+        temp = *lateBindings;
+        if (temp != NULL) {
+            for (count = 0; temp[count].keysym; count++){/*EMPTY*/}
+        }
+        else count = 0;
+        if (! keysymR){
+             number = 1;pair = FALSE;
+        } else{
+             number = 2;pair = TRUE;
+        }
+
+        temp = (LateBindingsPtr)XtRealloc((char *)temp,
+            (unsigned)((count+number+1) * sizeof(LateBindings)) );
+        *lateBindings = temp;
+        temp[count].knot = notL;
+        temp[count].pair = pair;
+	if (count == 0)
+	    temp[count].ref_count = 1;
+        temp[count++].keysym = keysymL;
+        if (keysymR){
+            temp[count].knot = notR;
+            temp[count].pair = FALSE;
+	    temp[count].ref_count = 0;
+            temp[count++].keysym = keysymR;
+        }
+        temp[count].knot = temp[count].pair = FALSE;
+        temp[count].ref_count = 0;
+        temp[count].keysym = 0;
+    }
+}
+
+static void _XtParseKeysymMod(
+    String name,
+    LateBindingsPtr* lateBindings,
+    Boolean notFlag,
+    Value *valueP,
+    Boolean *error)
+{
+    KeySym keySym;
+    keySym = StringToKeySym(name, error);
+    *valueP = 0;
+    if (keySym != NoSymbol) {
+        StoreLateBindings(keySym,notFlag,(KeySym) NULL,FALSE,lateBindings);
+    }
+}
+
+static Boolean _XtLookupModifier(
+    XrmQuark signature,
+    LateBindingsPtr* lateBindings,
+    Boolean notFlag,
+    Value *valueP,
+    Bool constMask)
+{
+    register int i, left, right;
+    static int previous = 0;
+
+    LOCK_PROCESS;
+    if (signature == modifiers[previous].signature) {
+	if (constMask)  *valueP = modifiers[previous].value;
+	else /* if (modifiers[previous].modifierParseProc) always true */
+	   (*modifiers[previous].modifierParseProc)
+	      (modifiers[previous].value, lateBindings, notFlag, valueP);
+	UNLOCK_PROCESS;
+	return TRUE;
+    }
+
+    left = 0;
+    right = XtNumber(modifiers) - 1;
+    while (left <= right) {
+	i = (left + right) >> 1;
+	if (signature < modifiers[i].signature)
+	    right = i - 1;
+	else if (signature > modifiers[i].signature)
+	    left = i + 1;
+	else {
+	    previous = i;
+	    if (constMask)  *valueP = modifiers[i].value;
+	    else /* if (modifiers[i].modifierParseProc) always true */
+		(*modifiers[i].modifierParseProc)
+		    (modifiers[i].value, lateBindings, notFlag, valueP);
+	    UNLOCK_PROCESS;
+	    return TRUE;
+	}
+    }
+    UNLOCK_PROCESS;
+    return FALSE;
+}
+
+
+static String ScanIdent(
+    register String str)
+{
+    ScanAlphanumeric(str);
+    while (
+	   ('A' <= *str && *str <= 'Z')
+	|| ('a' <= *str && *str <= 'z')
+	|| ('0' <= *str && *str <= '9')
+	|| (*str == '-')
+	|| (*str == '_')
+	|| (*str == '$')
+	) str++;
+    return str;
+}
+
+static String FetchModifierToken(
+    String str,
+    XrmQuark *token_return)
+{
+    String start = str;
+
+    if (*str == '$') {
+        *token_return = QMeta;
+        str++;
+        return str;
+    }
+    if (*str == '^') {
+        *token_return = QCtrl;
+        str++;
+        return str;
+    }
+    str = ScanIdent(str);
+    if (start != str) {
+	char modStrbuf[100];
+	char* modStr;
+
+	modStr = XtStackAlloc ((size_t)(str - start + 1), modStrbuf);
+	if (modStr == NULL) _XtAllocError (NULL);
+	(void) memmove(modStr, start, str-start);
+	modStr[str-start] = '\0';
+	*token_return = XrmStringToQuark(modStr);
+	XtStackFree (modStr, modStrbuf);
+	return str;
+    }
+    return str;
+}
+
+static String ParseModifiers(
+    register String str,
+    EventPtr event,
+    Boolean* error)
+{
+    register String start;
+    Boolean notFlag, exclusive, keysymAsMod;
+    Value maskBit;
+    XrmQuark Qmod;
+
+    ScanWhitespace(str);
+    start = str;
+    str = FetchModifierToken(str, &Qmod);
+    exclusive = FALSE;
+    if (start != str) {
+	if (Qmod == QNone) {
+	    event->event.modifierMask = ~0;
+	    event->event.modifiers = 0;
+	    ScanWhitespace(str);
+	    return str;
+	} else if (Qmod == QAny) { /*backward compatability*/
+	    event->event.modifierMask = 0;
+	    event->event.modifiers = AnyModifier;
+	    ScanWhitespace(str);
+	    return str;
+	}
+	str = start; /*if plain modifier, reset to beginning */
+    }
+    else while (*str == '!' || *str == ':') {
+        if (*str == '!') {
+             exclusive = TRUE;
+             str++;
+             ScanWhitespace(str);
+        }
+        if (*str == ':') {
+             event->event.standard = TRUE;
+             str++;
+             ScanWhitespace(str);
+        }
+    }
+
+    while (*str != '<') {
+        if (*str == '~') {
+             notFlag = TRUE;
+             str++;
+          } else
+              notFlag = FALSE;
+        if (*str == '@') {
+            keysymAsMod = TRUE;
+            str++;
+        }
+        else keysymAsMod = FALSE;
+	start = str;
+        str = FetchModifierToken(str, &Qmod);
+        if (start == str) {
+            Syntax("Modifier or '<' expected","");
+            *error = TRUE;
+            return PanicModeRecovery(str);
+        }
+         if (keysymAsMod) {
+             _XtParseKeysymMod(XrmQuarkToString(Qmod),
+			       &event->event.lateModifiers,
+			       notFlag,&maskBit, error);
+	     if (*error)
+                 return PanicModeRecovery(str);
+
+         } else
+  	     if (!_XtLookupModifier(Qmod, &event->event.lateModifiers,
+				    notFlag, &maskBit, FALSE)) {
+	         Syntax("Unknown modifier name:  ", XrmQuarkToString(Qmod));
+                 *error = TRUE;
+                 return PanicModeRecovery(str);
+             }
+        event->event.modifierMask |= maskBit;
+	if (notFlag) event->event.modifiers &= ~maskBit;
+	else event->event.modifiers |= maskBit;
+        ScanWhitespace(str);
+    }
+    if (exclusive) event->event.modifierMask = ~0;
+    return str;
+}
+
+static String ParseXtEventType(
+    register String str,
+    EventPtr event,
+    Cardinal *tmEventP,
+    Boolean* error)
+{
+    String start = str;
+    char eventTypeStrbuf[100];
+    char* eventTypeStr;
+
+    ScanAlphanumeric(str);
+    eventTypeStr = XtStackAlloc ((size_t)(str - start + 1), eventTypeStrbuf);
+    if (eventTypeStr == NULL) _XtAllocError (NULL);
+    (void) memmove(eventTypeStr, start, str-start);
+    eventTypeStr[str-start] = '\0';
+    *tmEventP = LookupTMEventType(eventTypeStr,error);
+    XtStackFree (eventTypeStr, eventTypeStrbuf);
+    if (*error)
+        return PanicModeRecovery(str);
+    event->event.eventType = events[*tmEventP].eventType;
+    return str;
+}
+
+static unsigned long StrToHex(
+    String str)
+{
+    register char   c;
+    register unsigned long    val = 0;
+
+    while ((c = *str)) {
+	if ('0' <= c && c <= '9') val = val*16+c-'0';
+	else if ('a' <= c && c <= 'z') val = val*16+c-'a'+10;
+	else if ('A' <= c && c <= 'Z') val = val*16+c-'A'+10;
+	else return 0;
+	str++;
+    }
+
+    return val;
+}
+
+static unsigned long StrToOct(
+    String str)
+{
+    register char c;
+    register unsigned long  val = 0;
+
+    while ((c = *str)) {
+        if ('0' <= c && c <= '7') val = val*8+c-'0'; else return 0;
+	str++;
+    }
+
+    return val;
+}
+
+static unsigned long StrToNum(
+    String str)
+{
+    register char c;
+    register unsigned long val = 0;
+
+    if (*str == '0') {
+	str++;
+	if (*str == 'x' || *str == 'X') return StrToHex(++str);
+	else return StrToOct(str);
+    }
+
+    while ((c = *str)) {
+	if ('0' <= c && c <= '9') val = val*10+c-'0';
+	else return 0;
+	str++;
+    }
+
+    return val;
+}
+
+static KeySym StringToKeySym(
+    String str,
+    Boolean *error)
+{
+    KeySym k;
+
+    if (str == NULL || *str == '\0') return (KeySym) 0;
+
+#ifndef NOTASCII
+    /* special case single character ASCII, for speed */
+    if (*(str+1) == '\0') {
+	if (' ' <= *str && *str <= '~') return XK_space + (*str - ' ');
+    }
+#endif
+
+    if ('0' <= *str && *str <= '9') return (KeySym) StrToNum(str);
+    k = XStringToKeysym(str);
+    if (k != NoSymbol) return k;
+
+#ifdef NOTASCII
+    /* fall-back case to preserve backwards compatibility; no-one
+     * should be relying upon this!
+     */
+    if (*(str+1) == '\0') return (KeySym) *str;
+#endif
+
+    Syntax("Unknown keysym name: ", str);
+    *error = TRUE;
+    return NoSymbol;
+}
+/* ARGSUSED */
+static void ParseModImmed(
+    Value value,
+    LateBindingsPtr* lateBindings,
+    Boolean notFlag,
+    Value* valueP)
+{
+    *valueP = value;
+}
+
+ /* is only valid with keysyms that have an _L and _R in their name;
+  * and ignores keysym lookup errors (i.e. assumes only valid keysyms)
+  */
+static void ParseModSym(
+    Value value,
+    LateBindingsPtr* lateBindings,
+    Boolean notFlag,
+    Value* valueP)
+{
+    register KeySym keysymL = (KeySym)value;
+    register KeySym keysymR = keysymL + 1; /* valid for supported keysyms */
+    StoreLateBindings(keysymL,notFlag,keysymR,notFlag,lateBindings);
+    *valueP = 0;
+}
+
+#ifdef sparc
+/*
+ * The stupid optimizer in SunOS 4.0.3 and below generates bogus code that
+ * causes the value of the most recently used variable to be returned instead
+ * of the value passed in.
+ */
+static String stupid_optimizer_kludge;
+#define BROKEN_OPTIMIZER_HACK(val) stupid_optimizer_kludge = (val)
+#else
+#define BROKEN_OPTIMIZER_HACK(val) val
+#endif
+
+/* ARGSUSED */
+static String ParseImmed(
+    register String str,
+    register Opaque closure,
+    register EventPtr event,
+    Boolean* error)
+{
+    event->event.eventCode = (unsigned long)closure;
+    event->event.eventCodeMask = ~0UL;
+
+    return BROKEN_OPTIMIZER_HACK(str);
+}
+
+/* ARGSUSED */
+static String ParseAddModifier(
+    register String str,
+    register Opaque closure,
+    register EventPtr event,
+    Boolean* error)
+{
+    register unsigned long modval = (unsigned long)closure;
+    event->event.modifiers |= modval;
+    if (modval != AnyButtonMask) /* AnyButtonMask is don't-care mask */
+	event->event.modifierMask |= modval;
+
+    return BROKEN_OPTIMIZER_HACK(str);
+}
+
+
+static String ParseKeyAndModifiers(
+    String str,
+    Opaque closure,
+    EventPtr event,
+    Boolean* error)
+{
+    str = ParseKeySym(str, closure, event,error);
+    if ((unsigned long) closure == 0) {
+	Value metaMask; /* unused */
+	(void) _XtLookupModifier(QMeta, &event->event.lateModifiers, FALSE,
+				 &metaMask, FALSE);
+    } else {
+	event->event.modifiers |= (unsigned long) closure;
+	event->event.modifierMask |= (unsigned long) closure;
+    }
+    return str;
+}
+
+/*ARGSUSED*/
+static String ParseKeySym(
+    register String str,
+    Opaque closure,
+    EventPtr event,
+    Boolean* error)
+{
+    char *start;
+    char keySymNamebuf[100];
+    char* keySymName;
+
+    ScanWhitespace(str);
+
+    if (*str == '\\') {
+	keySymName = keySymNamebuf;
+	str++;
+	keySymName[0] = *str;
+	if (*str != '\0' && !IsNewline(*str)) str++;
+	keySymName[1] = '\0';
+	event->event.eventCode = StringToKeySym(keySymName, error);
+	event->event.eventCodeMask = ~0L;
+    } else if (*str == ',' || *str == ':' ||
+             /* allow leftparen to be single char symbol,
+              * for backwards compatibility
+              */
+             (*str == '(' && *(str+1) >= '0' && *(str+1) <= '9')) {
+	keySymName = keySymNamebuf; /* just so we can stackfree it later */
+	/* no detail */
+	event->event.eventCode = 0L;
+        event->event.eventCodeMask = 0L;
+    } else {
+	start = str;
+	while (
+		*str != ','
+		&& *str != ':'
+		&& *str != ' '
+		&& *str != '\t'
+                && !IsNewline(*str)
+                && (*str != '(' || *(str+1) <= '0' || *(str+1) >= '9')
+		&& *str != '\0') str++;
+	keySymName = XtStackAlloc ((size_t)(str - start + 1), keySymNamebuf);
+	(void) memmove(keySymName, start, str-start);
+	keySymName[str-start] = '\0';
+	event->event.eventCode = StringToKeySym(keySymName, error);
+	event->event.eventCodeMask = ~0L;
+    }
+    if (*error) {
+	/* We never get here when keySymName hasn't been allocated */
+	if (keySymName[0] == '<') {
+	    /* special case for common error */
+	    XtWarningMsg(XtNtranslationParseError, "missingComma",
+			 XtCXtToolkitError,
+		     "... possibly due to missing ',' in event sequence.",
+		     (String*)NULL, (Cardinal*)NULL);
+	}
+	XtStackFree (keySymName, keySymNamebuf);
+	return PanicModeRecovery(str);
+    }
+    if (event->event.standard)
+	event->event.matchEvent = _XtMatchUsingStandardMods;
+    else
+	event->event.matchEvent = _XtMatchUsingDontCareMods;
+
+    XtStackFree (keySymName, keySymNamebuf);
+
+    return str;
+}
+
+static String ParseTable(
+    register String str,
+    Opaque closure,
+    EventPtr event,
+    Boolean* error)
+{
+    register String start = str;
+    register XrmQuark signature;
+    NameValueTable table = (NameValueTable) closure;
+    char tableSymName[100];
+
+    event->event.eventCode = 0L;
+    ScanAlphanumeric(str);
+    if (str == start) {event->event.eventCodeMask = 0L; return str; }
+    if (str-start >= 99) {
+	Syntax("Invalid Detail Type (string is too long).", "");
+	*error = TRUE;
+	return str;
+    }
+    (void) memmove(tableSymName, start, str-start);
+    tableSymName[str-start] = '\0';
+    signature = StringToQuark(tableSymName);
+    for (; table->signature != NULLQUARK; table++)
+	if (table->signature == signature) {
+	    event->event.eventCode = table->value;
+	    event->event.eventCodeMask = ~0L;
+	    return str;
+	}
+
+    Syntax("Unknown Detail Type:  ", tableSymName);
+    *error = TRUE;
+    return PanicModeRecovery(str);
+}
+
+/*ARGSUSED*/
+static String ParseNone(
+    String str,
+    Opaque closure,
+    EventPtr event,
+    Boolean* error)
+{
+    event->event.eventCode = 0;
+    event->event.eventCodeMask = 0;
+
+    return BROKEN_OPTIMIZER_HACK(str);
+}
+
+/*ARGSUSED*/
+static String ParseAtom(
+    String str,
+    Opaque closure,
+    EventPtr event,
+    Boolean* error)
+{
+    ScanWhitespace(str);
+
+    if (*str == ',' || *str == ':') {
+	/* no detail */
+	event->event.eventCode = 0L;
+        event->event.eventCodeMask = 0L;
+    } else {
+	char *start, atomName[1000];
+	start = str;
+	while (
+		*str != ','
+		&& *str != ':'
+		&& *str != ' '
+		&& *str != '\t'
+                && !IsNewline(*str)
+		&& *str != '\0') str++;
+	if (str-start >= 999) {
+	    Syntax( "Atom name must be less than 1000 characters long.", "" );
+	    *error = TRUE;
+	    return str;
+	}
+	(void) memmove(atomName, start, str-start);
+	atomName[str-start] = '\0';
+	event->event.eventCode = XrmStringToQuark(atomName);
+	event->event.matchEvent = _XtMatchAtom;
+    }
+    return str;
+}
+
+static ModifierMask buttonModifierMasks[] = {
+    0, Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask
+};
+static String ParseRepeat(String, int *, Boolean *, Boolean *);
+
+static String ParseEvent(
+    register String str,
+    EventPtr	event,
+    int*	reps,
+    Boolean*	plus,
+    Boolean* error)
+{
+    Cardinal	tmEvent;
+
+    str = ParseModifiers(str, event,error);
+    if (*error) return str;
+    if (*str != '<') {
+         Syntax("Missing '<' while parsing event type.","");
+         *error = TRUE;
+         return PanicModeRecovery(str);
+    }
+    else str++;
+    str = ParseXtEventType(str, event, &tmEvent,error);
+    if (*error) return str;
+    if (*str != '>'){
+         Syntax("Missing '>' while parsing event type","");
+         *error = TRUE;
+         return PanicModeRecovery(str);
+    }
+    else str++;
+    if (*str == '(') {
+	str = ParseRepeat(str, reps, plus, error);
+	if (*error) return str;
+    }
+    str = (*(events[tmEvent].parseDetail))(
+        str, events[tmEvent].closure, event,error);
+    if (*error) return str;
+
+/* gross hack! ||| this kludge is related to the X11 protocol deficiency w.r.t.
+ * modifiers in grabs.
+ */
+    if ((event->event.eventType == ButtonRelease)
+	&& (event->event.modifiers | event->event.modifierMask) /* any */
+        && (event->event.modifiers != AnyModifier))
+    {
+	event->event.modifiers
+	    |= buttonModifierMasks[event->event.eventCode];
+	/* the button that is going up will always be in the modifiers... */
+    }
+
+    return str;
+}
+
+static String ParseQuotedStringEvent(
+    register String str,
+    register EventPtr event,
+    Boolean *error)
+{
+    Value metaMask;
+    char	s[2];
+
+    if (*str=='^') {
+	str++;
+	event->event.modifiers = ControlMask;
+    } else if (*str == '$') {
+	str++;
+	(void) _XtLookupModifier(QMeta, &event->event.lateModifiers, FALSE,
+				 &metaMask, FALSE);
+    }
+    if (*str == '\\')
+	str++;
+    s[0] = *str;
+    s[1] = '\0';
+    if (*str != '\0' && !IsNewline(*str)) str++;
+    event->event.eventType = KeyPress;
+    event->event.eventCode = StringToKeySym(s, error);
+    if (*error) return PanicModeRecovery(str);
+    event->event.eventCodeMask = ~0L;
+    event->event.matchEvent = _XtMatchUsingStandardMods;
+    event->event.standard = TRUE;
+
+    return str;
+}
+
+
+static EventSeqRec timerEventRec = {
+    {0, 0, NULL, _XtEventTimerEventType, 0L, 0L, NULL, False},
+    /* (StatePtr) -1 */ NULL,
+    NULL,
+    NULL
+};
+
+static void RepeatDown(
+    EventPtr *eventP,
+    int reps,
+    ActionPtr **actionsP)
+{
+    EventRec upEventRec;
+    register EventPtr event, downEvent;
+    EventPtr upEvent = &upEventRec;
+    register int i;
+
+    downEvent = event = *eventP;
+    *upEvent = *downEvent;
+    upEvent->event.eventType = ((event->event.eventType == ButtonPress) ?
+	ButtonRelease : KeyRelease);
+    if ((upEvent->event.eventType == ButtonRelease)
+	&& (upEvent->event.modifiers != AnyModifier)
+        && (upEvent->event.modifiers | upEvent->event.modifierMask))
+	upEvent->event.modifiers
+	    |= buttonModifierMasks[event->event.eventCode];
+
+    if (event->event.lateModifiers)
+	event->event.lateModifiers->ref_count += (reps - 1) * 2;
+
+    for (i=1; i<reps; i++) {
+
+	/* up */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *upEvent;
+
+	/* timer */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = timerEventRec;
+
+	/* down */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *downEvent;
+
+    }
+
+    event->next = NULL;
+    *eventP = event;
+    *actionsP = &event->actions;
+}
+
+static void RepeatDownPlus(
+    EventPtr *eventP,
+    int reps,
+    ActionPtr **actionsP)
+{
+    EventRec upEventRec;
+    register EventPtr event, downEvent, lastDownEvent = NULL;
+    EventPtr upEvent = &upEventRec;
+    register int i;
+
+    downEvent = event = *eventP;
+    *upEvent = *downEvent;
+    upEvent->event.eventType = ((event->event.eventType == ButtonPress) ?
+	ButtonRelease : KeyRelease);
+    if ((upEvent->event.eventType == ButtonRelease)
+	&& (upEvent->event.modifiers != AnyModifier)
+        && (upEvent->event.modifiers | upEvent->event.modifierMask))
+	upEvent->event.modifiers
+	    |= buttonModifierMasks[event->event.eventCode];
+
+    if (event->event.lateModifiers)
+	event->event.lateModifiers->ref_count += reps * 2 - 1;
+
+    for (i=0; i<reps; i++) {
+
+	if (i > 0) {
+	/* down */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *downEvent;
+	}
+	lastDownEvent = event;
+
+	/* up */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *upEvent;
+
+	/* timer */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = timerEventRec;
+
+    }
+
+    event->next = lastDownEvent;
+    *eventP = event;
+    *actionsP = &lastDownEvent->actions;
+}
+
+static void RepeatUp(
+    EventPtr *eventP,
+    int reps,
+    ActionPtr **actionsP)
+{
+    EventRec upEventRec;
+    register EventPtr event, downEvent;
+    EventPtr upEvent = &upEventRec;
+    register int i;
+
+    /* the event currently sitting in *eventP is an "up" event */
+    /* we want to make it a "down" event followed by an "up" event, */
+    /* so that sequence matching on the "state" side works correctly. */
+
+    downEvent = event = *eventP;
+    *upEvent = *downEvent;
+    downEvent->event.eventType = ((event->event.eventType == ButtonRelease) ?
+	ButtonPress : KeyPress);
+    if ((downEvent->event.eventType == ButtonPress)
+	&& (downEvent->event.modifiers != AnyModifier)
+        && (downEvent->event.modifiers | downEvent->event.modifierMask))
+	downEvent->event.modifiers
+	    &= ~buttonModifierMasks[event->event.eventCode];
+
+    if (event->event.lateModifiers)
+	event->event.lateModifiers->ref_count += reps * 2 - 1;
+
+    /* up */
+    event->next = XtNew(EventSeqRec);
+    event = event->next;
+    *event = *upEvent;
+
+    for (i=1; i<reps; i++) {
+
+	/* timer */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = timerEventRec;
+
+	/* down */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *downEvent;
+
+	/* up */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *upEvent;
+
+	}
+
+    event->next = NULL;
+    *eventP = event;
+    *actionsP = &event->actions;
+}
+
+static void RepeatUpPlus(
+    EventPtr *eventP,
+    int reps,
+    ActionPtr **actionsP)
+{
+    EventRec upEventRec;
+    register EventPtr event, downEvent, lastUpEvent = NULL;
+    EventPtr upEvent = &upEventRec;
+    register int i;
+
+    /* the event currently sitting in *eventP is an "up" event */
+    /* we want to make it a "down" event followed by an "up" event, */
+    /* so that sequence matching on the "state" side works correctly. */
+
+    downEvent = event = *eventP;
+    *upEvent = *downEvent;
+    downEvent->event.eventType = ((event->event.eventType == ButtonRelease) ?
+	ButtonPress : KeyPress);
+    if ((downEvent->event.eventType == ButtonPress)
+	&& (downEvent->event.modifiers != AnyModifier)
+        && (downEvent->event.modifiers | downEvent->event.modifierMask))
+	downEvent->event.modifiers
+	    &= ~buttonModifierMasks[event->event.eventCode];
+
+    if (event->event.lateModifiers)
+	event->event.lateModifiers->ref_count += reps * 2;
+
+    for (i=0; i<reps; i++) {
+
+	/* up */
+	event->next = XtNew(EventSeqRec);
+	lastUpEvent = event = event->next;
+	*event = *upEvent;
+
+	/* timer */
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = timerEventRec;
+
+	/* down */
+	event->next = XtNew(EventSeqRec);
+        event = event->next;
+	*event = *downEvent;
+
+	}
+
+    event->next = lastUpEvent;
+    *eventP = event;
+    *actionsP = &lastUpEvent->actions;
+}
+
+static void RepeatOther(
+    EventPtr *eventP,
+    int reps,
+    ActionPtr **actionsP)
+{
+    register EventPtr event, tempEvent;
+    register int i;
+
+    tempEvent = event = *eventP;
+
+    if (event->event.lateModifiers)
+	event->event.lateModifiers->ref_count += reps - 1;
+
+    for (i=1; i<reps; i++) {
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *tempEvent;
+    }
+
+    *eventP = event;
+    *actionsP = &event->actions;
+}
+
+static void RepeatOtherPlus(
+    EventPtr *eventP,
+    int reps,
+    ActionPtr **actionsP)
+{
+    register EventPtr event, tempEvent;
+    register int i;
+
+    tempEvent = event = *eventP;
+
+    if (event->event.lateModifiers)
+	event->event.lateModifiers->ref_count += reps - 1;
+
+    for (i=1; i<reps; i++) {
+	event->next = XtNew(EventSeqRec);
+	event = event->next;
+	*event = *tempEvent;
+    }
+
+    event->next = event;
+    *eventP = event;
+    *actionsP = &event->actions;
+}
+
+static void RepeatEvent(
+    EventPtr *eventP,
+    int reps,
+    Boolean plus,
+    ActionPtr **actionsP)
+{
+    switch ((*eventP)->event.eventType) {
+
+	case ButtonPress:
+	case KeyPress:
+	    if (plus) RepeatDownPlus(eventP, reps, actionsP);
+	    else RepeatDown(eventP, reps, actionsP);
+	    break;
+
+	case ButtonRelease:
+	case KeyRelease:
+	    if (plus) RepeatUpPlus(eventP, reps, actionsP);
+	    else RepeatUp(eventP, reps, actionsP);
+	    break;
+
+	default:
+	    if (plus) RepeatOtherPlus(eventP, reps, actionsP);
+	    else RepeatOther(eventP, reps, actionsP);
+    }
+}
+
+static String ParseRepeat(
+    register String str,
+    int	*reps,
+    Boolean *plus, Boolean *error)
+{
+
+    /*** Parse the repetitions, for double click etc... ***/
+    if (*str != '(' || !(isdigit(str[1]) || str[1] == '+' || str[1] == ')'))
+	return str;
+    str++;
+    if (isdigit(*str)) {
+	String start = str;
+	char repStr[7];
+	size_t len;
+
+	ScanNumeric(str);
+	len = (str - start);
+	if (len < sizeof repStr) {
+	    (void) memmove(repStr, start, len);
+	    repStr[len] = '\0';
+	    *reps = StrToNum(repStr);
+	} else {
+	    Syntax("Repeat count too large.", "");
+	    *error = TRUE;
+	    return str;
+	}
+    }
+    if (*reps == 0) {
+	Syntax("Missing repeat count.","");
+	*error = True;
+	return str;
+    }
+
+    if (*str == '+') {
+	*plus = TRUE;
+	str++;
+    }
+    if (*str == ')')
+	str++;
+    else {
+	Syntax("Missing ')'.","");
+	*error = TRUE;
+    }
+
+    return str;
+}
+
+/***********************************************************************
+ * ParseEventSeq
+ * Parses the left hand side of a translation table production
+ * up to, and consuming the ":".
+ * Takes a pointer to a char* (where to start parsing) and returns an
+ * event seq (in a passed in variable), having updated the String
+ **********************************************************************/
+
+static String ParseEventSeq(
+    register String str,
+    EventSeqPtr *eventSeqP,
+    ActionPtr	**actionsP,
+    Boolean *error)
+{
+    EventSeqPtr *nextEvent = eventSeqP;
+
+    *eventSeqP = NULL;
+
+    while ( *str != '\0' && !IsNewline(*str)) {
+	static Event	nullEvent =
+             {0, 0,NULL, 0, 0L, 0L,_XtRegularMatch,FALSE};
+	EventPtr	event;
+
+	ScanWhitespace(str);
+
+	if (*str == '"') {
+	    str++;
+	    while (*str != '"' && *str != '\0' && !IsNewline(*str)) {
+                event = XtNew(EventRec);
+                event->event = nullEvent;
+                event->state = /* (StatePtr) -1 */ NULL;
+                event->next = NULL;
+                event->actions = NULL;
+		str = ParseQuotedStringEvent(str, event,error);
+		if (*error) {
+		    XtWarningMsg(XtNtranslationParseError, "nonLatin1",
+			XtCXtToolkitError,
+			"... probably due to non-Latin1 character in quoted string",
+			(String*)NULL, (Cardinal*)NULL);
+		    return PanicModeRecovery(str);
+		}
+		*nextEvent = event;
+		*actionsP = &event->actions;
+		nextEvent = &event->next;
+	    }
+	    if (*str != '"') {
+                Syntax("Missing '\"'.","");
+                *error = TRUE;
+                return PanicModeRecovery(str);
+             }
+             else str++;
+	} else {
+	    int reps = 0;
+	    Boolean plus = FALSE;
+
+            event = XtNew(EventRec);
+            event->event = nullEvent;
+            event->state = /* (StatePtr) -1 */ NULL;
+            event->next = NULL;
+            event->actions = NULL;
+
+	    str = ParseEvent(str, event, &reps, &plus, error);
+            if (*error) return str;
+	    *nextEvent = event;
+	    *actionsP = &event->actions;
+	    if (reps > 1 || plus)
+		RepeatEvent(&event, reps, plus, actionsP);
+	    nextEvent = &event->next;
+	}
+	ScanWhitespace(str);
+        if (*str == ':') break;
+        else {
+            if (*str != ',') {
+                Syntax("',' or ':' expected while parsing event sequence.","");
+                *error = TRUE;
+                return PanicModeRecovery(str);
+	    } else str++;
+        }
+    }
+
+    if (*str != ':') {
+        Syntax("Missing ':'after event sequence.","");
+        *error = TRUE;
+        return PanicModeRecovery(str);
+    } else str++;
+
+    return str;
+}
+
+
+static String ParseActionProc(
+    register String str,
+    XrmQuark *actionProcNameP,
+    Boolean *error)
+{
+    register String start = str;
+    char procName[200];
+
+    str = ScanIdent(str);
+    if (str-start >= 199) {
+	Syntax("Action procedure name is longer than 199 chars","");
+	*error = TRUE;
+	return str;
+    }
+    (void) memmove(procName, start, str-start);
+    procName[str-start] = '\0';
+    *actionProcNameP = XrmStringToQuark( procName );
+    return str;
+}
+
+
+static String ParseString(
+    register String str,
+    String *strP)
+{
+    register String start;
+
+    if (*str == '"') {
+	register unsigned prev_len, len;
+	str++;
+	start = str;
+	*strP = NULL;
+	prev_len = 0;
+
+	while (*str != '"' && *str != '\0') {
+	    /* \"  produces double quote embedded in a quoted parameter
+	     * \\" produces backslash as last character of a quoted parameter
+	     */
+	    if (*str == '\\' &&
+		(*(str+1) == '"' || (*(str+1) == '\\' && *(str+2) == '"'))) {
+		len = prev_len + (str-start+2);
+		*strP = XtRealloc(*strP, len);
+		(void) memmove(*strP + prev_len, start, str-start);
+		prev_len = len-1;
+		str++;
+		(*strP)[prev_len-1] = *str;
+		(*strP)[prev_len] = '\0';
+		start = str+1;
+	    }
+	    str++;
+	}
+	len = prev_len + (str-start+1);
+	*strP = XtRealloc(*strP, len);
+	(void) memmove( *strP + prev_len, start, str-start);
+	(*strP)[len-1] = '\0';
+	if (*str == '"') str++; else
+            XtWarningMsg(XtNtranslationParseError,"parseString",
+                      XtCXtToolkitError,"Missing '\"'.",
+		      (String *)NULL, (Cardinal *)NULL);
+    } else {
+	/* scan non-quoted string, stop on whitespace, ',' or ')' */
+	start = str;
+	while (*str != ' '
+		&& *str != '\t'
+		&& *str != ','
+		&& *str != ')'
+                && !IsNewline(*str)
+		&& *str != '\0') str++;
+	*strP = __XtMalloc((unsigned)(str-start+1));
+	(void) memmove(*strP, start, str-start);
+	(*strP)[str-start] = '\0';
+    }
+    return str;
+}
+
+
+static String ParseParamSeq(
+    register String str,
+    String **paramSeqP,
+    Cardinal *paramNumP)
+{
+    typedef struct _ParamRec *ParamPtr;
+    typedef struct _ParamRec {
+	ParamPtr next;
+	String	param;
+    } ParamRec;
+
+    ParamPtr params = NULL;
+    register Cardinal num_params = 0;
+    register Cardinal i;
+
+    ScanWhitespace(str);
+    while (*str != ')' && *str != '\0' && !IsNewline(*str)) {
+	String newStr;
+	str = ParseString(str, &newStr);
+	if (newStr != NULL) {
+	    ParamPtr temp = (ParamRec*)
+		ALLOCATE_LOCAL( (unsigned)sizeof(ParamRec) );
+	    if (temp == NULL) _XtAllocError (NULL);
+
+	    num_params++;
+	    temp->next = params;
+	    params = temp;
+	    temp->param = newStr;
+	    ScanWhitespace(str);
+	    if (*str == ',') {
+		str++;
+		ScanWhitespace(str);
+	    }
+	}
+    }
+
+    if (num_params != 0) {
+	String *paramP = (String *)
+		__XtMalloc( (unsigned)(num_params+1) * sizeof(String) );
+	*paramSeqP = paramP;
+	*paramNumP = num_params;
+	paramP += num_params; /* list is LIFO right now */
+	*paramP-- = NULL;
+	for (i=0; i < num_params; i++) {
+	    ParamPtr next = params->next;
+	    *paramP-- = params->param;
+	    DEALLOCATE_LOCAL( (char *)params );
+	    params = next;
+	}
+    } else {
+	*paramSeqP = NULL;
+	*paramNumP = 0;
+    }
+
+    return str;
+}
+
+static String ParseAction(
+    String str,
+    ActionPtr actionP,
+    XrmQuark* quarkP,
+    Boolean* error)
+{
+    str = ParseActionProc(str, quarkP, error);
+    if (*error) return str;
+
+    if (*str == '(') {
+	str++;
+	str = ParseParamSeq(str, &actionP->params, &actionP->num_params);
+    } else {
+        Syntax("Missing '(' while parsing action sequence","");
+        *error = TRUE;
+        return str;
+    }
+    if (*str == ')') str++;
+    else{
+        Syntax("Missing ')' while parsing action sequence","");
+        *error = TRUE;
+        return str;
+    }
+    return str;
+}
+
+
+static String ParseActionSeq(
+    TMParseStateTree   	parseTree,
+    String 		str,
+    ActionPtr 		*actionsP,
+    Boolean		*error)
+{
+    ActionPtr *nextActionP = actionsP;
+
+    *actionsP = NULL;
+    while (*str != '\0' && !IsNewline(*str)) {
+	register ActionPtr	action;
+	XrmQuark quark;
+
+	action = XtNew(ActionRec);
+        action->params = NULL;
+        action->num_params = 0;
+        action->next = NULL;
+
+	str = ParseAction(str, action, &quark, error);
+	if (*error) return PanicModeRecovery(str);
+
+	action->idx = _XtGetQuarkIndex(parseTree, quark);
+	ScanWhitespace(str);
+	*nextActionP = action;
+	nextActionP = &action->next;
+    }
+    if (IsNewline(*str)) str++;
+    ScanWhitespace(str);
+    return str;
+}
+
+
+static void ShowProduction(
+  String currentProduction)
+{
+    Cardinal num_params = 1;
+    String params[1];
+    size_t len;
+    char *eol, *production, productionbuf[500];
+
+#ifdef __UNIXOS2__
+    eol = strchr(currentProduction, '\r');
+    if (!eol) /* try '\n' as well below */
+#endif
+        eol = strchr(currentProduction, '\n');
+    if (eol) len = eol - currentProduction;
+    else len = strlen (currentProduction);
+    production = XtStackAlloc (len + 1, productionbuf);
+    if (production == NULL) _XtAllocError (NULL);
+    (void) memmove(production, currentProduction, len);
+    production[len] = '\0';
+
+    params[0] = production;
+    XtWarningMsg(XtNtranslationParseError, "showLine", XtCXtToolkitError,
+		 "... found while parsing '%s'", params, &num_params);
+
+    XtStackFree (production, productionbuf);
+}
+
+/***********************************************************************
+ * ParseTranslationTableProduction
+ * Parses one line of event bindings.
+ ***********************************************************************/
+
+static String ParseTranslationTableProduction(
+    TMParseStateTree	 parseTree,
+    register String str,
+    Boolean* error)
+{
+    EventSeqPtr	eventSeq = NULL;
+    ActionPtr	*actionsP;
+    String	production = str;
+
+    actionsP = NULL;
+    str = ParseEventSeq(str, &eventSeq, &actionsP,error);
+    if (*error == TRUE) {
+	ShowProduction(production);
+        FreeEventSeq(eventSeq);
+        return (str);
+    }
+    ScanWhitespace(str);
+    str = ParseActionSeq(parseTree, str, actionsP, error);
+    if (*error == TRUE) {
+	ShowProduction(production);
+        FreeEventSeq(eventSeq);
+        return (str);
+    }
+
+    _XtAddEventSeqToStateTree(eventSeq, parseTree);
+    FreeEventSeq(eventSeq);
+    return (str);
+}
+
+static String CheckForPoundSign(
+    String str,
+    _XtTranslateOp defaultOp,
+    _XtTranslateOp *actualOpRtn)
+{
+    String start;
+    char operation[20];
+    _XtTranslateOp opType;
+
+    opType = defaultOp;
+    ScanWhitespace(str);
+    if (*str == '#') {
+	int len;
+	str++;
+	start = str;
+	str = ScanIdent(str);
+	len = MIN(19, str-start);
+	(void) memmove(operation, start, len);
+	operation[len] = '\0';
+	if (!strcmp(operation,"replace"))
+	  opType = XtTableReplace;
+	else if (!strcmp(operation,"augment"))
+	  opType = XtTableAugment;
+	else if (!strcmp(operation,"override"))
+	  opType = XtTableOverride;
+	ScanWhitespace(str);
+	if (IsNewline(*str)) {
+	    str++;
+	    ScanWhitespace(str);
+	}
+    }
+    *actualOpRtn = opType;
+    return str;
+}
+
+static XtTranslations ParseTranslationTable(
+    String 	source,
+    Boolean	isAccelerator,
+    _XtTranslateOp defaultOp,
+    Boolean*	error)
+{
+    XtTranslations		xlations;
+    TMStateTree			stateTrees[8];
+    TMParseStateTreeRec		parseTreeRec, *parseTree = &parseTreeRec;
+    XrmQuark			stackQuarks[200];
+    TMBranchHeadRec		stackBranchHeads[200];
+    StatePtr			stackComplexBranchHeads[200];
+    _XtTranslateOp		actualOp;
+
+    if (source == NULL)
+      return (XtTranslations)NULL;
+
+    source = CheckForPoundSign(source, defaultOp, &actualOp);
+    if (isAccelerator && actualOp == XtTableReplace)
+	actualOp = defaultOp;
+
+    parseTree->isSimple = TRUE;
+    parseTree->mappingNotifyInterest = FALSE;
+    parseTree->isAccelerator = isAccelerator;
+    parseTree->isStackBranchHeads =
+      parseTree->isStackQuarks =
+	parseTree->isStackComplexBranchHeads = TRUE;
+
+    parseTree->numQuarks =
+      parseTree->numBranchHeads =
+	parseTree->numComplexBranchHeads = 0;
+
+    parseTree->quarkTblSize =
+      parseTree->branchHeadTblSize =
+	parseTree->complexBranchHeadTblSize = 200;
+
+    parseTree->quarkTbl = stackQuarks;
+    parseTree->branchHeadTbl = stackBranchHeads;
+    parseTree->complexBranchHeadTbl = stackComplexBranchHeads;
+
+    while (source != NULL && *source != '\0') {
+	source =  ParseTranslationTableProduction(parseTree, source, error);
+	if (*error == TRUE) break;
+    }
+    stateTrees[0] = _XtParseTreeToStateTree(parseTree);
+
+    if (!parseTree->isStackQuarks)
+      XtFree((char *)parseTree->quarkTbl);
+    if (!parseTree->isStackBranchHeads)
+      XtFree((char *)parseTree->branchHeadTbl);
+    if (!parseTree->isStackComplexBranchHeads)
+      XtFree((char *)parseTree->complexBranchHeadTbl);
+
+    xlations = _XtCreateXlations(stateTrees, 1, NULL, NULL);
+    xlations->operation = actualOp;
+
+#ifdef notdef
+    XtFree(stateTrees);
+#endif /* notdef */
+    return xlations;
+}
+
+/*** public procedures ***/
+
+/*ARGSUSED*/
+Boolean XtCvtStringToAcceleratorTable(
+    Display*	dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr from,
+    XrmValuePtr to,
+    XtPointer	*closure)
+{
+    String str;
+    Boolean error = FALSE;
+
+    if (*num_args != 0)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  "wrongParameters","cvtStringToAcceleratorTable",XtCXtToolkitError,
+          "String to AcceleratorTable conversion needs no extra arguments",
+	  (String *)NULL, (Cardinal *)NULL);
+    str = (String)(from->addr);
+    if (str == NULL) {
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  "badParameters","cvtStringToAcceleratorTable",XtCXtToolkitError,
+          "String to AcceleratorTable conversion needs string",
+	  (String *)NULL, (Cardinal *)NULL);
+	return FALSE;
+    }
+    if (to->addr != NULL) {
+	if (to->size < sizeof(XtAccelerators)) {
+	    to->size = sizeof(XtAccelerators);
+	    return FALSE;
+	}
+	*(XtAccelerators*)to->addr =
+	    (XtAccelerators) ParseTranslationTable(str, TRUE, XtTableAugment, &error);
+    }
+    else {
+	static XtAccelerators staticStateTable;
+	staticStateTable =
+	    (XtAccelerators) ParseTranslationTable(str, TRUE, XtTableAugment, &error);
+	to->addr = (XPointer) &staticStateTable;
+	to->size = sizeof(XtAccelerators);
+    }
+    if (error == TRUE)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  "parseError","cvtStringToAcceleratorTable",XtCXtToolkitError,
+          "String to AcceleratorTable conversion encountered errors",
+	  (String *)NULL, (Cardinal *)NULL);
+    return (error != TRUE);
+}
+
+
+/*ARGSUSED*/
+Boolean
+XtCvtStringToTranslationTable(
+    Display	*dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr from,
+    XrmValuePtr to,
+    XtPointer	*closure_ret)
+{
+    String str;
+    Boolean error = FALSE;
+
+    if (*num_args != 0)
+      XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	    "wrongParameters","cvtStringToTranslationTable",XtCXtToolkitError,
+	    "String to TranslationTable conversion needs no extra arguments",
+	    (String *)NULL, (Cardinal *)NULL);
+    str = (String)(from->addr);
+    if (str == NULL) {
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  "badParameters","cvtStringToTranslation",XtCXtToolkitError,
+          "String to TranslationTable conversion needs string",
+	  (String *)NULL, (Cardinal *)NULL);
+	return FALSE;
+    }
+    if (to->addr != NULL) {
+	if (to->size < sizeof(XtTranslations)) {
+	    to->size = sizeof(XtTranslations);
+	    return FALSE;
+	}
+	*(XtTranslations*)to->addr =
+	    ParseTranslationTable(str, FALSE, XtTableReplace, &error);
+    }
+    else {
+	static XtTranslations staticStateTable;
+	staticStateTable =
+	    ParseTranslationTable(str, FALSE, XtTableReplace, &error);
+	to->addr = (XPointer) &staticStateTable;
+	to->size = sizeof(XtTranslations);
+    }
+    if (error == TRUE)
+        XtAppWarningMsg(XtDisplayToApplicationContext(dpy),
+	  "parseError","cvtStringToTranslationTable",XtCXtToolkitError,
+          "String to TranslationTable conversion encountered errors",
+	  (String *)NULL, (Cardinal *)NULL);
+    return (error != TRUE);
+}
+
+
+/*
+ * Parses a user's or applications translation table
+ */
+XtAccelerators XtParseAcceleratorTable(
+    _Xconst char* source)
+{
+    Boolean error = FALSE;
+    XtAccelerators ret =
+	(XtAccelerators) ParseTranslationTable ((char *)source, TRUE, XtTableAugment, &error);
+    if (error == TRUE)
+        XtWarningMsg ("parseError", "cvtStringToAcceleratorTable",
+	  XtCXtToolkitError,
+          "String to AcceleratorTable conversion encountered errors",
+	  (String *)NULL, (Cardinal *)NULL);
+    return ret;
+}
+
+XtTranslations XtParseTranslationTable(
+    _Xconst char* source)
+{
+    Boolean error = FALSE;
+    XtTranslations ret = ParseTranslationTable((char *)source, FALSE, XtTableReplace, &error);
+    if (error == TRUE)
+        XtWarningMsg ("parseError",
+	  "cvtStringToTranslationTable", XtCXtToolkitError,
+          "String to TranslationTable conversion encountered errors",
+	  (String *)NULL, (Cardinal *)NULL);
+    return ret;
+}
+
+void _XtTranslateInitialize(void)
+{
+    LOCK_PROCESS;
+    if (initialized) {
+	XtWarningMsg("translationError","xtTranslateInitialize",
+                  XtCXtToolkitError,"Initializing Translation manager twice.",
+                    (String *)NULL, (Cardinal *)NULL);
+	UNLOCK_PROCESS;
+	return;
+    }
+
+    initialized = TRUE;
+    UNLOCK_PROCESS;
+    QMeta = XrmPermStringToQuark("Meta");
+    QCtrl = XrmPermStringToQuark("Ctrl");
+    QNone = XrmPermStringToQuark("None");
+    QAny  = XrmPermStringToQuark("Any");
+
+    Compile_XtEventTable( events, XtNumber(events) );
+    Compile_XtModifierTable( modifiers, XtNumber(modifiers) );
+    CompileNameValueTable( buttonNames );
+    CompileNameValueTable( notifyModes );
+    CompileNameValueTable( motionDetails );
+#if 0
+    CompileNameValueTable( notifyDetail );
+    CompileNameValueTable( visibilityNotify );
+    CompileNameValueTable( circulation );
+    CompileNameValueTable( propertyChanged );
+#endif
+    CompileNameValueTable( mappingNotify );
+}
+
+void _XtAddTMConverters(
+    ConverterTable table)
+{
+     _XtTableAddConverter(table,
+	     _XtQString,
+	     XrmPermStringToQuark(XtRTranslationTable),
+ 	     XtCvtStringToTranslationTable, (XtConvertArgList) NULL,
+	     (Cardinal)0, True, CACHED, _XtFreeTranslations, True);
+     _XtTableAddConverter(table, _XtQString,
+	     XrmPermStringToQuark(XtRAcceleratorTable),
+ 	     XtCvtStringToAcceleratorTable, (XtConvertArgList) NULL,
+	     (Cardinal)0, True, CACHED, _XtFreeTranslations, True);
+     _XtTableAddConverter(table,
+	     XrmPermStringToQuark( _XtRStateTablePair ),
+	     XrmPermStringToQuark(XtRTranslationTable),
+ 	     _XtCvtMergeTranslations, (XtConvertArgList) NULL,
+	     (Cardinal)0, True, CACHED, _XtFreeTranslations, True);
+}
diff --git a/libXt/src/TMprint.c b/libXt/src/TMprint.c
new file mode 100644
index 000000000..aeb6b30ed
--- /dev/null
+++ b/libXt/src/TMprint.c
@@ -0,0 +1,885 @@
+/* $Xorg: TMprint.c,v 1.4 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/TMprint.c,v 1.6 2001/12/14 19:56:31 dawes Exp $ */
+
+/*LINTLIBRARY*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include <stdio.h>
+
+typedef struct _TMStringBufRec{
+    String	start;
+    String	current;
+    Cardinal	max;
+}TMStringBufRec, *TMStringBuf;
+
+
+#define STR_THRESHOLD 25
+#define STR_INCAMOUNT 100
+#define CHECK_STR_OVERFLOW(sb) \
+if (sb->current - sb->start > (int)sb->max - STR_THRESHOLD) 	\
+{ String old = sb->start; \
+  sb->start = XtRealloc(old, (Cardinal)(sb->max += STR_INCAMOUNT)); \
+  sb->current = sb->current - old + sb->start; \
+}
+
+#define ExpandForChars(sb, nchars ) \
+    if ((unsigned)(sb->current - sb->start) > sb->max - STR_THRESHOLD - nchars) { \
+	String old = sb->start;					\
+	sb->start = XtRealloc(old,				\
+	    (Cardinal)(sb->max += STR_INCAMOUNT + nchars));	\
+	sb->current = sb->current - old + sb->start;		\
+    }
+
+#define ExpandToFit(sb, more) \
+{								\
+	size_t l = strlen(more);				\
+	ExpandForChars(sb, l);					\
+      }
+
+static void PrintModifiers(
+    TMStringBuf	sb,
+    unsigned long mask, unsigned long mod)
+{
+    Boolean notfirst = False;
+    CHECK_STR_OVERFLOW(sb);
+
+    if (mask == ~0UL && mod == 0) {
+	*sb->current++ = '!';
+	*sb->current = '\0';
+	return;
+    }
+
+#define PRINTMOD(modmask,modstring) \
+    if (mask & modmask) {		 \
+	if (! (mod & modmask)) {	 \
+	    *sb->current++ = '~';		 \
+	    notfirst = True;		 \
+	}				 \
+	else if (notfirst)		 \
+	    *sb->current++ = ' ';		 \
+	else notfirst = True;		 \
+	strcpy(sb->current, modstring);		 \
+	sb->current += strlen(sb->current);		 \
+    }
+
+    PRINTMOD(ShiftMask, "Shift");
+    PRINTMOD(ControlMask, "Ctrl");	/* name is not CtrlMask... */
+    PRINTMOD(LockMask, "Lock");
+    PRINTMOD(Mod1Mask, "Mod1");
+    CHECK_STR_OVERFLOW(sb);
+    PRINTMOD(Mod2Mask, "Mod2");
+    PRINTMOD(Mod3Mask, "Mod3");
+    PRINTMOD(Mod4Mask, "Mod4");
+    PRINTMOD(Mod5Mask, "Mod5");
+    CHECK_STR_OVERFLOW(sb);
+    PRINTMOD(Button1Mask, "Button1");
+    PRINTMOD(Button2Mask, "Button2");
+    PRINTMOD(Button3Mask, "Button3");
+    CHECK_STR_OVERFLOW(sb);
+    PRINTMOD(Button4Mask, "Button4");
+    PRINTMOD(Button5Mask, "Button5");
+
+#undef PRINTMOD
+}
+
+static void PrintEventType(
+    TMStringBuf	sb,
+    unsigned long event)
+{
+    CHECK_STR_OVERFLOW(sb);
+    switch (event) {
+#define PRINTEVENT(event, name) case event: (void) strcpy(sb->current, name); break;
+	PRINTEVENT(KeyPress, "<KeyPress>")
+	PRINTEVENT(KeyRelease, "<KeyRelease>")
+	PRINTEVENT(ButtonPress, "<ButtonPress>")
+	PRINTEVENT(ButtonRelease, "<ButtonRelease>")
+	PRINTEVENT(MotionNotify, "<MotionNotify>")
+	PRINTEVENT(EnterNotify, "<EnterNotify>")
+	PRINTEVENT(LeaveNotify, "<LeaveNotify>")
+	PRINTEVENT(FocusIn, "<FocusIn>")
+	PRINTEVENT(FocusOut, "<FocusOut>")
+	PRINTEVENT(KeymapNotify, "<KeymapNotify>")
+	PRINTEVENT(Expose, "<Expose>")
+	PRINTEVENT(GraphicsExpose, "<GraphicsExpose>")
+	PRINTEVENT(NoExpose, "<NoExpose>")
+	PRINTEVENT(VisibilityNotify, "<VisibilityNotify>")
+	PRINTEVENT(CreateNotify, "<CreateNotify>")
+	PRINTEVENT(DestroyNotify, "<DestroyNotify>")
+	PRINTEVENT(UnmapNotify, "<UnmapNotify>")
+	PRINTEVENT(MapNotify, "<MapNotify>")
+	PRINTEVENT(MapRequest, "<MapRequest>")
+	PRINTEVENT(ReparentNotify, "<ReparentNotify>")
+	PRINTEVENT(ConfigureNotify, "<ConfigureNotify>")
+	PRINTEVENT(ConfigureRequest, "<ConfigureRequest>")
+	PRINTEVENT(GravityNotify, "<GravityNotify>")
+	PRINTEVENT(ResizeRequest, "<ResizeRequest>")
+	PRINTEVENT(CirculateNotify, "<CirculateNotify>")
+	PRINTEVENT(CirculateRequest, "<CirculateRequest>")
+	PRINTEVENT(PropertyNotify, "<PropertyNotify>")
+	PRINTEVENT(SelectionClear, "<SelectionClear>")
+	PRINTEVENT(SelectionRequest, "<SelectionRequest>")
+	PRINTEVENT(SelectionNotify, "<SelectionNotify>")
+	PRINTEVENT(ColormapNotify, "<ColormapNotify>")
+	PRINTEVENT(ClientMessage, "<ClientMessage>")
+	case _XtEventTimerEventType:
+	    (void) strcpy(sb->current,"<EventTimer>");
+	    break;
+	default:
+	    (void) sprintf(sb->current, "<0x%x>", (int) event);
+#undef PRINTEVENT
+    }
+    sb->current += strlen(sb->current);
+}
+
+static void PrintCode(
+    TMStringBuf sb,
+    unsigned long mask, unsigned long code)
+{
+    CHECK_STR_OVERFLOW(sb);
+    if (mask != 0) {
+	if (mask != ~0UL)
+	    (void) sprintf(sb->current, "0x%lx:0x%lx", mask, code);
+	else (void) sprintf(sb->current, /*"0x%lx"*/ "%d", (unsigned)code);
+	sb->current += strlen(sb->current);
+    }
+}
+
+static void PrintKeysym(
+    TMStringBuf sb,
+    KeySym keysym)
+{
+    String keysymName;
+
+    if (keysym == 0) return;
+
+    CHECK_STR_OVERFLOW(sb);
+    keysymName = XKeysymToString(keysym);
+    if (keysymName == NULL)
+      PrintCode(sb,~0UL,(unsigned long)keysym);
+    else {
+      ExpandToFit(sb, keysymName);
+      strcpy(sb->current, keysymName);
+      sb->current += strlen(sb->current);
+    }
+}
+
+static void PrintAtom(
+    TMStringBuf sb,
+    Display *dpy,
+    Atom atom)
+{
+    String atomName;
+
+    if (atom == 0) return;
+
+    atomName = (dpy ? XGetAtomName(dpy, atom) : NULL);
+
+    if (! atomName)
+      PrintCode(sb,~0UL,(unsigned long)atom);
+    else {
+      ExpandToFit( sb, atomName );
+      strcpy(sb->current, atomName);
+      sb->current += strlen(sb->current);
+      XFree(atomName);
+    }
+}
+
+static	void PrintLateModifiers(
+    TMStringBuf	sb,
+    LateBindingsPtr lateModifiers)
+{
+    for (; lateModifiers->keysym; lateModifiers++) {
+	CHECK_STR_OVERFLOW(sb);
+	if (lateModifiers->knot) {
+	    *sb->current++ = '~';
+	} else {
+	    *sb->current++ = ' ';
+	}
+	strcpy(sb->current, XKeysymToString(lateModifiers->keysym));
+	sb->current += strlen(sb->current);
+	if (lateModifiers->pair) {
+	    *(sb->current -= 2) = '\0';	/* strip "_L" */
+	    lateModifiers++;	/* skip _R keysym */
+	}
+    }
+}
+
+static void PrintEvent(
+    TMStringBuf sb,
+    register TMTypeMatch typeMatch,
+    register TMModifierMatch modMatch,
+    Display *dpy)
+{
+    if (modMatch->standard) *sb->current++ = ':';
+
+    PrintModifiers(sb, modMatch->modifierMask, modMatch->modifiers);
+    if (modMatch->lateModifiers != NULL)
+      PrintLateModifiers(sb, modMatch->lateModifiers);
+    PrintEventType(sb, typeMatch->eventType);
+    switch (typeMatch->eventType) {
+      case KeyPress:
+      case KeyRelease:
+	PrintKeysym(sb, (KeySym)typeMatch->eventCode);
+	break;
+
+      case PropertyNotify:
+      case SelectionClear:
+      case SelectionRequest:
+      case SelectionNotify:
+      case ClientMessage:
+	PrintAtom(sb, dpy, (Atom)typeMatch->eventCode);
+	break;
+
+      default:
+	PrintCode(sb, typeMatch->eventCodeMask, typeMatch->eventCode);
+    }
+}
+
+static void PrintParams(
+    TMStringBuf	sb,
+    String	*params,
+    Cardinal num_params)
+{
+    register Cardinal i;
+    for (i = 0; i<num_params; i++) {
+	ExpandToFit( sb, params[i] );
+	if (i != 0) {
+	    *sb->current++ = ',';
+	    *sb->current++ = ' ';
+	}
+	*sb->current++ = '"';
+	strcpy(sb->current, params[i]);
+	sb->current += strlen(sb->current);
+	*sb->current++ = '"';
+    }
+    *sb->current = '\0';
+}
+
+static void PrintActions(
+    TMStringBuf	sb,
+    register ActionPtr actions,
+    XrmQuark *quarkTbl,
+    Widget   accelWidget)
+{
+    while (actions != NULL) {
+	String proc;
+
+	*sb->current++ = ' ';
+
+	if (accelWidget) {
+	    /* accelerator */
+	    String name = XtName(accelWidget);
+	    int nameLen = strlen(name);
+	    ExpandForChars(sb,  nameLen );
+	    XtMemmove(sb->current, name, nameLen );
+	    sb->current += nameLen;
+	    *sb->current++ = '`';
+	}
+	proc = XrmQuarkToString(quarkTbl[actions->idx]);
+	ExpandToFit( sb, proc );
+	strcpy(sb->current, proc);
+	sb->current += strlen(proc);
+	*sb->current++ = '(';
+	PrintParams(sb, actions->params, actions->num_params);
+	*sb->current++ = ')';
+	actions = actions->next;
+    }
+    *sb->current = '\0';
+}
+
+static Boolean LookAheadForCycleOrMulticlick(
+    register StatePtr state,
+    StatePtr *state_return,	/* state to print, usually startState */
+    int *countP,
+    StatePtr *nextLevelP)
+{
+    int repeatCount = 0;
+    StatePtr	startState = state;
+    Boolean	isCycle = startState->isCycleEnd;
+    TMTypeMatch sTypeMatch;
+    TMModifierMatch sModMatch;
+
+    LOCK_PROCESS;
+    sTypeMatch = TMGetTypeMatch(startState->typeIndex);
+    sModMatch = TMGetModifierMatch(startState->modIndex);
+
+    *state_return = startState;
+
+    for (state = state->nextLevel; state != NULL; state = state->nextLevel) {
+	TMTypeMatch typeMatch = TMGetTypeMatch(state->typeIndex);
+	TMModifierMatch modMatch = TMGetModifierMatch(state->modIndex);
+
+	/* try to pick up the correct state with actions, to be printed */
+	/* This is to accommodate <ButtonUp>(2+), for example */
+	if (state->isCycleStart)
+	    *state_return = state;
+
+	if (state->isCycleEnd) {
+	    *countP = repeatCount;
+	    UNLOCK_PROCESS;
+	    return True;
+	}
+	if ((startState->typeIndex == state->typeIndex) &&
+	    (startState->modIndex == state->modIndex)) {
+	    repeatCount++;
+	    *nextLevelP = state;
+	}
+	else if (typeMatch->eventType == _XtEventTimerEventType)
+	  continue;
+	else /* not same event as starting event and not timer */ {
+	    unsigned int type = sTypeMatch->eventType;
+	    unsigned int t = typeMatch->eventType;
+	    if (   (type == ButtonPress	  && t != ButtonRelease)
+		|| (type == ButtonRelease && t != ButtonPress)
+		|| (type == KeyPress	  && t != KeyRelease)
+		|| (type == KeyRelease	  && t != KeyPress)
+		|| typeMatch->eventCode != sTypeMatch->eventCode
+		|| modMatch->modifiers != sModMatch->modifiers
+		|| modMatch->modifierMask != sModMatch->modifierMask
+		|| modMatch->lateModifiers != sModMatch->lateModifiers
+		|| typeMatch->eventCodeMask != sTypeMatch->eventCodeMask
+		|| typeMatch->matchEvent != sTypeMatch->matchEvent
+		|| modMatch->standard != sModMatch->standard)
+		/* not inverse of starting event, either */
+		break;
+	}
+    }
+    *countP = repeatCount;
+    UNLOCK_PROCESS;
+    return isCycle;
+}
+
+static void PrintComplexState(
+    TMStringBuf	sb,
+    Boolean	includeRHS,
+    StatePtr 	state,
+    TMStateTree stateTree,
+    Widget	accelWidget,
+    Display 	*dpy)
+{
+    int 		clickCount = 0;
+    Boolean 		cycle;
+    StatePtr 		nextLevel = NULL;
+    StatePtr		triggerState = NULL;
+
+    /* print the current state */
+    if (! state) return;
+    LOCK_PROCESS;
+    cycle = LookAheadForCycleOrMulticlick(state, &triggerState, &clickCount,
+					  &nextLevel);
+
+    PrintEvent(sb, TMGetTypeMatch(triggerState->typeIndex),
+	       TMGetModifierMatch(triggerState->modIndex), dpy);
+
+    if (cycle || clickCount) {
+	if (clickCount)
+	    sprintf(sb->current, "(%d%s)", clickCount+1, cycle ? "+" : "");
+	else
+	    (void) strncpy(sb->current, "(+)", 4);
+	sb->current += strlen(sb->current);
+	if (! state->actions && nextLevel)
+	    state = nextLevel;
+	while (! state->actions && ! state->isCycleEnd)
+	    state = state->nextLevel;	/* should be trigger state */
+    }
+
+    if (state->actions) {
+	if (includeRHS) {
+	    CHECK_STR_OVERFLOW(sb);
+	    *sb->current++ = ':';
+	    PrintActions(sb,
+			 state->actions,
+			 ((TMSimpleStateTree)stateTree)->quarkTbl,
+			 accelWidget);
+	    *sb->current++ = '\n';
+	}
+    }
+    else {
+	if (state->nextLevel && !cycle && !clickCount)
+	    *sb->current++ = ',';
+	else {
+	    /* no actions are attached to this production */
+	    *sb->current++ = ':';
+	    *sb->current++ = '\n';
+	}
+    }
+    *sb->current = '\0';
+
+    /* print succeeding states */
+    if (state->nextLevel && !cycle && !clickCount)
+	PrintComplexState(sb, includeRHS, state->nextLevel,
+			  stateTree, accelWidget, dpy);
+    UNLOCK_PROCESS;
+}
+
+typedef struct{
+    TMShortCard	tIndex;
+    TMShortCard	bIndex;
+}PrintRec, *Print;
+
+static int FindNextMatch(
+    PrintRec		*printData,
+    TMShortCard		numPrints,
+    XtTranslations 	xlations,
+    TMBranchHead	branchHead,
+    StatePtr 		nextLevel,
+    TMShortCard		startIndex)
+{
+    TMShortCard		i;
+    TMComplexStateTree 	stateTree;
+    StatePtr		currState, candState;
+    Boolean		noMatch = True;
+    TMBranchHead	prBranchHead;
+
+    for (i = startIndex; noMatch && i < numPrints; i++) {
+	stateTree = (TMComplexStateTree)
+	  xlations->stateTreeTbl[printData[i].tIndex];
+	prBranchHead =
+	  &(stateTree->branchHeadTbl[printData[i].bIndex]);
+
+	if ((prBranchHead->typeIndex == branchHead->typeIndex) &&
+	    (prBranchHead->modIndex == branchHead->modIndex)) {
+	    if (prBranchHead->isSimple) {
+		if (!nextLevel)
+		  return i;
+	    }
+	    else {
+		currState = TMComplexBranchHead(stateTree, prBranchHead);
+		currState = currState->nextLevel;
+		candState = nextLevel;
+		for (;
+		     ((currState && !currState->isCycleEnd) &&
+		      (candState && !candState->isCycleEnd));
+		     currState = currState->nextLevel,
+		     candState = candState->nextLevel) {
+		    if ((currState->typeIndex != candState->typeIndex) ||
+			(currState->modIndex != candState->modIndex))
+		      break;
+		}
+		if (candState == currState) {
+		    return i;
+		}
+	    }
+	}
+    }
+    return TM_NO_MATCH;
+}
+
+static void ProcessLaterMatches(
+    PrintRec	*printData,
+    XtTranslations xlations,
+    TMShortCard	tIndex,
+    int bIndex,
+    TMShortCard	*numPrintsRtn)
+{
+    TMComplexStateTree 	stateTree;
+    int			i, j;
+    TMBranchHead	branchHead, matchBranch = NULL;
+
+    for (i = tIndex; i < (int)xlations->numStateTrees; i++) {
+	stateTree = (TMComplexStateTree)xlations->stateTreeTbl[i];
+	if (i == tIndex) {
+	    matchBranch = &stateTree->branchHeadTbl[bIndex];
+	    j = bIndex+1;
+	}
+	else j = 0;
+	for (branchHead = &stateTree->branchHeadTbl[j];
+	     j < (int)stateTree->numBranchHeads;
+	     j++, branchHead++) {
+	    if ((branchHead->typeIndex == matchBranch->typeIndex) &&
+		(branchHead->modIndex == matchBranch->modIndex)) {
+		StatePtr state;
+		if (!branchHead->isSimple)
+		  state = TMComplexBranchHead(stateTree, branchHead);
+		else
+		  state = NULL;
+		if ((!branchHead->isSimple || branchHead->hasActions) &&
+		    (FindNextMatch(printData,
+				   *numPrintsRtn,
+				   xlations,
+				   branchHead,
+				   (state ? state->nextLevel : NULL),
+				   0) == TM_NO_MATCH)) {
+		    printData[*numPrintsRtn].tIndex = i;
+		    printData[*numPrintsRtn].bIndex = j;
+		    (*numPrintsRtn)++;
+		}
+	    }
+	}
+    }
+}
+
+static void ProcessStateTree(
+    PrintRec	*printData,
+    XtTranslations xlations,
+    TMShortCard	tIndex,
+    TMShortCard	*numPrintsRtn)
+{
+    TMComplexStateTree stateTree;
+    int			i;
+    TMBranchHead	branchHead;
+
+    stateTree = (TMComplexStateTree)xlations->stateTreeTbl[tIndex];
+
+    for (i = 0, branchHead = stateTree->branchHeadTbl;
+	 i < (int)stateTree->numBranchHeads;
+	 i++, branchHead++) {
+	StatePtr state;
+	if (!branchHead->isSimple)
+	  state = TMComplexBranchHead(stateTree, branchHead);
+	else
+	  state = NULL;
+	if (FindNextMatch(printData, *numPrintsRtn, xlations, branchHead,
+			  (state ? state->nextLevel : NULL), 0)
+	    == TM_NO_MATCH) {
+	    if (!branchHead->isSimple || branchHead->hasActions) {
+		printData[*numPrintsRtn].tIndex = tIndex;
+		printData[*numPrintsRtn].bIndex = i;
+		(*numPrintsRtn)++;
+	    }
+	    LOCK_PROCESS;
+	    if (_XtGlobalTM.newMatchSemantics == False)
+	      ProcessLaterMatches(printData,
+				  xlations,
+				  tIndex,
+				  i,
+				  numPrintsRtn);
+	    UNLOCK_PROCESS;
+	}
+    }
+}
+
+static void PrintState(
+    TMStringBuf	sb,
+    TMStateTree	tree,
+    TMBranchHead branchHead,
+    Boolean	includeRHS,
+    Widget	accelWidget,
+    Display 	*dpy)
+{
+    TMComplexStateTree stateTree = (TMComplexStateTree)tree;
+    LOCK_PROCESS;
+    if (branchHead->isSimple) {
+	PrintEvent(sb,
+		   TMGetTypeMatch(branchHead->typeIndex),
+		   TMGetModifierMatch(branchHead->modIndex),
+		   dpy);
+	if (includeRHS) {
+	    ActionRec	actRec;
+
+	    CHECK_STR_OVERFLOW(sb);
+	    *sb->current++ = ':';
+	    actRec.idx = TMBranchMore(branchHead);
+	    actRec.num_params = 0;
+	    actRec.params = NULL;
+	    actRec.next = NULL;
+	    PrintActions(sb,
+			 &actRec,
+			 stateTree->quarkTbl,
+			 accelWidget);
+	    *sb->current++ = '\n';
+	}
+	else
+	  *sb->current++ = ',';
+#ifdef TRACE_TM
+	if (!branchHead->hasActions)
+	  printf(" !! no actions !! ");
+#endif
+    }
+	else { /* it's a complex branchHead */
+	    StatePtr state = TMComplexBranchHead(stateTree, branchHead);
+	    PrintComplexState(sb,
+			      includeRHS,
+			      state,
+			      tree,
+			      accelWidget,
+			      (Display *)NULL);
+	}
+    *sb->current = '\0';
+    UNLOCK_PROCESS;
+}
+
+String _XtPrintXlations(
+    Widget		w,
+    XtTranslations 	xlations,
+    Widget		accelWidget,
+    _XtBoolean		includeRHS)
+{
+    register Cardinal 	i;
+#define STACKPRINTSIZE 250
+    PrintRec		stackPrints[STACKPRINTSIZE];
+    PrintRec		*prints;
+    TMStringBufRec	sbRec, *sb = &sbRec;
+    TMShortCard		numPrints, maxPrints;
+#ifdef TRACE_TM
+    TMBindData		bindData = (TMBindData)w->core.tm.proc_table;
+    Boolean		hasAccel = (accelWidget ? True : False);
+#endif /* TRACE_TM */
+    if (xlations == NULL) return NULL;
+
+    sb->current = sb->start = __XtMalloc((Cardinal)1000);
+    sb->max = 1000;
+    maxPrints = 0;
+    for (i = 0; i < xlations->numStateTrees; i++)
+	maxPrints +=
+	  ((TMSimpleStateTree)(xlations->stateTreeTbl[i]))->numBranchHeads;
+    prints = (PrintRec *)
+      XtStackAlloc(maxPrints * sizeof(PrintRec), stackPrints);
+
+    numPrints = 0;
+    for (i = 0; i < xlations->numStateTrees; i++)
+      ProcessStateTree(prints, xlations, i, &numPrints);
+
+    for (i = 0; i < numPrints; i++) {
+	TMSimpleStateTree stateTree = (TMSimpleStateTree)
+	  xlations->stateTreeTbl[prints[i].tIndex];
+	TMBranchHead branchHead =
+	  &stateTree->branchHeadTbl[prints[i].bIndex];
+#ifdef TRACE_TM
+	TMComplexBindProcs	complexBindProcs;
+
+	if (hasAccel == False) {
+	    accelWidget = NULL;
+	    if (bindData->simple.isComplex) {
+		complexBindProcs = TMGetComplexBindEntry(bindData, 0);
+		accelWidget = complexBindProcs[prints[i].tIndex].widget;
+	    }
+	}
+#endif /* TRACE_TM */
+	PrintState(sb, (TMStateTree)stateTree, branchHead,
+		   includeRHS, accelWidget, XtDisplay(w));
+    }
+    XtStackFree((XtPointer)prints, (XtPointer)stackPrints);
+    return (sb->start);
+}
+
+
+#ifndef NO_MIT_HACKS
+/*ARGSUSED*/
+void _XtDisplayTranslations(
+    Widget widget,
+    XEvent *event,
+    String *params,
+    Cardinal *num_params)
+{
+    String 	xString;
+
+    xString =  _XtPrintXlations(widget,
+				widget->core.tm.translations,
+				NULL,
+				True);
+    if (xString) {
+	printf("%s\n",xString);
+	XtFree(xString);
+    }
+}
+
+/*ARGSUSED*/
+void _XtDisplayAccelerators(
+    Widget widget,
+    XEvent *event,
+    String *params,
+    Cardinal *num_params)
+{
+    String 	xString;
+
+
+    xString =  _XtPrintXlations(widget,
+				widget->core.accelerators,
+				NULL,
+				True);
+    if (xString) {
+	printf("%s\n",xString);
+	XtFree(xString);
+    }
+}
+
+/*ARGSUSED*/
+void _XtDisplayInstalledAccelerators(
+    Widget widget,
+    XEvent *event,
+    String *params,
+    Cardinal *num_params)
+{
+    Widget eventWidget
+	= XtWindowToWidget(event->xany.display, event->xany.window);
+    register Cardinal 	i;
+    TMStringBufRec	sbRec, *sb = &sbRec;
+    XtTranslations	xlations;
+#define STACKPRINTSIZE 250
+    PrintRec		stackPrints[STACKPRINTSIZE];
+    PrintRec		*prints;
+    TMShortCard		numPrints, maxPrints;
+    TMBindData	bindData = (TMBindData) eventWidget->core.tm.proc_table;
+    TMComplexBindProcs	complexBindProcs;
+
+    if ((eventWidget == NULL) ||
+	((xlations = eventWidget->core.tm.translations) == NULL) ||
+	(bindData->simple.isComplex == False))
+      return;
+
+    sb->current = sb->start = __XtMalloc((Cardinal)1000);
+    sb->start[0] = '\0';
+    sb->max = 1000;
+    maxPrints = 0;
+    for (i = 0; i < xlations->numStateTrees; i++)
+	maxPrints +=
+	  ((TMSimpleStateTree)xlations->stateTreeTbl[i])->numBranchHeads;
+    prints = (PrintRec *)
+      XtStackAlloc(maxPrints * sizeof(PrintRec), stackPrints);
+
+    numPrints = 0;
+
+    complexBindProcs = TMGetComplexBindEntry(bindData, 0);
+    for (i = 0;
+	 i < xlations->numStateTrees;
+	 i++, complexBindProcs++) {
+	if (complexBindProcs->widget)
+	  {
+	      ProcessStateTree(prints, xlations, i, &numPrints);
+	  }
+    }
+    for (i = 0; i < numPrints; i++) {
+	TMSimpleStateTree stateTree = (TMSimpleStateTree)
+	  xlations->stateTreeTbl[prints[i].tIndex];
+	TMBranchHead branchHead =
+	  &stateTree->branchHeadTbl[prints[i].bIndex];
+
+	complexBindProcs = TMGetComplexBindEntry(bindData, 0);
+
+	PrintState(sb, (TMStateTree)stateTree, branchHead, True,
+		   complexBindProcs[prints[i].tIndex].widget,
+		   XtDisplay(widget));
+    }
+    XtStackFree((XtPointer)prints, (XtPointer)stackPrints);
+    printf("%s\n", sb->start);
+    XtFree(sb->start);
+}
+#endif /*NO_MIT_HACKS*/
+
+String _XtPrintActions(
+    register ActionRec *actions,
+    XrmQuark		*quarkTbl)
+{
+    TMStringBufRec	sbRec, *sb = &sbRec;
+
+    sb->max = 1000;
+    sb->current = sb->start = __XtMalloc((Cardinal)1000);
+    PrintActions(sb,
+		 actions,
+		 quarkTbl,
+		 (Widget)NULL);
+    return sb->start;
+}
+
+String _XtPrintState(
+    TMStateTree		stateTree,
+    TMBranchHead	branchHead)
+{
+    TMStringBufRec	sbRec, *sb = &sbRec;
+
+    sb->current = sb->start = __XtMalloc((Cardinal)1000);
+    sb->max = 1000;
+    PrintState(sb, stateTree, branchHead,
+	       True, (Widget)NULL, (Display *)NULL);
+    return sb->start;
+}
+
+
+String _XtPrintEventSeq(
+    register EventSeqPtr eventSeq,
+    Display *dpy)
+{
+    TMStringBufRec	sbRec, *sb = &sbRec;
+    TMTypeMatch		typeMatch;
+    TMModifierMatch	modMatch;
+#define MAXSEQS 100
+    EventSeqPtr		eventSeqs[MAXSEQS];
+    TMShortCard		i, j;
+    Boolean		cycle = False;
+
+    sb->current = sb->start = __XtMalloc((Cardinal)1000);
+    sb->max = 1000;
+    for (i = 0;
+	 i < MAXSEQS && eventSeq != NULL && !cycle;
+	 eventSeq = eventSeq->next, i++)
+      {
+	  eventSeqs[i] = eventSeq;
+	  for (j = 0; j < i && !cycle; j++)
+	    if (eventSeqs[j] == eventSeq)
+	      cycle = True;
+      }
+    LOCK_PROCESS;
+    for (j = 0; j < i; j++) {
+	typeMatch =
+	  TMGetTypeMatch(_XtGetTypeIndex(&eventSeqs[j]->event));
+	modMatch =
+	  TMGetModifierMatch(_XtGetModifierIndex(&eventSeqs[j]->event));
+	PrintEvent(sb, typeMatch, modMatch, dpy);
+	if (j < i)
+	  *sb->current++ = ',';
+    }
+    UNLOCK_PROCESS;
+    return sb->start;
+}
diff --git a/libXt/src/TMstate.c b/libXt/src/TMstate.c
new file mode 100644
index 000000000..604947496
--- /dev/null
+++ b/libXt/src/TMstate.c
@@ -0,0 +1,2349 @@
+/* $Xorg: TMstate.c,v 1.6 2001/02/09 02:03:58 xorgcvs Exp $ */
+
+/***********************************************************
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                        All Rights Reserved
+
+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, and that the names of Digital or Sun not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/TMstate.c,v 1.8 2001/12/14 19:56:31 dawes Exp $ */
+
+/*
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+*/
+
+/* TMstate.c -- maintains the state table of actions for the translation
+ *              manager.
+ */
+/*LINTLIBRARY*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+#ifndef TM_NO_MATCH
+#define TM_NO_MATCH (-2)
+#endif /* TM_NO_MATCH */
+
+/* forward definitions */
+static StatePtr NewState(TMParseStateTree, TMShortCard, TMShortCard);
+
+
+static String XtNtranslationError = "translationError";
+
+#ifndef __EMX__
+TMGlobalRec _XtGlobalTM; /* initialized to zero K&R */
+#else
+TMGlobalRec _XtGlobalTM = {0};
+#endif
+
+#define MatchIncomingEvent(tmEvent, typeMatch, modMatch) \
+  (typeMatch->eventType == tmEvent->event.eventType && \
+   (typeMatch->matchEvent != NULL) && \
+   (*typeMatch->matchEvent)(typeMatch, modMatch, tmEvent))
+
+
+#define NumStateTrees(xlations) \
+  ((translateData->isSimple) ? 1 : (TMComplexXlations(xlations))->numTrees)
+
+static TMShortCard GetBranchHead(
+    TMParseStateTree	parseTree,
+    TMShortCard		typeIndex,
+    TMShortCard		modIndex,
+    Boolean		isDummy)
+{
+#define TM_BRANCH_HEAD_TBL_ALLOC 	8
+#define TM_BRANCH_HEAD_TBL_REALLOC 	8
+
+    TMBranchHead branchHead = parseTree->branchHeadTbl;
+    TMShortCard	newSize, i;
+
+    /*
+     * dummy is used as a place holder for later matching in old-style
+     * matching behavior. If there's already an entry we don't need
+     * another dummy.
+     */
+    if (isDummy) {
+	for (i = 0; i < parseTree->numBranchHeads; i++, branchHead++) {
+	    if ((branchHead->typeIndex == typeIndex) &&
+		(branchHead->modIndex == modIndex))
+	      return i;
+	}
+    }
+    if (parseTree->numBranchHeads == parseTree->branchHeadTblSize)
+      {
+	  if (parseTree->branchHeadTblSize == 0)
+	    parseTree->branchHeadTblSize += TM_BRANCH_HEAD_TBL_ALLOC;
+	  else
+	    parseTree->branchHeadTblSize +=
+	      TM_BRANCH_HEAD_TBL_REALLOC;
+	  newSize = (parseTree->branchHeadTblSize * sizeof(TMBranchHeadRec));
+	  if (parseTree->isStackBranchHeads) {
+	      TMBranchHead	oldBranchHeadTbl = parseTree->branchHeadTbl;
+	      parseTree->branchHeadTbl = (TMBranchHead) __XtMalloc(newSize);
+	      XtMemmove(parseTree->branchHeadTbl, oldBranchHeadTbl, newSize);
+	      parseTree->isStackBranchHeads = False;
+	  }
+	  else {
+	      parseTree->branchHeadTbl = (TMBranchHead)
+		XtRealloc((char *)parseTree->branchHeadTbl,
+			  (parseTree->branchHeadTblSize *
+			   sizeof(TMBranchHeadRec)));
+	  }
+      }
+#ifdef TRACE_TM
+    LOCK_PROCESS;
+    _XtGlobalTM.numBranchHeads++;
+    UNLOCK_PROCESS;
+#endif /* TRACE_TM */
+    branchHead =
+      &parseTree->branchHeadTbl[parseTree->numBranchHeads++];
+    branchHead->typeIndex = typeIndex;
+    branchHead->modIndex = modIndex;
+    branchHead->more = 0;
+    branchHead->isSimple = True;
+    branchHead->hasActions = False;
+    branchHead->hasCycles = False;
+    return parseTree->numBranchHeads-1;
+}
+
+TMShortCard _XtGetQuarkIndex(
+    TMParseStateTree	parseTree,
+    XrmQuark		quark)
+{
+#define TM_QUARK_TBL_ALLOC 	16
+#define TM_QUARK_TBL_REALLOC 	16
+    TMShortCard  i = parseTree->numQuarks;
+
+    for (i=0; i < parseTree->numQuarks; i++)
+      if (parseTree->quarkTbl[i] == quark)
+	    break;
+
+    if (i == parseTree->numQuarks)
+      {
+	  if (parseTree->numQuarks == parseTree->quarkTblSize)
+	    {
+		TMShortCard	newSize;
+
+		if (parseTree->quarkTblSize == 0)
+		  parseTree->quarkTblSize += TM_QUARK_TBL_ALLOC;
+		else
+		  parseTree->quarkTblSize += TM_QUARK_TBL_REALLOC;
+		newSize = (parseTree->quarkTblSize * sizeof(XrmQuark));
+
+		if (parseTree->isStackQuarks) {
+		    XrmQuark	*oldquarkTbl = parseTree->quarkTbl;
+		    parseTree->quarkTbl = (XrmQuark *) __XtMalloc(newSize);
+		    XtMemmove(parseTree->quarkTbl, oldquarkTbl, newSize);
+		    parseTree->isStackQuarks = False;
+		}
+		else {
+		    parseTree->quarkTbl = (XrmQuark *)
+		      XtRealloc((char *)parseTree->quarkTbl,
+				(parseTree->quarkTblSize *
+				 sizeof(XrmQuark)));
+		}
+	    }
+	  parseTree->quarkTbl[parseTree->numQuarks++] = quark;
+      }
+    return i;
+}
+
+/*
+ * Get an entry from the parseTrees complex branchHead tbl. If there's none
+ * there then allocate one
+ */
+/*ARGSUSED*/
+static TMShortCard GetComplexBranchIndex(
+    TMParseStateTree	parseTree,
+    TMShortCard		typeIndex,
+    TMShortCard		modIndex)
+{
+#define TM_COMPLEXBRANCH_HEAD_TBL_ALLOC 8
+#define TM_COMPLEXBRANCH_HEAD_TBL_REALLOC 4
+
+    if (parseTree->numComplexBranchHeads == parseTree->complexBranchHeadTblSize) {
+	TMShortCard	newSize;
+
+	if (parseTree->complexBranchHeadTblSize == 0)
+	  parseTree->complexBranchHeadTblSize += TM_COMPLEXBRANCH_HEAD_TBL_ALLOC;
+	else
+	  parseTree->complexBranchHeadTblSize += TM_COMPLEXBRANCH_HEAD_TBL_REALLOC;
+
+	newSize = (parseTree->complexBranchHeadTblSize * sizeof(StatePtr));
+
+	if (parseTree->isStackComplexBranchHeads) {
+	    StatePtr *oldcomplexBranchHeadTbl
+	      = parseTree->complexBranchHeadTbl;
+	    parseTree->complexBranchHeadTbl = (StatePtr *) __XtMalloc(newSize);
+	    XtMemmove(parseTree->complexBranchHeadTbl,
+		      oldcomplexBranchHeadTbl, newSize);
+	    parseTree->isStackComplexBranchHeads = False;
+	}
+	else {
+	    parseTree->complexBranchHeadTbl = (StatePtr *)
+	      XtRealloc((char *)parseTree->complexBranchHeadTbl,
+			(parseTree->complexBranchHeadTblSize *
+			 sizeof(StatePtr)));
+	}
+    }
+    parseTree->complexBranchHeadTbl[parseTree->numComplexBranchHeads++] = NULL;
+    return parseTree->numComplexBranchHeads-1;
+}
+
+TMShortCard _XtGetTypeIndex(
+    Event	*event)
+{
+    TMShortCard		i, j = TM_TYPE_SEGMENT_SIZE;
+    TMShortCard		typeIndex = 0;
+    TMTypeMatch 	typeMatch;
+    TMTypeMatch		segment = NULL;
+
+    LOCK_PROCESS;
+    for (i = 0; i < _XtGlobalTM.numTypeMatchSegments; i++) {
+	segment = _XtGlobalTM.typeMatchSegmentTbl[i];
+	for (j = 0;
+	     typeIndex < _XtGlobalTM.numTypeMatches && j <  TM_TYPE_SEGMENT_SIZE;
+	     j++, typeIndex++)
+	  {
+	      typeMatch = &(segment[j]);
+	      if (event->eventType == typeMatch->eventType &&
+		  event->eventCode == typeMatch->eventCode &&
+		  event->eventCodeMask == typeMatch->eventCodeMask &&
+		  event->matchEvent == typeMatch->matchEvent) {
+		    UNLOCK_PROCESS;
+		    return typeIndex;
+		  }
+	  }
+    }
+
+    if (j == TM_TYPE_SEGMENT_SIZE) {
+	if (_XtGlobalTM.numTypeMatchSegments == _XtGlobalTM.typeMatchSegmentTblSize) {
+	    _XtGlobalTM.typeMatchSegmentTblSize += 4;
+	    _XtGlobalTM.typeMatchSegmentTbl = (TMTypeMatch *)
+	      XtRealloc((char *)_XtGlobalTM.typeMatchSegmentTbl,
+			(_XtGlobalTM.typeMatchSegmentTblSize * sizeof(TMTypeMatch)));
+	}
+	_XtGlobalTM.typeMatchSegmentTbl[_XtGlobalTM.numTypeMatchSegments++] =
+	  segment = (TMTypeMatch)
+	    __XtMalloc(TM_TYPE_SEGMENT_SIZE * sizeof(TMTypeMatchRec));
+	j = 0;
+    }
+    typeMatch = &segment[j];
+    typeMatch->eventType = event->eventType;
+    typeMatch->eventCode = event->eventCode;
+    typeMatch->eventCodeMask = event->eventCodeMask;
+    typeMatch->matchEvent = event->matchEvent;
+    _XtGlobalTM.numTypeMatches++;
+    UNLOCK_PROCESS;
+    return typeIndex;
+}
+
+static Boolean CompareLateModifiers(
+    LateBindingsPtr lateBind1P,
+    LateBindingsPtr lateBind2P)
+{
+    LateBindingsPtr late1P = lateBind1P;
+    LateBindingsPtr late2P = lateBind2P;
+
+    if (late1P != NULL || late2P != NULL) {
+	int i = 0;
+	int j = 0;
+	if (late1P != NULL)
+	  for (; late1P->keysym != NoSymbol; i++) late1P++;
+	if (late2P != NULL)
+	  for (; late2P->keysym != NoSymbol; j++) late2P++;
+	if (i != j) return FALSE;
+	late1P--;
+	while (late1P >= lateBind1P) {
+	    Boolean last = True;
+	    for (late2P = lateBind2P + i - 1;
+		 late2P >= lateBind2P;
+		 late2P--) {
+		if (late1P->keysym == late2P->keysym
+		    && late1P->knot == late2P->knot) {
+		    j--;
+		    if (last) i--;
+		    break;
+		}
+		last = False;
+	    }
+	    late1P--;
+	}
+	if (j != 0) return FALSE;
+    }
+    return TRUE;
+}
+
+TMShortCard _XtGetModifierIndex(
+    Event	*event)
+{
+    TMShortCard		i, j = TM_MOD_SEGMENT_SIZE;
+    TMShortCard		modIndex = 0;
+    TMModifierMatch 	modMatch;
+    TMModifierMatch	segment = NULL;
+
+    LOCK_PROCESS;
+    for (i = 0; i < _XtGlobalTM.numModMatchSegments; i++) {
+	segment = _XtGlobalTM.modMatchSegmentTbl[i];
+	for (j = 0;
+	     modIndex < _XtGlobalTM.numModMatches && j <  TM_MOD_SEGMENT_SIZE;
+	     j++, modIndex++) {
+	    modMatch = &(segment[j]);
+	    if (event->modifiers == modMatch->modifiers &&
+		event->modifierMask == modMatch->modifierMask &&
+		event->standard == modMatch->standard &&
+		((!event->lateModifiers && !modMatch->lateModifiers) ||
+		 CompareLateModifiers(event->lateModifiers,
+				      modMatch->lateModifiers))) {
+		/*
+		 * if we found a match then we can free the parser's
+		 * late modifiers. If there isn't a match we use the
+		 * parser's copy
+		 */
+		if (event->lateModifiers &&
+		    --event->lateModifiers->ref_count == 0) {
+		    XtFree((char *)event->lateModifiers);
+		    event->lateModifiers = NULL;
+		}
+		UNLOCK_PROCESS;
+		return modIndex;
+	    }
+	}
+    }
+
+    if (j == TM_MOD_SEGMENT_SIZE) {
+	if (_XtGlobalTM.numModMatchSegments == _XtGlobalTM.modMatchSegmentTblSize) {
+	    _XtGlobalTM.modMatchSegmentTblSize += 4;
+	    _XtGlobalTM.modMatchSegmentTbl = (TMModifierMatch *)
+	      XtRealloc((char *)_XtGlobalTM.modMatchSegmentTbl,
+			(_XtGlobalTM.modMatchSegmentTblSize * sizeof(TMModifierMatch)));
+	}
+	_XtGlobalTM.modMatchSegmentTbl[_XtGlobalTM.numModMatchSegments++] =
+	  segment = (TMModifierMatch)
+	    __XtMalloc(TM_MOD_SEGMENT_SIZE * sizeof(TMModifierMatchRec));
+	j = 0;
+    }
+    modMatch = &segment[j];
+    modMatch->modifiers = event->modifiers;;
+    modMatch->modifierMask = event->modifierMask;
+    modMatch->standard = event->standard;
+    /*
+     * We use the parser's copy of the late binding array
+     */
+#ifdef TRACE_TM
+    if (event->lateModifiers)
+      _XtGlobalTM.numLateBindings++;
+#endif /* TRACE_TM */
+    modMatch->lateModifiers = event->lateModifiers;
+    _XtGlobalTM.numModMatches++;
+    UNLOCK_PROCESS;
+    return modIndex;
+}
+
+
+/*
+ * This is called from the SimpleStateHandler to match a stateTree
+ * entry to the event coming in
+ */
+static int MatchBranchHead(
+    TMSimpleStateTree 	stateTree,
+    int			startIndex,
+    TMEventPtr		event)
+{
+    TMBranchHead branchHead = &stateTree->branchHeadTbl[startIndex];
+    int i;
+
+    LOCK_PROCESS;
+    for (i = startIndex;
+	 i < (int)stateTree->numBranchHeads;
+	 i++, branchHead++)
+      {
+	  TMTypeMatch 		typeMatch;
+	  TMModifierMatch	modMatch;
+
+	  typeMatch  = TMGetTypeMatch(branchHead->typeIndex);
+	  modMatch = TMGetModifierMatch(branchHead->modIndex);
+
+	  if (MatchIncomingEvent(event, typeMatch, modMatch)) {
+	    UNLOCK_PROCESS;
+	    return i;
+	  }
+      }
+    UNLOCK_PROCESS;
+    return (TM_NO_MATCH);
+}
+
+Boolean _XtRegularMatch(
+    TMTypeMatch 	typeMatch,
+    TMModifierMatch	modMatch,
+    TMEventPtr 		eventSeq)
+{
+    Modifiers computed =0;
+    Modifiers computedMask =0;
+    Boolean resolved = TRUE;
+    if (typeMatch->eventCode != (eventSeq->event.eventCode &
+				  typeMatch->eventCodeMask)) return FALSE;
+    if (modMatch->lateModifiers != NULL)
+	resolved = _XtComputeLateBindings(eventSeq->xev->xany.display,
+					  modMatch->lateModifiers,
+					  &computed, &computedMask);
+    if (!resolved) return FALSE;
+    computed |= modMatch->modifiers;
+    computedMask |= modMatch->modifierMask;
+
+    return ( (computed & computedMask) ==
+	    (eventSeq->event.modifiers & computedMask));
+}
+
+/*ARGSUSED*/
+Boolean _XtMatchAtom(
+    TMTypeMatch 	typeMatch,
+    TMModifierMatch	modMatch,
+    TMEventPtr 		eventSeq)
+{
+    Atom	atom;
+
+    atom = XInternAtom(eventSeq->xev->xany.display,
+		       XrmQuarkToString(typeMatch->eventCode),
+		       False);
+    return (atom == eventSeq->event.eventCode);
+}
+
+#define IsOn(vec,idx) ((vec)[(idx)>>3] & (1 << ((idx) & 7)))
+
+/*
+ * there are certain cases where you want to ignore the event and stay
+ * in the same state.
+ */
+static Boolean Ignore(
+    TMEventPtr event)
+{
+    Display *dpy;
+    XtPerDisplay pd;
+
+    if (event->event.eventType == MotionNotify)
+	return TRUE;
+    if (!(event->event.eventType == KeyPress ||
+	  event->event.eventType == KeyRelease))
+	return FALSE;
+    dpy = event->xev->xany.display;
+    pd = _XtGetPerDisplay(dpy);
+    _InitializeKeysymTables(dpy, pd);
+    return IsOn(pd->isModifier, event->event.eventCode) ? TRUE : FALSE;
+}
+
+
+static void XEventToTMEvent(
+    XEvent *event,
+    TMEventPtr tmEvent)
+{
+    tmEvent->xev = event;
+    tmEvent->event.eventCodeMask = 0;
+    tmEvent->event.modifierMask = 0;
+    tmEvent->event.eventType = event->type;
+    tmEvent->event.lateModifiers = NULL;
+    tmEvent->event.matchEvent = NULL;
+    tmEvent->event.standard = FALSE;
+
+    switch (event->type) {
+
+	case KeyPress:
+	case KeyRelease:
+            tmEvent->event.eventCode = event->xkey.keycode;
+	    tmEvent->event.modifiers = event->xkey.state;
+	    break;
+
+	case ButtonPress:
+	case ButtonRelease:
+	    tmEvent->event.eventCode = event->xbutton.button;
+	    tmEvent->event.modifiers = event->xbutton.state;
+	    break;
+
+	case MotionNotify:
+	    tmEvent->event.eventCode = event->xmotion.is_hint;
+	    tmEvent->event.modifiers = event->xmotion.state;
+	    break;
+
+	case EnterNotify:
+	case LeaveNotify:
+	    tmEvent->event.eventCode = event->xcrossing.mode;
+	    tmEvent->event.modifiers = event->xcrossing.state;
+	    break;
+
+	case PropertyNotify:
+	    tmEvent->event.eventCode = event->xproperty.atom;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	case SelectionClear:
+	    tmEvent->event.eventCode = event->xselectionclear.selection;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	case SelectionRequest:
+	    tmEvent->event.eventCode = event->xselectionrequest.selection;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	case SelectionNotify:
+	    tmEvent->event.eventCode = event->xselection.selection;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	case ClientMessage:
+	    tmEvent->event.eventCode = event->xclient.message_type;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	case MappingNotify:
+	    tmEvent->event.eventCode = event->xmapping.request;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	case FocusIn:
+	case FocusOut:
+	    tmEvent->event.eventCode = event->xfocus.mode;
+	    tmEvent->event.modifiers = 0;
+	    break;
+
+	default:
+	    tmEvent->event.eventCode = 0;
+	    tmEvent->event.modifiers = 0;
+	    break;
+    }
+}
+
+
+static unsigned long GetTime(
+    XtTM tm,
+    XEvent *event)
+{
+    switch (event->type) {
+
+        case KeyPress:
+	case KeyRelease:
+	    return event->xkey.time;
+
+        case ButtonPress:
+	case ButtonRelease:
+	    return event->xbutton.time;
+
+	default:
+	    return tm->lastEventTime;
+
+    }
+
+}
+
+static void HandleActions(
+    Widget		w,
+    XEvent		*event,
+    TMSimpleStateTree	stateTree,
+    Widget		accelWidget,
+    XtActionProc	*procs,
+    ActionRec		*actions)
+{
+    ActionHook	 	actionHookList;
+    Widget		bindWidget;
+
+    bindWidget = accelWidget ? accelWidget : w;
+    if (accelWidget && !XtIsSensitive(accelWidget) &&
+	(event->type == KeyPress || event->type == KeyRelease ||
+	event->type == ButtonPress || event->type == ButtonRelease ||
+	event->type == MotionNotify || event->type == EnterNotify ||
+	event->type == LeaveNotify || event->type == FocusIn ||
+	event->type == FocusOut))
+	return;
+
+    actionHookList = XtWidgetToApplicationContext(w)->action_hook_list;
+
+    while (actions != NULL) {
+	/* perform any actions */
+	if (procs[actions->idx] != NULL) {
+	    if (actionHookList) {
+		ActionHook hook;
+		ActionHook next_hook;
+		String procName =
+		    XrmQuarkToString(stateTree->quarkTbl[actions->idx] );
+
+		for (hook = actionHookList; hook != NULL; ) {
+		    /*
+		     * Need to cache hook->next because the following action
+		     * proc may free hook via XtRemoveActionHook making
+		     * hook->next invalid upon return from the action proc.
+		     */
+		    next_hook = hook->next;
+		    (*hook->proc)(bindWidget,
+				  hook->closure,
+				  procName,
+				  event,
+				  actions->params,
+				  &actions->num_params
+				  );
+		    hook = next_hook;
+		}
+	    }
+	    (*(procs[actions->idx]))
+	      (bindWidget, event,
+	       actions->params, &actions->num_params );
+	}
+	actions = actions->next;
+    }
+}
+
+typedef struct {
+    unsigned int isCycleStart:1;
+    unsigned int isCycleEnd:1;
+    TMShortCard typeIndex;
+    TMShortCard modIndex;
+}MatchPairRec, *MatchPair;
+
+typedef struct TMContextRec{
+    TMShortCard	numMatches;
+    TMShortCard	maxMatches;
+    MatchPair	matches;
+}TMContextRec, *TMContext;
+
+static TMContextRec	contextCache[2];
+
+#define GetContextPtr(tm) ((TMContext *)&(tm->current_state))
+
+#define TM_CONTEXT_MATCHES_ALLOC 4
+#define TM_CONTEXT_MATCHES_REALLOC 2
+
+static void PushContext(
+    TMContext	*contextPtr,
+    StatePtr	newState)
+{
+    TMContext 		context = *contextPtr;
+
+    LOCK_PROCESS;
+    if (context == NULL)
+      {
+	  if (contextCache[0].numMatches == 0)
+	    context = &contextCache[0];
+	  else if (contextCache[1].numMatches == 0)
+	    context = &contextCache[1];
+	  if (!context)
+	    {
+		context = XtNew(TMContextRec);
+		context->matches = NULL;
+		context->numMatches =
+		  context->maxMatches = 0;
+	    }
+      }
+    if (context->numMatches &&
+	context->matches[context->numMatches-1].isCycleEnd)
+      {
+	  TMShortCard	i;
+	  for (i = 0;
+	       i < context->numMatches &&
+	       !(context->matches[i].isCycleStart);
+	       i++){};
+	  if (i < context->numMatches)
+	    context->numMatches = i+1;
+#ifdef DEBUG
+	  else
+	    XtWarning("pushing cycle end with no cycle start");
+#endif /* DEBUG */
+      }
+    else
+      {
+	  if (context->numMatches == context->maxMatches)
+	    {
+		if (context->maxMatches == 0)
+		  context->maxMatches += TM_CONTEXT_MATCHES_ALLOC;
+		else
+		  context->maxMatches += TM_CONTEXT_MATCHES_REALLOC;
+		context->matches = (MatchPairRec *)
+		  XtRealloc((char *)context->matches,
+			    context->maxMatches * sizeof(MatchPairRec));
+	    }
+	  context->matches[context->numMatches].isCycleStart = newState->isCycleStart;
+	  context->matches[context->numMatches].isCycleEnd = newState->isCycleEnd;
+	  context->matches[context->numMatches].typeIndex = newState->typeIndex;
+	  context->matches[context->numMatches++].modIndex = newState->modIndex;
+	  *contextPtr = context;
+      }
+      UNLOCK_PROCESS;
+}
+
+static void FreeContext(
+    TMContext	*contextPtr)
+{
+    TMContext 		context = NULL;
+
+    LOCK_PROCESS;
+
+    if (&contextCache[0] == *contextPtr)
+      context = &contextCache[0];
+    else if (&contextCache[1] == *contextPtr)
+      context = &contextCache[1];
+
+    if (context)
+      context->numMatches = 0;
+    else if (*contextPtr)
+    {
+      if ((*contextPtr)->matches)
+        XtFree ((char *) ((*contextPtr)->matches));
+      XtFree((char *)*contextPtr);
+    }
+
+    *contextPtr = NULL;
+    UNLOCK_PROCESS;
+}
+
+static int MatchExact(
+    TMSimpleStateTree 	stateTree,
+    int			startIndex,
+    TMShortCard		typeIndex,
+    TMShortCard		modIndex)
+{
+    TMBranchHead branchHead = &(stateTree->branchHeadTbl[startIndex]);
+    int i;
+
+    for (i = startIndex;
+	 i < (int)stateTree->numBranchHeads;
+	 i++, branchHead++)
+      {
+	  if ((branchHead->typeIndex == typeIndex) &&
+	      (branchHead->modIndex == modIndex))
+	    return i;
+      }
+    return (TM_NO_MATCH);
+}
+
+
+
+static void HandleSimpleState(
+    Widget	w,
+    XtTM	tmRecPtr,
+    TMEventRec	*curEventPtr)
+{
+    XtTranslations	xlations = tmRecPtr->translations;
+    TMSimpleStateTree	stateTree;
+    TMContext		*contextPtr = GetContextPtr(tmRecPtr);
+    TMShortCard		i;
+    ActionRec		*actions = NULL;
+    Boolean		matchExact = False;
+    Boolean	       	match = False;
+    StatePtr		complexMatchState = NULL;
+    int			currIndex;
+    TMShortCard		typeIndex = 0, modIndex = 0;
+    int			matchTreeIndex = TM_NO_MATCH;
+
+    LOCK_PROCESS;
+    stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[0];
+
+    for (i = 0;
+	 ((!match || !complexMatchState) && (i < xlations->numStateTrees));
+	 i++){
+	stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[i];
+	currIndex = -1;
+	/*
+	 * don't process this tree if we're only looking for a
+	 * complexMatchState and there are no complex states
+	 */
+	while (!(match && stateTree->isSimple) &&
+	       ((!match || !complexMatchState) && (currIndex != TM_NO_MATCH))) {
+	    currIndex++;
+	    if (matchExact)
+	      currIndex = MatchExact(stateTree,currIndex,typeIndex,modIndex);
+	    else
+	      currIndex = MatchBranchHead(stateTree,currIndex,curEventPtr);
+	    if (currIndex != TM_NO_MATCH) {
+		TMBranchHead branchHead;
+		StatePtr currState;
+
+		branchHead = &stateTree->branchHeadTbl[currIndex];
+		if (branchHead->isSimple)
+		  currState = NULL;
+		else
+		  currState = ((TMComplexStateTree)stateTree)
+		    ->complexBranchHeadTbl[TMBranchMore(branchHead)];
+
+		/*
+		 * first check for a complete match
+		 */
+		if (!match) {
+		    if (branchHead->hasActions) {
+			if (branchHead->isSimple) {
+			    static ActionRec	dummyAction;
+
+			    dummyAction.idx = TMBranchMore(branchHead);
+			    actions = &dummyAction;
+			}
+			else
+			  actions = currState->actions;
+			tmRecPtr->lastEventTime =
+			  GetTime(tmRecPtr, curEventPtr->xev);
+			FreeContext((TMContext
+				     *)&tmRecPtr->current_state);
+			match = True;
+			matchTreeIndex = i;
+		    }
+		    /*
+		     * if it doesn't have actions and
+		     * it's bc mode then it's a potential match node that is
+		     * used to match later sequences.
+		     */
+		    if (!TMNewMatchSemantics() && !matchExact) {
+			matchExact = True;
+			typeIndex = branchHead->typeIndex;
+			modIndex = branchHead->modIndex;
+		    }
+		}
+		/*
+		 * check for it being an event sequence which can be
+		 * a future match
+		 */
+		if (!branchHead->isSimple &&
+		    !branchHead->hasActions &&
+		    !complexMatchState)
+		  complexMatchState = currState;
+	    }
+	}
+    }
+    if (match)
+      {
+	  TMBindData	bindData = (TMBindData) tmRecPtr->proc_table;
+	  XtActionProc	*procs;
+	  Widget	accelWidget;
+
+	  if (bindData->simple.isComplex) {
+	      TMComplexBindProcs bindProcs =
+		TMGetComplexBindEntry(bindData, matchTreeIndex);
+	      procs = bindProcs->procs;
+	      accelWidget = bindProcs->widget;
+	  }
+	  else {
+	      TMSimpleBindProcs bindProcs =
+		TMGetSimpleBindEntry(bindData, matchTreeIndex);
+	      procs = bindProcs->procs;
+	      accelWidget = NULL;
+	  }
+	  HandleActions
+	    (w,
+	     curEventPtr->xev,
+	     (TMSimpleStateTree)xlations->stateTreeTbl[matchTreeIndex],
+	     accelWidget,
+	     procs,
+	     actions);
+      }
+    if (complexMatchState)
+      PushContext(contextPtr, complexMatchState);
+    UNLOCK_PROCESS;
+}
+
+static int MatchComplexBranch(
+    TMComplexStateTree	stateTree,
+    int			startIndex,
+    TMContext		context,
+    StatePtr		*leafStateRtn)
+{
+    TMShortCard	i;
+
+    LOCK_PROCESS;
+    for (i = startIndex; i < stateTree->numComplexBranchHeads; i++)
+      {
+	  StatePtr	candState;
+	  TMShortCard	numMatches = context->numMatches;
+	  MatchPair	statMatch = context->matches;
+
+	  for (candState = stateTree->complexBranchHeadTbl[i];
+	       numMatches && candState;
+	       numMatches--, statMatch++, candState = candState->nextLevel)
+	    {
+		if ((statMatch->typeIndex != candState->typeIndex) ||
+		    (statMatch->modIndex != candState->modIndex))
+		  break;
+	    }
+	  if (numMatches == 0) {
+	      *leafStateRtn = candState;
+	      UNLOCK_PROCESS;
+	      return i;
+	  }
+      }
+    *leafStateRtn = NULL;
+    UNLOCK_PROCESS;
+    return (TM_NO_MATCH);
+}
+
+static StatePtr TryCurrentTree(
+    TMComplexStateTree	*stateTreePtr,
+    XtTM		tmRecPtr,
+    TMEventRec		*curEventPtr)
+{
+    StatePtr		candState = NULL, matchState = NULL;
+    TMContext		*contextPtr = GetContextPtr(tmRecPtr);
+    TMTypeMatch 	typeMatch;
+    TMModifierMatch 	modMatch;
+    int			currIndex = -1;
+
+    /*
+     * we want the first sequence that both matches and has actions.
+     * we keep on looking till we find both
+     */
+    LOCK_PROCESS;
+    while ((currIndex =
+	    MatchComplexBranch(*stateTreePtr,
+			       ++currIndex,
+			       (*contextPtr),
+			       &candState))
+	   != TM_NO_MATCH) {
+	if (candState  != NULL) {
+	    typeMatch  = TMGetTypeMatch(candState->typeIndex);
+	    modMatch = TMGetModifierMatch(candState->modIndex);
+
+	    /* does this state's index match? --> done */
+	    if (MatchIncomingEvent(curEventPtr, typeMatch, modMatch))
+	      {
+		  if (candState->actions) {
+		      UNLOCK_PROCESS;
+		      return candState;
+		  }
+		  else
+		    matchState = candState;
+	      }
+	    /* is this an event timer? */
+	    if (typeMatch->eventType == _XtEventTimerEventType) {
+		StatePtr nextState = candState->nextLevel;
+
+		/* does the succeeding state match? */
+		if (nextState != NULL) {
+		    TMTypeMatch 	nextTypeMatch;
+		    TMModifierMatch	nextModMatch;
+
+		    nextTypeMatch  = TMGetTypeMatch(nextState->typeIndex);
+		    nextModMatch = TMGetModifierMatch(nextState->modIndex);
+
+		    /* is it within the timeout? */
+		    if (MatchIncomingEvent(curEventPtr,
+					   nextTypeMatch,
+					   nextModMatch)) {
+			XEvent *xev = curEventPtr->xev;
+			unsigned long time = GetTime(tmRecPtr, xev);
+			XtPerDisplay pd = _XtGetPerDisplay(xev->xany.display);
+			unsigned long delta = pd->multi_click_time;
+
+			if ((tmRecPtr->lastEventTime + delta) >= time) {
+			    if (nextState->actions) {
+				UNLOCK_PROCESS;
+				return candState;
+			    }
+			    else
+			      matchState = candState;
+			}
+		    }
+		}
+	    }
+	}
+    }
+    UNLOCK_PROCESS;
+    return matchState;
+}
+
+static void HandleComplexState(
+    Widget	w,
+    XtTM	tmRecPtr,
+    TMEventRec	*curEventPtr)
+{
+    XtTranslations 	xlations = tmRecPtr->translations;
+    TMContext		*contextPtr = GetContextPtr(tmRecPtr);
+    TMShortCard		i, matchTreeIndex = 0;
+    StatePtr		matchState = NULL, candState;
+    TMComplexStateTree 	*stateTreePtr =
+      (TMComplexStateTree *)&xlations->stateTreeTbl[0];
+
+    LOCK_PROCESS;
+    for (i = 0;
+	 i < xlations->numStateTrees;
+	 i++, stateTreePtr++) {
+	/*
+	 * some compilers sign extend Boolean bit fields so test for
+	 * false |||
+	 */
+	if (((*stateTreePtr)->isSimple == False) &&
+	    (candState = TryCurrentTree(stateTreePtr,
+				       tmRecPtr,
+				       curEventPtr))) {
+	    if (!matchState || candState->actions) {
+		matchTreeIndex = i;
+		matchState = candState;
+		if (candState->actions)
+		    break;
+	    }
+	}
+    }
+    if (matchState == NULL){
+	/* couldn't find it... */
+	if (!Ignore(curEventPtr))
+	  {
+	      FreeContext(contextPtr);
+	      HandleSimpleState(w, tmRecPtr, curEventPtr);
+	  }
+    }
+    else {
+	TMBindData	bindData = (TMBindData) tmRecPtr->proc_table;
+	XtActionProc	*procs;
+	Widget		accelWidget;
+	TMTypeMatch 	typeMatch;
+
+	typeMatch  = TMGetTypeMatch(matchState->typeIndex);
+
+	PushContext(contextPtr, matchState);
+	if (typeMatch->eventType == _XtEventTimerEventType) {
+	    matchState = matchState->nextLevel;
+	    PushContext(contextPtr, matchState);
+	}
+	tmRecPtr->lastEventTime = GetTime (tmRecPtr, curEventPtr->xev);
+
+	if (bindData->simple.isComplex) {
+	    TMComplexBindProcs bindProcs =
+	      TMGetComplexBindEntry(bindData, matchTreeIndex);
+	    procs = bindProcs->procs;
+	    accelWidget = bindProcs->widget;
+	}
+	else {
+	    TMSimpleBindProcs bindProcs =
+	      TMGetSimpleBindEntry(bindData, matchTreeIndex);
+	    procs = bindProcs->procs;
+	    accelWidget = NULL;
+	}
+	HandleActions(w,
+		      curEventPtr->xev,
+		      (TMSimpleStateTree)
+		      xlations->stateTreeTbl[matchTreeIndex],
+		      accelWidget,
+		      procs,
+		      matchState->actions);
+    }
+    UNLOCK_PROCESS;
+}
+
+
+void _XtTranslateEvent (
+    Widget w,
+    XEvent * event)
+{
+    XtTM	tmRecPtr = &w->core.tm;
+    TMEventRec 	curEvent;
+    StatePtr 	current_state = tmRecPtr->current_state;
+
+    XEventToTMEvent (event, &curEvent);
+
+    if (! tmRecPtr->translations) {
+        XtAppWarningMsg(XtWidgetToApplicationContext(w),
+			XtNtranslationError,"nullTable",XtCXtToolkitError,
+			"Can't translate event through NULL table",
+			(String *)NULL, (Cardinal *)NULL);
+	return ;
+    }
+    if (current_state == NULL)
+	  HandleSimpleState(w, tmRecPtr, &curEvent);
+    else
+	  HandleComplexState(w, tmRecPtr, &curEvent);
+}
+
+
+/*ARGSUSED*/
+static StatePtr NewState(
+    TMParseStateTree stateTree,
+    TMShortCard	typeIndex,
+    TMShortCard	modIndex)
+{
+    StatePtr state = XtNew(StateRec);
+
+#ifdef TRACE_TM
+    LOCK_PROCESS;
+    _XtGlobalTM.numComplexStates++;
+    UNLOCK_PROCESS;
+#endif /* TRACE_TM */
+    state->typeIndex = typeIndex;
+    state->modIndex = modIndex;
+    state->nextLevel = NULL;
+    state->actions = NULL;
+    state->isCycleStart = state->isCycleEnd = False;
+    return state;
+}
+
+/*
+ * This routine is an iterator for state trees. If the func returns
+ * true then iteration is over.
+ */
+void _XtTraverseStateTree(
+    TMStateTree	tree,
+    _XtTraversalProc func,
+    XtPointer 	data)
+{
+    TMComplexStateTree stateTree = (TMComplexStateTree)tree;
+    TMBranchHead	currBH;
+    TMShortCard		i;
+    StateRec		dummyStateRec, *dummyState = &dummyStateRec;
+    ActionRec		dummyActionRec, *dummyAction = &dummyActionRec;
+    Boolean		firstSimple = True;
+    StatePtr 		currState;
+
+    /* first traverse the complex states */
+    if (stateTree->isSimple == False)
+      for (i = 0; i < stateTree->numComplexBranchHeads; i++) {
+	  currState = stateTree->complexBranchHeadTbl[i];
+	  for (; currState; currState = currState->nextLevel) {
+	      if (func(currState, data))
+		return;
+	      if (currState->isCycleEnd)
+		break;
+	  }
+      }
+
+    /* now traverse the simple ones */
+    for (i = 0, currBH = stateTree->branchHeadTbl;
+	 i < stateTree->numBranchHeads;
+	 i++, currBH++)
+      {
+	  if (currBH->isSimple && currBH->hasActions)
+	    {
+		if (firstSimple)
+		  {
+		      XtBZero((char *) dummyState, sizeof(StateRec));
+		      XtBZero((char *) dummyAction, sizeof(ActionRec));
+		      dummyState->actions = dummyAction;
+		      firstSimple = False;
+		  }
+		dummyState->typeIndex = currBH->typeIndex;
+		dummyState->modIndex = currBH->modIndex;
+		dummyAction->idx = currBH->more;
+		if (func(dummyState, data))
+		  return;
+	    }
+      }
+}
+
+static EventMask EventToMask(
+    TMTypeMatch     typeMatch,
+    TMModifierMatch modMatch)
+{
+    EventMask returnMask;
+    unsigned long eventType = typeMatch->eventType;
+
+    if (eventType == MotionNotify) {
+        Modifiers modifierMask = modMatch->modifierMask;
+        Modifiers tempMask;
+
+	returnMask = 0;
+        if (modifierMask == 0) {
+	    if (modMatch->modifiers == AnyButtonMask)
+		return ButtonMotionMask;
+	    else
+		return PointerMotionMask;
+	}
+        tempMask = modifierMask &
+	    (Button1Mask | Button2Mask | Button3Mask
+	     | Button4Mask | Button5Mask);
+        if (tempMask == 0)
+	    return PointerMotionMask;
+        if (tempMask & Button1Mask)
+            returnMask |= Button1MotionMask;
+        if (tempMask & Button2Mask)
+            returnMask |= Button2MotionMask;
+        if (tempMask & Button3Mask)
+            returnMask |= Button3MotionMask;
+        if (tempMask & Button4Mask)
+            returnMask |= Button4MotionMask;
+        if (tempMask & Button5Mask)
+            returnMask |= Button5MotionMask;
+        return returnMask;
+    }
+    returnMask = _XtConvertTypeToMask(eventType);
+    if (returnMask == (StructureNotifyMask|SubstructureNotifyMask))
+	returnMask = StructureNotifyMask;
+    return returnMask;
+}
+
+/*ARGSUSED*/
+static void DispatchMappingNotify(
+    Widget widget,		/* will be NULL from _RefreshMapping */
+    XtPointer closure,		/* real Widget */
+    XtPointer call_data)	/* XEvent* */
+{
+    _XtTranslateEvent( (Widget)closure, (XEvent*)call_data);
+}
+
+
+/*ARGSUSED*/
+static void RemoveFromMappingCallbacks(
+    Widget widget,
+    XtPointer closure,		/* target widget */
+    XtPointer call_data)
+{
+    _XtRemoveCallback( &_XtGetPerDisplay(XtDisplay(widget))->mapping_callbacks,
+		       DispatchMappingNotify,
+		       closure
+		      );
+}
+
+static Boolean AggregateEventMask(
+    StatePtr	state,
+    XtPointer	data)
+{
+    LOCK_PROCESS;
+    *((EventMask *)data) |= EventToMask(TMGetTypeMatch(state->typeIndex),
+					TMGetModifierMatch(state->modIndex));
+    UNLOCK_PROCESS;
+    return False;
+}
+
+void _XtInstallTranslations(
+    Widget widget)
+{
+    XtTranslations xlations;
+    Cardinal	i;
+    TMStateTree	stateTree;
+    Boolean  mappingNotifyInterest = False;
+
+    xlations = widget->core.tm.translations;
+    if (xlations == NULL) return;
+
+    /*
+     * check for somebody stuffing the translations directly into the
+     * instance structure. We will end up being called again out of
+     * ComposeTranslations but we *should* have bindings by then
+     */
+    if (widget->core.tm.proc_table == NULL) {
+	_XtMergeTranslations(widget, NULL, XtTableReplace);
+	/*
+	 * if we're realized then we'll be called out of
+	 * ComposeTranslations
+	 */
+	if (XtIsRealized(widget))
+	  return;
+    }
+
+    xlations->eventMask = 0;
+    for (i = 0;
+	 i < xlations->numStateTrees;
+	 i++)
+      {
+	  stateTree = xlations->stateTreeTbl[i];
+	  _XtTraverseStateTree(stateTree,
+			    AggregateEventMask,
+			    (XtPointer)&xlations->eventMask);
+	  mappingNotifyInterest |= stateTree->simple.mappingNotifyInterest;
+      }
+    /* double click needs to make sure that you have selected on both
+	button down and up. */
+
+    if (xlations->eventMask & ButtonPressMask)
+      xlations->eventMask |= ButtonReleaseMask;
+    if (xlations->eventMask & ButtonReleaseMask)
+      xlations->eventMask |= ButtonPressMask;
+
+    if (mappingNotifyInterest) {
+	XtPerDisplay pd = _XtGetPerDisplay(XtDisplay(widget));
+	if (pd->mapping_callbacks)
+	    _XtAddCallbackOnce(&(pd->mapping_callbacks),
+			       DispatchMappingNotify,
+			       (XtPointer)widget);
+	else
+	    _XtAddCallback(&(pd->mapping_callbacks),
+			   DispatchMappingNotify,
+			   (XtPointer)widget);
+
+	if (widget->core.destroy_callbacks != NULL)
+	    _XtAddCallbackOnce( (InternalCallbackList *)
+			        &widget->core.destroy_callbacks,
+				RemoveFromMappingCallbacks,
+				(XtPointer)widget
+			       );
+	else
+	    _XtAddCallback((InternalCallbackList *)
+			   &widget->core.destroy_callbacks,
+			   RemoveFromMappingCallbacks,
+			   (XtPointer)widget
+			  );
+    }
+    _XtBindActions(widget, (XtTM)&widget->core.tm);
+    _XtRegisterGrabs(widget);
+}
+
+void _XtRemoveTranslations(
+    Widget widget)
+{
+    Cardinal	i;
+    TMSimpleStateTree	stateTree;
+    Boolean  		mappingNotifyInterest = False;
+    XtTranslations		xlations = widget->core.tm.translations;
+
+    if (xlations == NULL)
+      return;
+
+    for (i = 0;
+	 i < xlations->numStateTrees;
+	 i++)
+      {
+	  stateTree = (TMSimpleStateTree)xlations->stateTreeTbl[i];
+	  mappingNotifyInterest |= stateTree->mappingNotifyInterest;
+      }
+    if (mappingNotifyInterest)
+      RemoveFromMappingCallbacks(widget, (XtPointer)widget, NULL);
+}
+
+static void _XtUninstallTranslations(
+    Widget widget)
+{
+    XtTranslations	xlations = widget->core.tm.translations;
+
+    _XtUnbindActions(widget,
+		     xlations,
+		     (TMBindData)widget->core.tm.proc_table);
+    _XtRemoveTranslations(widget);
+    widget->core.tm.translations = NULL;
+    FreeContext((TMContext *)&widget->core.tm.current_state);
+}
+
+void _XtDestroyTMData(
+    Widget	widget)
+{
+    TMComplexBindData	cBindData;
+
+    _XtUninstallTranslations(widget);
+
+    if ((cBindData = (TMComplexBindData)widget->core.tm.proc_table)) {
+	if (cBindData->isComplex) {
+	    ATranslations	aXlations, nXlations;
+
+	    nXlations = (ATranslations) cBindData->accel_context;
+	    while (nXlations){
+		aXlations = nXlations;
+		nXlations = nXlations->next;
+		XtFree((char *)aXlations);
+	    }
+	}
+	XtFree((char *)cBindData);
+    }
+}
+
+/*** Public procedures ***/
+
+
+void XtUninstallTranslations(
+    Widget widget)
+{
+    EventMask	oldMask;
+    Widget hookobj;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    if (! widget->core.tm.translations) {
+	UNLOCK_APP(app);
+	return;
+    }
+    oldMask = widget->core.tm.translations->eventMask;
+    _XtUninstallTranslations(widget);
+    if (XtIsRealized(widget) && oldMask)
+	XSelectInput(XtDisplay(widget), XtWindow(widget),
+		     XtBuildEventMask(widget));
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHuninstallTranslations;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_APP(app);
+}
+
+XtTranslations _XtCreateXlations(
+    TMStateTree		*stateTrees,
+    TMShortCard		numStateTrees,
+    XtTranslations	first,
+    XtTranslations	second)
+{
+    XtTranslations	xlations;
+    TMShortCard i;
+
+    xlations = (XtTranslations)
+      __XtMalloc(sizeof(TranslationData) +
+	       (numStateTrees-1) * sizeof(TMStateTree));
+#ifdef TRACE_TM
+    LOCK_PROCESS;
+    if (_XtGlobalTM.numTms == _XtGlobalTM.tmTblSize) {
+	_XtGlobalTM.tmTblSize += 16;
+	_XtGlobalTM.tmTbl = (XtTranslations *)
+	  XtRealloc((char *)_XtGlobalTM.tmTbl,
+		   _XtGlobalTM.tmTblSize * sizeof(XtTranslations));
+    }
+    _XtGlobalTM.tmTbl[_XtGlobalTM.numTms++] = xlations;
+    UNLOCK_PROCESS;
+#endif /* TRACE_TM */
+
+    xlations->composers[0] = first;
+    xlations->composers[1] = second;
+    xlations->hasBindings = False;
+    xlations->operation = XtTableReplace;
+
+    for (i = 0;i < numStateTrees; i++)
+      {
+	  xlations->stateTreeTbl[i] = (TMStateTree) stateTrees[i];
+	  stateTrees[i]->simple.refCount++;
+      }
+    xlations->numStateTrees = numStateTrees;
+    xlations->eventMask = 0;
+    return xlations;
+}
+
+TMStateTree _XtParseTreeToStateTree(
+    TMParseStateTree	parseTree)
+{
+    TMSimpleStateTree  simpleTree;
+    unsigned int	tableSize;
+
+    if (parseTree->numComplexBranchHeads) {
+	TMComplexStateTree complexTree;
+
+	complexTree = XtNew(TMComplexStateTreeRec);
+	complexTree->isSimple = False;
+	tableSize = parseTree->numComplexBranchHeads * sizeof(StatePtr);
+	complexTree->complexBranchHeadTbl = (StatePtr *)
+	  __XtMalloc(tableSize);
+	XtMemmove(complexTree->complexBranchHeadTbl,
+		  parseTree->complexBranchHeadTbl, tableSize);
+	complexTree->numComplexBranchHeads =
+	  parseTree->numComplexBranchHeads;
+	simpleTree = (TMSimpleStateTree)complexTree;
+    }
+    else {
+	simpleTree = XtNew(TMSimpleStateTreeRec);
+	simpleTree->isSimple = True;
+    }
+    simpleTree->isAccelerator = parseTree->isAccelerator;
+    simpleTree->refCount = 0;
+    simpleTree->mappingNotifyInterest = parseTree->mappingNotifyInterest;
+
+    tableSize = parseTree->numBranchHeads * sizeof(TMBranchHeadRec);
+    simpleTree->branchHeadTbl = (TMBranchHead)
+      __XtMalloc(tableSize);
+    XtMemmove(simpleTree->branchHeadTbl, parseTree->branchHeadTbl, tableSize);
+    simpleTree->numBranchHeads = parseTree->numBranchHeads;
+
+    tableSize = parseTree->numQuarks * sizeof(XrmQuark);
+    simpleTree->quarkTbl = (XrmQuark *) __XtMalloc(tableSize);
+    XtMemmove(simpleTree->quarkTbl, parseTree->quarkTbl, tableSize);
+    simpleTree->numQuarks = parseTree->numQuarks;
+
+    return (TMStateTree)simpleTree;
+}
+
+static void FreeActions(
+    ActionPtr	actions)
+{
+    ActionPtr action;
+    TMShortCard i;
+    for (action = actions; action;) {
+	ActionPtr nextAction = action->next;
+	for (i = action->num_params; i;) {
+	    XtFree( action->params[--i] );
+	}
+	XtFree( (char*)action->params );
+	XtFree((char*) action);
+	action = nextAction;
+    }
+}
+
+/*ARGSUSED*/
+static void AmbigActions(
+    EventSeqPtr	initialEvent,
+    StatePtr	*state,
+    TMParseStateTree stateTree)
+{
+    String 	params[3];
+    Cardinal 	numParams = 0;
+
+    params[numParams++] = _XtPrintEventSeq(initialEvent, NULL);
+    params[numParams++] = _XtPrintActions((*state)->actions,
+					  stateTree->quarkTbl);
+    XtWarningMsg (XtNtranslationError,"oldActions",XtCXtToolkitError,
+		  "Previous entry was: %s %s", params, &numParams);
+    XtFree((char *)params[0]);
+    XtFree((char *)params[1]);
+    numParams = 0;
+    params[numParams++]  = _XtPrintActions(initialEvent->actions,
+					   stateTree->quarkTbl);
+    XtWarningMsg (XtNtranslationError,"newActions",XtCXtToolkitError,
+		  "New actions are:%s", params, &numParams);
+    XtFree((char *)params[0]);
+    XtWarningMsg (XtNtranslationError,"ambiguousActions",
+		  XtCXtToolkitError,
+		  "Overriding earlier translation manager actions.",
+		  (String *)NULL, (Cardinal *)NULL);
+
+    FreeActions((*state)->actions);
+    (*state)->actions = NULL;
+}
+
+
+void _XtAddEventSeqToStateTree(
+    EventSeqPtr 	eventSeq,
+    TMParseStateTree	stateTree)
+{
+    StatePtr		*state;
+    EventSeqPtr		initialEvent = eventSeq;
+    TMBranchHead	branchHead;
+    TMShortCard		idx, modIndex, typeIndex;
+
+    if (eventSeq == NULL) return;
+
+    /* note that all states in the event seq passed in start out null */
+    /* we fill them in with the matching state as we traverse the list */
+
+    /*
+     * We need to free the parser data structures !!!
+     */
+
+    typeIndex = _XtGetTypeIndex(&eventSeq->event);
+    modIndex = _XtGetModifierIndex(&eventSeq->event);
+    idx = GetBranchHead(stateTree, typeIndex, modIndex, False);
+    branchHead = &stateTree->branchHeadTbl[idx];
+
+    /*
+     * Need to check for pre-existing actions with same lhs |||
+     */
+
+    /*
+     * Check for optimized case. Don't assume that the eventSeq has actions.
+     */
+    if (!eventSeq->next &&
+	 eventSeq->actions &&
+	!eventSeq->actions->next &&
+	!eventSeq->actions->num_params)
+      {
+	  if (eventSeq->event.eventType == MappingNotify)
+	    stateTree->mappingNotifyInterest = True;
+	  branchHead->hasActions = True;
+	  branchHead->more = eventSeq->actions->idx;
+	  FreeActions(eventSeq->actions);
+	  eventSeq->actions = NULL;
+	  return;
+      }
+
+    branchHead->isSimple = False;
+    if (!eventSeq->next)
+      branchHead->hasActions = True;
+    branchHead->more = GetComplexBranchIndex(stateTree, typeIndex, modIndex);
+    state = &stateTree->complexBranchHeadTbl[TMBranchMore(branchHead)];
+
+    for (;;) {
+	*state = NewState(stateTree, typeIndex, modIndex);
+
+	if (eventSeq->event.eventType == MappingNotify)
+	    stateTree->mappingNotifyInterest = True;
+
+	/* *state now points at state record matching event */
+	eventSeq->state = *state;
+
+	if (eventSeq->actions != NULL) {
+	    if ((*state)->actions != NULL)
+	      AmbigActions(initialEvent, state, stateTree);
+	    (*state)->actions = eventSeq->actions;
+#ifdef TRACE_TM
+	    LOCK_PROCESS
+	    _XtGlobalTM.numComplexActions++;
+	    UNLOCK_PROCESS;
+#endif /* TRACE_TM */
+	}
+
+	if (((eventSeq = eventSeq->next) == NULL) || (eventSeq->state))
+	  break;
+
+	state = &(*state)->nextLevel;
+	typeIndex = _XtGetTypeIndex(&eventSeq->event);
+	modIndex = _XtGetModifierIndex(&eventSeq->event);
+	LOCK_PROCESS;
+	if (!TMNewMatchSemantics()) {
+	    /*
+	     * force a potential empty entry into the branch head
+	     * table in order to emulate old matching behavior
+	     */
+	    (void) GetBranchHead(stateTree, typeIndex, modIndex, True);
+	}
+	UNLOCK_PROCESS;
+    }
+
+    if (eventSeq && eventSeq->state) {
+	/* we've been here before... must be a cycle in the event seq. */
+	branchHead->hasCycles = True;
+	(*state)->nextLevel = eventSeq->state;
+	eventSeq->state->isCycleStart = True;
+	(*state)->isCycleEnd = TRUE;
+    }
+}
+
+
+/*
+ * Internal Converter for merging. Old and New must both be valid xlations
+ */
+
+/*ARGSUSED*/
+Boolean _XtCvtMergeTranslations(
+    Display	*dpy,
+    XrmValuePtr args,
+    Cardinal    *num_args,
+    XrmValuePtr from,
+    XrmValuePtr to,
+    XtPointer	*closure_ret)
+{
+    XtTranslations 	first, second, xlations;
+    TMStateTree		*stateTrees, stackStateTrees[16];
+    TMShortCard		numStateTrees, i;
+
+    if (*num_args != 0)
+	XtWarningMsg("invalidParameters","mergeTranslations",XtCXtToolkitError,
+             "MergeTM to TranslationTable needs no extra arguments",
+               (String *)NULL, (Cardinal *)NULL);
+
+    if (to->addr != NULL && to->size < sizeof(XtTranslations)) {
+	to->size = sizeof(XtTranslations);
+	return False;
+    }
+
+    first = ((TMConvertRec*)from->addr)->old;
+    second = ((TMConvertRec*)from->addr)->new;
+
+    numStateTrees = first->numStateTrees + second->numStateTrees;
+
+    stateTrees = (TMStateTree *)
+      XtStackAlloc(numStateTrees * sizeof(TMStateTree), stackStateTrees);
+
+    for (i = 0; i < first->numStateTrees; i++)
+      stateTrees[i] = first->stateTreeTbl[i];
+    for (i = 0; i < second->numStateTrees; i++)
+      stateTrees[i + first->numStateTrees] = second->stateTreeTbl[i];
+
+    xlations = _XtCreateXlations(stateTrees, numStateTrees, first, second);
+
+    if (to->addr != NULL) {
+	*(XtTranslations*)to->addr = xlations;
+    }
+    else {
+	static XtTranslations staticStateTable;
+	staticStateTable = xlations;
+	to->addr= (XPointer)&staticStateTable;
+	to->size = sizeof(XtTranslations);
+    }
+
+    XtStackFree((XtPointer)stateTrees, (XtPointer)stackStateTrees);
+    return True;
+}
+
+
+static XtTranslations MergeThem(
+    Widget		dest,
+    XtTranslations	first,
+    XtTranslations	second)
+{
+    XtCacheRef 		cache_ref;
+    static XrmQuark 	from_type = NULLQUARK, to_type;
+    XrmValue 		from, to;
+    TMConvertRec 	convert_rec;
+    XtTranslations	newTable;
+
+    LOCK_PROCESS;
+    if (from_type == NULLQUARK) {
+	from_type = XrmPermStringToQuark(_XtRStateTablePair);
+	to_type = XrmPermStringToQuark(XtRTranslationTable);
+    }
+    UNLOCK_PROCESS;
+    from.addr = (XPointer)&convert_rec;
+    from.size = sizeof(TMConvertRec);
+    to.addr = (XPointer)&newTable;
+    to.size = sizeof(XtTranslations);
+    convert_rec.old = first;
+    convert_rec.new = second;
+
+    LOCK_PROCESS;
+    if (! _XtConvert(dest, from_type, &from, to_type, &to, &cache_ref)) {
+	UNLOCK_PROCESS;
+	return NULL;
+    }
+    UNLOCK_PROCESS;
+
+#ifndef REFCNT_TRANSLATIONS
+
+    if (cache_ref)
+	XtAddCallback(dest, XtNdestroyCallback,
+		      XtCallbackReleaseCacheRef, (XtPointer)cache_ref);
+
+#endif
+
+    return newTable;
+}
+
+/*
+ * Unmerge will recursively traverse the xlation compose tree and
+ * generate a new xlation that is the result of all instances of
+ * xlations being removed. It currently doesn't differentiate between
+ * the potential that an xlation will be both an accelerator and
+ * normal. This is not supported by the spec anyway.
+ */
+static XtTranslations UnmergeTranslations(
+    Widget		widget,
+    XtTranslations	xlations,
+    XtTranslations	unmergeXlations,
+    TMShortCard		currIndex,
+    TMComplexBindProcs	oldBindings,
+    TMShortCard		numOldBindings,
+    TMComplexBindProcs	newBindings,
+    TMShortCard		*numNewBindingsRtn)
+
+{
+    XtTranslations first, second, result;
+
+    if (!xlations || (xlations == unmergeXlations))
+      return NULL;
+
+    if (xlations->composers[0]) {
+	first = UnmergeTranslations(widget, xlations->composers[0],
+				    unmergeXlations,  currIndex,
+				    oldBindings, numOldBindings,
+				    newBindings, numNewBindingsRtn);
+    }
+    else
+      first = NULL;
+
+    if (xlations->composers[1]) {
+	second = UnmergeTranslations(widget, xlations->composers[1],
+				     unmergeXlations,
+				     currIndex +
+				     xlations->composers[0]->numStateTrees,
+				     oldBindings, numOldBindings,
+				     newBindings, numNewBindingsRtn);
+    }
+    else
+      second = NULL;
+
+    if (first || second) {
+	if (first && second) {
+	    if ((first != xlations->composers[0]) ||
+		(second != xlations->composers[1]))
+	      result = MergeThem(widget, first, second);
+	    else result = xlations;
+	}
+	else {
+	    if (first)
+	      result = first;
+	    else
+	      result = second;
+	}
+    } else { /* only update for leaf nodes */
+  	if (numOldBindings) {
+ 	    Cardinal	i;
+ 	    for (i = 0; i < xlations->numStateTrees; i++) {
+ 		if (xlations->stateTreeTbl[i]->simple.isAccelerator)
+		    newBindings[*numNewBindingsRtn] =
+			oldBindings[currIndex + i];
+ 		(*numNewBindingsRtn)++;
+	    }
+	}
+	result = xlations;
+    }
+    return result;
+}
+
+typedef struct {
+    XtTranslations xlations;
+    TMComplexBindProcs bindings;
+}MergeBindRec, *MergeBind;
+
+static XtTranslations MergeTranslations(
+    Widget		widget,
+    XtTranslations	oldXlations,
+    XtTranslations	newXlations,
+    _XtTranslateOp	operation,
+    Widget		source,
+    TMComplexBindProcs	oldBindings,
+    TMComplexBindProcs	newBindings,
+    TMShortCard		*numNewRtn)
+{
+    XtTranslations      newTable = NULL, xlations;
+    TMComplexBindProcs	bindings;
+    TMShortCard		i, j;
+    TMStateTree 	*treePtr;
+    TMShortCard		numNew = *numNewRtn;
+    MergeBindRec	bindPair[2];
+
+    /* If the new translation has an accelerator context then pull it
+     * off and pass it and the real xlations in to the caching merge
+     * routine.
+     */
+    if (newXlations->hasBindings) {
+	xlations = ((ATranslations) newXlations)->xlations;
+	bindings = (TMComplexBindProcs)
+	    &((ATranslations) newXlations)->bindTbl[0];
+    }
+    else {
+	xlations = newXlations;
+	bindings = NULL;
+    }
+    switch(operation) {
+      case XtTableReplace:
+	newTable = bindPair[0].xlations = xlations;
+	bindPair[0].bindings = bindings;
+	bindPair[1].xlations = NULL;
+	bindPair[1].bindings = NULL;
+	break;
+      case XtTableAugment:
+	bindPair[0].xlations = oldXlations;
+	bindPair[0].bindings = oldBindings;
+	bindPair[1].xlations = xlations;
+	bindPair[1].bindings = bindings;
+	newTable = NULL;
+	break;
+      case XtTableOverride:
+	bindPair[0].xlations = xlations;
+	bindPair[0].bindings = bindings;
+	bindPair[1].xlations = oldXlations;
+	bindPair[1].bindings = oldBindings;
+	newTable = NULL;
+	break;
+    }
+    if (!newTable)
+      newTable = MergeThem(widget, bindPair[0].xlations, bindPair[1].xlations);
+
+    for (i = 0, numNew = 0; i < 2; i++) {
+	if (bindPair[i].xlations)
+	  for (j = 0; j < bindPair[i].xlations->numStateTrees; j++, numNew++) {
+	      if (bindPair[i].xlations->stateTreeTbl[j]->simple.isAccelerator) {
+		  if (bindPair[i].bindings)
+		    newBindings[numNew] = bindPair[i].bindings[j];
+		  else {
+		      newBindings[numNew].widget = source;
+		      newBindings[numNew].aXlations =
+			bindPair[i].xlations;
+		  }
+		}
+	  }
+    }
+    *numNewRtn = numNew;
+    treePtr = &newTable->stateTreeTbl[0];
+    for (i = 0; i < newTable->numStateTrees; i++, treePtr++)
+      (*treePtr)->simple.refCount++;
+    return newTable;
+}
+
+static TMBindData MakeBindData(
+    TMComplexBindProcs	bindings,
+    TMShortCard		numBindings,
+    TMBindData		oldBindData)
+{
+    TMLongCard		bytes;
+    TMShortCard		i;
+    Boolean		isComplex;
+    TMBindData		bindData;
+
+    if (numBindings == 0)
+      return NULL;
+    for (i = 0; i < numBindings; i++)
+      if (bindings[i].widget)
+	break;
+    isComplex = (i < numBindings);
+    if (isComplex)
+      bytes = (sizeof(TMComplexBindDataRec) +
+	       ((numBindings - 1) *
+		sizeof(TMComplexBindProcsRec)));
+    else
+      bytes = (sizeof(TMSimpleBindDataRec) +
+	       ((numBindings - 1) *
+		sizeof(TMSimpleBindProcsRec)));
+
+    bindData = (TMBindData) __XtCalloc(sizeof(char), bytes);
+    bindData->simple.isComplex = isComplex;
+    if (isComplex) {
+	TMComplexBindData cBindData = (TMComplexBindData)bindData;
+	/*
+	 * If there were any accelerator contexts in the old bindData
+	 * then propagate them to the new one.
+	 */
+	if (oldBindData && oldBindData->simple.isComplex)
+	    cBindData->accel_context =
+		((TMComplexBindData) oldBindData)->accel_context;
+	XtMemmove((char *)&cBindData->bindTbl[0], (char *)bindings,
+		  numBindings * sizeof(TMComplexBindProcsRec));
+    }
+    return bindData;
+}
+
+/*
+ * This routine is the central clearinghouse for merging translations
+ * into a widget. It takes care of preping the action bindings for
+ * realize time and calling the converter or doing a straight merge if
+ * the destination is empty.
+ */
+static Boolean ComposeTranslations(
+    Widget dest,
+    _XtTranslateOp operation,
+    Widget source,
+    XtTranslations newXlations)
+{
+    XtTranslations 	newTable, oldXlations;
+    XtTranslations	accNewXlations;
+    EventMask		oldMask = 0;
+    TMBindData		bindData;
+    TMComplexBindProcs	oldBindings = NULL;
+    TMShortCard		numOldBindings = 0, numNewBindings = 0, numBytes;
+    TMComplexBindProcsRec stackBindings[16], *newBindings;
+
+    /*
+     * how should we be handling the refcount decrement for the
+     * replaced translation table ???
+     */
+    if (!newXlations)
+      {
+	  XtAppWarningMsg(XtWidgetToApplicationContext(dest),
+			  XtNtranslationError,"nullTable",XtCXtToolkitError,
+			  "table to (un)merge must not be null",
+			  (String *)NULL, (Cardinal *)NULL);
+	  return False;
+      }
+
+    accNewXlations = newXlations;
+    newXlations = ((newXlations->hasBindings)
+		   ? ((ATranslations)newXlations)->xlations
+		   : newXlations);
+
+    if (!(oldXlations = dest->core.tm.translations))
+      operation = XtTableReplace;
+
+    /*
+     * try to avoid generation of duplicate state trees. If the source
+     * isn't simple (1 state Tree) then it's too much hassle
+     */
+    if (((operation == XtTableAugment) ||
+	 (operation == XtTableOverride)) &&
+	(newXlations->numStateTrees == 1)) {
+	Cardinal	i;
+	for (i = 0; i < oldXlations->numStateTrees; i++)
+	  if (oldXlations->stateTreeTbl[i] ==
+	      newXlations->stateTreeTbl[0])
+	    break;
+	if (i < oldXlations->numStateTrees) {
+	    if (operation == XtTableAugment) {
+		/*
+		 * we don't need to do anything since it's already
+		 * there
+		 */
+		return True;
+	    }
+	    else {/* operation == XtTableOverride */
+		/*
+		 * We'll get rid of the duplicate trees throughout the
+		 * and leave it with a pruned translation table. This
+		 * will only work if the same table has been merged
+		 * into this table (or one of it's composers
+		 */
+		_XtUnmergeTranslations(dest, newXlations);
+		/*
+		 * reset oldXlations so we're back in sync
+		 */
+		if (!(oldXlations = dest->core.tm.translations))
+		  operation = XtTableReplace;
+	    }
+	}
+    }
+
+    bindData = (TMBindData) dest->core.tm.proc_table;
+    if (bindData) {
+	numOldBindings = (oldXlations ? oldXlations->numStateTrees : 0);
+ 	if (bindData->simple.isComplex)
+	    oldBindings = &((TMComplexBindData)bindData)->bindTbl[0];
+ 	else
+	    oldBindings = (TMComplexBindProcs)
+		(&((TMSimpleBindData)bindData)->bindTbl[0]);
+    }
+
+    numBytes =(((oldXlations ? oldXlations->numStateTrees : 0)
+		+ newXlations->numStateTrees) * sizeof(TMComplexBindProcsRec));
+    newBindings = (TMComplexBindProcs) XtStackAlloc(numBytes,  stackBindings);
+    XtBZero((char *)newBindings, numBytes);
+
+    if (operation == XtTableUnmerge) {
+	newTable = UnmergeTranslations(dest,
+				       oldXlations,
+				       newXlations,
+				       0,
+				       oldBindings, numOldBindings,
+				       newBindings, &numNewBindings);
+#ifdef DEBUG
+	/* check for no match for unmerge */
+	if (newTable == oldXlations) {
+	    XtWarning("attempt to unmerge invalid table");
+	    XtStackFree((char *)newBindings, (char *)stackBindings);
+	    return(newTable != NULL);
+	}
+#endif /* DEBUG */
+    }
+    else {
+	newTable = MergeTranslations(dest,
+				     oldXlations,
+				     accNewXlations,
+				     operation,
+				     source,
+				     oldBindings,
+				     newBindings,
+				     &numNewBindings);
+    }
+    if (XtIsRealized(dest)) {
+	oldMask = 0;
+	if (oldXlations)
+	    oldMask = oldXlations->eventMask;
+	_XtUninstallTranslations(dest);
+    }
+
+    dest->core.tm.proc_table =
+      (XtActionProc *) MakeBindData(newBindings, numNewBindings, bindData);
+
+    if (bindData) XtFree((char *)bindData);
+
+    dest->core.tm.translations = newTable;
+
+    if (XtIsRealized(dest)) {
+	EventMask mask = 0;
+	_XtInstallTranslations(dest);
+	if (newTable)
+	    mask = newTable->eventMask;
+	if (mask != oldMask)
+	    XSelectInput(XtDisplay(dest), XtWindow(dest),
+			 XtBuildEventMask(dest));
+    }
+    XtStackFree((XtPointer)newBindings, (XtPointer)stackBindings);
+    return(newTable != NULL);
+}
+
+/*
+ * If a GetValues is done on a translation resource that contains
+ * accelerators we need to return the accelerator context in addition
+ * to the pure translations.  Since this means returning memory that
+ * the client controlls but we still own, we will track the "headers"
+ * that we return (via a linked list pointed to from the bindData) and
+ * free it at destroy time.
+ */
+XtTranslations _XtGetTranslationValue(
+    Widget	w)
+{
+    XtTM		tmRecPtr = (XtTM) &w->core.tm;
+    ATranslations	*aXlationsPtr;
+    TMComplexBindData	cBindData = (TMComplexBindData) tmRecPtr->proc_table;
+    XtTranslations	xlations = tmRecPtr->translations;
+
+    if (!xlations || !cBindData || !cBindData->isComplex)
+	return xlations;
+
+    /* Walk the list looking to see if we already have generated a
+     * header for the currently installed translations.  If we have,
+     * just return that header.  Otherwise create a new header.
+     */
+    for (aXlationsPtr = (ATranslations *) &cBindData->accel_context;
+	 *aXlationsPtr && (*aXlationsPtr)->xlations != xlations;
+	 aXlationsPtr = &(*aXlationsPtr)->next)
+	;
+    if (*aXlationsPtr)
+	return (XtTranslations) *aXlationsPtr;
+    else {
+	/* create a new aXlations context */
+	ATranslations	aXlations;
+	Cardinal	numBindings = xlations->numStateTrees;
+
+	(*aXlationsPtr) = aXlations = (ATranslations)
+	    __XtMalloc(sizeof(ATranslationData) +
+		     (numBindings - 1) * sizeof(TMComplexBindProcsRec));
+
+	aXlations->hasBindings = True;
+	aXlations->xlations = xlations;
+	aXlations->next = NULL;
+	XtMemmove((char *) &aXlations->bindTbl[0],
+		  (char *) &cBindData->bindTbl[0],
+		  numBindings * sizeof(TMComplexBindProcsRec));
+	return (XtTranslations) aXlations;
+    }
+}
+
+
+/*ARGSUSED*/
+static void RemoveStateTree(
+    TMStateTree	tree)
+{
+#ifdef REFCNT_TRANSLATIONS
+    TMComplexStateTree stateTree = (TMComplexStateTree)tree;
+
+    if (--stateTree->refCount == 0) {
+	/*
+	 * should we free/refcount the match recs ?
+	 */
+	if (!stateTree->isSimple)  {
+	    StatePtr	currState, nextState;
+	    TMShortCard i;
+	    for (i = 0; i < stateTree->numComplexBranchHeads; i++) {
+		currState =
+		  nextState =
+		    stateTree->complexBranchHeadTbl[i];
+		for (; nextState;){
+		    FreeActions(currState->actions);
+		    currState->actions = NULL;
+		    if (!currState->isCycleEnd)
+		      nextState = currState->nextLevel;
+		    else
+		      nextState = NULL;
+		    XtFree( (char*)currState );
+		}
+	    }
+	    XtFree((char*)stateTree->complexBranchHeadTbl);
+	}
+	XtFree((char*)stateTree->branchHeadTbl);
+	XtFree((char*)stateTree);
+    }
+#endif /* REFCNT_TRANSLATIONS */
+}
+
+void _XtRemoveStateTreeByIndex(
+    XtTranslations	xlations,
+    TMShortCard	i)
+{
+    TMStateTree		*stateTrees = xlations->stateTreeTbl;
+
+    RemoveStateTree(stateTrees[i]);
+    xlations->numStateTrees--;
+
+    for (; i < xlations->numStateTrees; i++)
+      {
+	  stateTrees[i] = stateTrees[i+1];
+      }
+}
+
+/* ARGSUSED */
+void _XtFreeTranslations(
+    XtAppContext app,
+    XrmValuePtr	toVal,
+    XtPointer	closure,
+    XrmValuePtr	args,
+    Cardinal	*num_args)
+{
+    XtTranslations 	xlations;
+    int 	i;
+
+    if (*num_args != 0)
+	XtAppWarningMsg(app,
+	  "invalidParameters","freeTranslations",XtCXtToolkitError,
+          "Freeing XtTranslations requires no extra arguments",
+	  (String *)NULL, (Cardinal *)NULL);
+
+    xlations = *(XtTranslations*)toVal->addr;
+    for (i = 0; i < (int)xlations->numStateTrees; i++)
+      RemoveStateTree(xlations->stateTreeTbl[i]);
+    XtFree((char *)xlations);
+}
+
+/*  The spec is not clear on when actions specified in accelerators are bound;
+ *  Bind them at Realize the same as translations
+ */
+void XtInstallAccelerators(
+    Widget destination, Widget source)
+{
+    XtTranslations	aXlations;
+    _XtTranslateOp	op;
+    String		buf;
+    WIDGET_TO_APPCON(destination);
+
+    /*
+     * test that it was parsed as an accelarator table. Even though
+     * there doesn't need to be a distinction it makes life easier if
+     * we honor the spec implication that aXlations is an accelerator
+     */
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    if ((!XtIsWidget(source)) ||
+	((aXlations = source->core.accelerators) == NULL) ||
+	(aXlations->stateTreeTbl[0]->simple.isAccelerator == False)) {
+	UNLOCK_PROCESS;
+	UNLOCK_APP(app);
+	return;
+    }
+
+    aXlations = source->core.accelerators;
+    op = aXlations->operation;
+
+    if (ComposeTranslations(destination, op, source, aXlations) &&
+	(XtClass(source)->core_class.display_accelerator != NULL)) {
+
+	buf = _XtPrintXlations(destination, aXlations, source, False);
+	(*(XtClass(source)->core_class.display_accelerator))(source,buf);
+	XtFree(buf);
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void XtInstallAllAccelerators(
+    Widget destination,
+    Widget source)
+{
+    Cardinal i;
+    CompositeWidget cw;
+    WIDGET_TO_APPCON(destination);
+
+    /* Recurse down normal children */
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    if (XtIsComposite(source)) {
+        cw = (CompositeWidget) source;
+        for (i = 0; i < cw->composite.num_children; i++) {
+            XtInstallAllAccelerators(destination,cw->composite.children[i]);
+        }
+    }
+
+    /* Recurse down popup children */
+    if (XtIsWidget(source)) {
+        for (i = 0; i < source->core.num_popups; i++) {
+            XtInstallAllAccelerators(destination,source->core.popup_list[i]);
+        }
+    }
+    /* Finally, apply procedure to this widget */
+    XtInstallAccelerators(destination,source);
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+#if 0 /* dead code */
+static _XtTranslateOp _XtGetTMOperation(
+    XtTranslations xlations)
+{
+    return ((xlations->hasBindings)
+	    ? ((ATranslations)xlations)->xlations->operation
+	    : xlations->operation);
+}
+#endif
+
+void XtAugmentTranslations(
+    Widget widget,
+    XtTranslations new)
+{
+    Widget hookobj;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    (void)ComposeTranslations(widget, XtTableAugment, (Widget)NULL, new);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHaugmentTranslations;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void XtOverrideTranslations(
+    Widget widget,
+    XtTranslations new)
+{
+    Widget hookobj;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    LOCK_PROCESS;
+    (void) ComposeTranslations(widget, XtTableOverride, (Widget)NULL, new);
+    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
+    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
+	XtChangeHookDataRec call_data;
+
+	call_data.type = XtHoverrideTranslations;
+	call_data.widget = widget;
+	XtCallCallbackList(hookobj,
+		((HookObject)hookobj)->hooks.changehook_callbacks,
+		(XtPointer)&call_data);
+    }
+    UNLOCK_PROCESS;
+    UNLOCK_APP(app);
+}
+
+void _XtMergeTranslations(
+    Widget	widget,
+    XtTranslations newXlations,
+    _XtTranslateOp op)
+{
+    if (!newXlations){
+	if (!widget->core.tm.translations)
+	  return;
+	else {
+	  newXlations = widget->core.tm.translations;
+	  widget->core.tm.translations = NULL;
+      }
+    }
+    (void) ComposeTranslations(widget,
+			     op,
+			     (Widget)NULL,
+			     newXlations);
+}
+
+void _XtUnmergeTranslations(
+   Widget		widget,
+    XtTranslations	xlations)
+{
+    ComposeTranslations(widget, XtTableUnmerge, (Widget)NULL, xlations);
+}
diff --git a/libXt/src/Threads.c b/libXt/src/Threads.c
new file mode 100644
index 000000000..aad17ca79
--- /dev/null
+++ b/libXt/src/Threads.c
@@ -0,0 +1,428 @@
+/* $Xorg: Threads.c,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/************************************************************
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+                    All Rights Reserved
+
+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 no-
+tice  appear  in all copies and that both that copyright no-
+tice and this permission notice appear in  supporting  docu-
+mentation,  and  that the name Sun not be used in advertising
+or publicity pertaining to distribution  of  the software
+without specific prior written permission. Sun makes no
+representations about the suitability of this software for
+any purpose. It is provided "as is" without any express or
+implied warranty.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+********************************************************/
+
+/*
+
+Copyright 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Threads.c,v 3.6 2001/12/14 19:56:31 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+
+#ifdef XTHREADS
+
+#define xmalloc __XtMalloc
+#define xfree XtFree
+#include <X11/Xthreads.h>
+
+#ifndef NDEBUG
+#define NDEBUG
+#endif
+#include <assert.h>
+#include <stdio.h>
+
+typedef struct _ThreadStack {
+    unsigned int size;
+    int sp;
+    struct _Tstack {
+	xthread_t t;
+	xcondition_t c;
+    } *st;
+} ThreadStack;
+
+typedef struct _LockRec {
+    xmutex_t mutex;
+    int level;
+    ThreadStack stack;
+#ifndef _XMUTEX_NESTS
+    xthread_t holder;
+    xcondition_t cond;
+#endif
+} LockRec;
+
+
+#define STACK_INCR 16
+
+static LockPtr process_lock = NULL;
+
+static void
+InitProcessLock(void)
+{
+    if(!process_lock) {
+    	process_lock = XtNew(LockRec);
+    	process_lock->mutex = xmutex_malloc();
+    	xmutex_init(process_lock->mutex);
+    	process_lock->level = 0;
+#ifndef _XMUTEX_NESTS
+    	process_lock->cond = xcondition_malloc();
+    	xcondition_init(process_lock->cond);
+    	xthread_clear_id(process_lock->holder);
+#endif
+    }
+}
+
+static void
+ProcessLock(void)
+{
+#ifdef _XMUTEX_NESTS
+    xmutex_lock(process_lock->mutex);
+    process_lock->level++;
+#else
+    xthread_t this_thread = xthread_self();
+
+    xmutex_lock(process_lock->mutex);
+
+    if (!xthread_have_id(process_lock->holder)) {
+	process_lock->holder = this_thread;
+	xmutex_unlock(process_lock->mutex);
+	return;
+    }
+
+    if (xthread_equal(process_lock->holder,this_thread)) {
+	process_lock->level++;
+	xmutex_unlock(process_lock->mutex);
+	return;
+    }
+
+    while(xthread_have_id(process_lock->holder))
+	xcondition_wait(process_lock->cond, process_lock->mutex);
+
+    process_lock->holder = this_thread;
+    assert(xthread_equal(process_lock->holder, this_thread));
+    xmutex_unlock(process_lock->mutex);
+#endif
+}
+
+static void
+ProcessUnlock(void)
+{
+#ifdef _XMUTEX_NESTS
+    process_lock->level--;
+    xmutex_unlock(process_lock->mutex);
+#else
+    xmutex_lock(process_lock->mutex);
+    assert(xthread_equal(process_lock->holder, xthread_self()));
+    if (process_lock->level != 0) {
+	process_lock->level--;
+	xmutex_unlock(process_lock->mutex);
+	return;
+    }
+
+    xthread_clear_id(process_lock->holder);
+    xcondition_signal(process_lock->cond);
+
+    xmutex_unlock(process_lock->mutex);
+#endif
+}
+
+
+static void
+AppLock(XtAppContext app)
+{
+    LockPtr app_lock = app->lock_info;
+#ifdef _XMUTEX_NESTS
+    xmutex_lock(app_lock->mutex);
+    app_lock->level++;
+#else
+    xthread_t self = xthread_self();
+    xmutex_lock(app_lock->mutex);
+    if (!xthread_have_id(app_lock->holder)) {
+	app_lock->holder = self;
+    	assert(xthread_equal(app_lock->holder, self));
+	xmutex_unlock(app_lock->mutex);
+	return;
+    }
+    if (xthread_equal(app_lock->holder, self)) {
+	app_lock->level++;
+	xmutex_unlock(app_lock->mutex);
+	return;
+    }
+    while(xthread_have_id(app_lock->holder)) {
+	xcondition_wait(app_lock->cond, app_lock->mutex);
+    }
+    app_lock->holder = self;
+    assert(xthread_equal(app_lock->holder, self));
+    xmutex_unlock(app_lock->mutex);
+#endif
+}
+
+static void
+AppUnlock(XtAppContext app)
+{
+    LockPtr app_lock = app->lock_info;
+#ifdef _XMUTEX_NESTS
+    app_lock->level--;
+    xmutex_unlock(app_lock->mutex);
+#else
+    xthread_t self;
+
+    self = xthread_self();
+    xmutex_lock(app_lock->mutex);
+    assert(xthread_equal(app_lock->holder, self));
+    if (app_lock->level != 0) {
+	app_lock->level--;
+	xmutex_unlock(app_lock->mutex);
+	return;
+    }
+    xthread_clear_id(app_lock->holder);
+    xcondition_signal(app_lock->cond);
+    xmutex_unlock(app_lock->mutex);
+#endif
+}
+
+static void
+YieldAppLock(
+    XtAppContext app,
+    Boolean* push_thread,
+    Boolean* pushed_thread,
+    int* level)
+{
+    LockPtr app_lock = app->lock_info;
+    xthread_t self = xthread_self();
+#ifndef _XMUTEX_NESTS
+    xmutex_lock(app_lock->mutex);
+    assert(xthread_equal(app_lock->holder, self));
+#endif
+    *level = app_lock->level;
+    if (*push_thread) {
+	*push_thread = FALSE;
+	*pushed_thread = TRUE;
+
+	if(app_lock->stack.sp == (int)app_lock->stack.size - 1) {
+	    unsigned ii;
+	    app_lock->stack.st = (struct _Tstack *)
+		XtRealloc ((char *)app_lock->stack.st,
+		(app_lock->stack.size + STACK_INCR) * sizeof (struct _Tstack));
+	    ii = app_lock->stack.size;
+	    app_lock->stack.size += STACK_INCR;
+	    for ( ; ii < app_lock->stack.size; ii++) {
+		app_lock->stack.st[ii].c = xcondition_malloc();
+		xcondition_init(app_lock->stack.st[ii].c);
+	    }
+	}
+	app_lock->stack.st[++(app_lock->stack.sp)].t = self;
+    }
+#ifdef _XMUTEX_NESTS
+    while (app_lock->level > 0) {
+	app_lock->level--;
+	xmutex_unlock(app_lock->mutex);
+    }
+#else
+    xcondition_signal(app_lock->cond);
+    app_lock->level = 0;
+    xthread_clear_id(app_lock->holder);
+    xmutex_unlock(app_lock->mutex);
+#endif
+}
+
+static void
+RestoreAppLock(
+    XtAppContext app,
+    int level,
+    Boolean* pushed_thread)
+{
+    LockPtr app_lock = app->lock_info;
+    xthread_t self = xthread_self();
+    xmutex_lock(app_lock->mutex);
+#ifdef _XMUTEX_NESTS
+    app_lock->level++;
+#else
+    while(xthread_have_id(app_lock->holder)) {
+	xcondition_wait(app_lock->cond, app_lock->mutex);
+    }
+#endif
+    if (!xthread_equal(app_lock->stack.st[app_lock->stack.sp].t, self)) {
+	int ii;
+	for (ii = app_lock->stack.sp - 1; ii >= 0; ii--) {
+	    if (xthread_equal(app_lock->stack.st[ii].t, self)) {
+		xcondition_wait(app_lock->stack.st[ii].c, app_lock->mutex);
+		break;
+	    }
+	}
+#ifndef _XMUTEX_NESTS
+	while(xthread_have_id(app_lock->holder)) {
+	    xcondition_wait(app_lock->cond, app_lock->mutex);
+	}
+#endif
+    }
+#ifdef _XMUTEX_NESTS
+    while (app_lock->level < level) {
+	xmutex_lock(app_lock->mutex);
+	app_lock->level++;
+    }
+#else
+    app_lock->holder = self;
+    app_lock->level = level;
+    assert(xthread_equal(app_lock->holder, self));
+#endif
+    if (*pushed_thread) {
+	*pushed_thread = FALSE;
+	(app_lock->stack.sp)--;
+	if (app_lock->stack.sp >= 0) {
+	    xcondition_signal (app_lock->stack.st[app_lock->stack.sp].c);
+	}
+    }
+#ifndef _XMUTEX_NESTS
+    xmutex_unlock(app_lock->mutex);
+#endif
+}
+
+static void
+FreeAppLock(XtAppContext app)
+{
+    unsigned ii;
+    LockPtr app_lock = app->lock_info;
+
+    if(app_lock) {
+	xmutex_clear(app_lock->mutex);
+	xmutex_free(app_lock->mutex);
+#ifndef _XMUTEX_NESTS
+	xcondition_clear(app_lock->cond);
+	xcondition_free(app_lock->cond);
+#endif
+	if(app_lock->stack.st != (struct _Tstack *)NULL) {
+	    for (ii = 0; ii < app_lock->stack.size; ii++) {
+		xcondition_clear(app_lock->stack.st[ii].c);
+		xcondition_free(app_lock->stack.st[ii].c);
+	    }
+	    XtFree((char *)app_lock->stack.st);
+	}
+	XtFree((char *)app_lock);
+	app->lock_info = NULL;
+    }
+}
+
+static void
+InitAppLock(XtAppContext app)
+{
+    int ii;
+    LockPtr app_lock;
+
+    app->lock = AppLock;
+    app->unlock = AppUnlock;
+    app->yield_lock = YieldAppLock;
+    app->restore_lock = RestoreAppLock;
+    app->free_lock = FreeAppLock;
+
+    app_lock = app->lock_info = XtNew(LockRec);
+    app_lock->mutex = xmutex_malloc();
+    xmutex_init(app_lock->mutex);
+    app_lock->level = 0;
+#ifndef _XMUTEX_NESTS
+    app_lock->cond = xcondition_malloc();
+    xcondition_init(app_lock->cond);
+    xthread_clear_id(app_lock->holder);
+#endif
+    app_lock->stack.size = STACK_INCR;
+    app_lock->stack.sp = -1;
+    app_lock->stack.st =
+	(struct _Tstack *)__XtMalloc(sizeof(struct _Tstack)*STACK_INCR);
+    for (ii = 0; ii < STACK_INCR; ii++) {
+	app_lock->stack.st[ii].c = xcondition_malloc();
+	xcondition_init(app_lock->stack.st[ii].c);
+    }
+}
+
+#endif /* defined(XTHREADS) */
+
+void XtAppLock(XtAppContext app)
+{
+#ifdef XTHREADS
+    if(app->lock)
+	(*app->lock)(app);
+#endif
+}
+
+void XtAppUnlock(XtAppContext app)
+{
+#ifdef XTHREADS
+    if(app->unlock)
+	(*app->unlock)(app);
+#endif
+}
+
+void XtProcessLock(void)
+{
+#ifdef XTHREADS
+    if(_XtProcessLock)
+	(*_XtProcessLock)();
+#endif
+}
+
+void XtProcessUnlock(void)
+{
+#ifdef XTHREADS
+    if(_XtProcessUnlock)
+	(*_XtProcessUnlock)();
+#endif
+}
+
+Boolean XtToolkitThreadInitialize(void)
+{
+#ifdef XTHREADS
+    if (_XtProcessLock == NULL) {
+#ifdef xthread_init
+	xthread_init();
+#endif
+	InitProcessLock();
+	_XtProcessLock = ProcessLock;
+	_XtProcessUnlock = ProcessUnlock;
+	_XtInitAppLock = InitAppLock;
+    }
+    return True;
+#else
+    return False;
+#endif
+}
+
diff --git a/libXt/src/VarCreate.c b/libXt/src/VarCreate.c
new file mode 100644
index 000000000..b3761e8b8
--- /dev/null
+++ b/libXt/src/VarCreate.c
@@ -0,0 +1,399 @@
+/* $Xorg: VarCreate.c,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/*
+
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+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, and that the name Sun not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+Sun makes no representations about the suitability of
+this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+*/
+
+/*
+
+Copyright 1885, 1986, 1987, 1988, 1989, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/VarCreate.c,v 3.6 2001/08/22 22:52:20 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "Shell.h"
+#include "VarargsI.h"
+#include "CreateI.h"
+
+#if (defined(SUNSHLIB) || defined(AIXSHLIB)) && defined(SHAREDCODE)
+#define XtToolkitInitialize _XtToolkitInitialize
+#endif /* (SUNSHLIB || AIXSHLIB) && SHAREDCODE */
+
+static Widget
+_XtVaCreateWidget(
+    String      name,
+    WidgetClass widget_class,
+    Widget      parent,
+    va_list     var,
+    int		count)
+{
+    register Widget         widget;
+    XtTypedArgList	    typed_args = NULL;
+    Cardinal		    num_args;
+
+    _XtVaToTypedArgList(var, count, &typed_args, &num_args);
+
+    widget = _XtCreateWidget(name, widget_class, parent, (ArgList)NULL, 
+		    (Cardinal)0, typed_args, num_args);
+
+    if (typed_args != NULL) {
+        XtFree((XtPointer)typed_args);
+    }    
+
+    return widget;
+}
+
+
+Widget
+XtVaCreateWidget(
+    _Xconst char* name,
+    WidgetClass widget_class,
+    Widget parent,
+    ...)
+{
+    va_list                 var;
+    register Widget         widget;
+    int			    total_count, typed_count;
+    WIDGET_TO_APPCON(parent);
+
+    LOCK_APP(app);
+    va_start(var,parent);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var,parent);
+    widget = _XtVaCreateWidget((String)name, widget_class, parent, var,
+				total_count);
+    va_end(var);
+    UNLOCK_APP(app);
+    return widget;
+}
+
+
+Widget
+XtVaCreateManagedWidget(
+    _Xconst char* name,
+    WidgetClass widget_class,
+    Widget parent,
+    ...)
+{
+    va_list		var;
+    register Widget	widget;
+    int			total_count, typed_count;
+    WIDGET_TO_APPCON(parent);
+
+    LOCK_APP(app);
+    va_start(var,parent);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var,parent);
+    widget = _XtVaCreateWidget((String)name, widget_class, parent, var,
+				total_count);
+    XtManageChild(widget);
+    va_end(var);
+    UNLOCK_APP(app);
+    return widget;
+}
+
+
+Widget
+XtVaAppCreateShell(
+    _Xconst char* name,
+    _Xconst char* class,
+    WidgetClass widget_class,
+    Display* display,
+    ...)
+{
+    va_list                 var;
+    register Widget         widget;
+    XtTypedArgList          typed_args = NULL;
+    Cardinal                num_args;
+    int			    total_count, typed_count;
+    DPY_TO_APPCON(display);
+
+    LOCK_APP(app);
+    va_start(var,display);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var,display);
+
+    _XtVaToTypedArgList(var, total_count, &typed_args, &num_args);
+    widget = _XtAppCreateShell((String)name, (String)class, widget_class,
+		display, (ArgList)NULL, (Cardinal)0, typed_args, num_args);
+    if (typed_args != NULL) {
+	XtFree((XtPointer)typed_args);
+    }
+ 
+    va_end(var);
+    UNLOCK_APP(app);
+    return widget;
+}
+
+
+Widget
+XtVaCreatePopupShell(
+    _Xconst char* name,
+    WidgetClass widget_class,
+    Widget parent,
+    ...)
+{
+    va_list                 var;
+    register Widget         widget;
+    XtTypedArgList          typed_args = NULL;
+    Cardinal                num_args;
+    int			    total_count, typed_count;
+    WIDGET_TO_APPCON(parent);
+
+    LOCK_APP(app);
+    va_start(var,parent);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var,parent);
+
+    _XtVaToTypedArgList(var, total_count, &typed_args, &num_args);
+    widget = _XtCreatePopupShell((String)name, widget_class, parent,
+		(ArgList)NULL, (Cardinal)0, typed_args, num_args);
+    if (typed_args != NULL) {
+	XtFree((XtPointer)typed_args);
+    }
+
+    va_end(var);
+    UNLOCK_APP(app);
+    return widget;
+}
+
+void
+XtVaSetValues(Widget widget, ...)
+{
+    va_list                 var;
+    ArgList                 args = NULL;
+    Cardinal                num_args;
+    int			    total_count, typed_count;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    va_start(var,widget);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var,widget);
+
+    _XtVaToArgList(widget, var, total_count, &args, &num_args);
+    XtSetValues(widget, args, num_args);
+    _XtFreeArgList(args, total_count, typed_count);
+
+    UNLOCK_APP(app);
+    va_end(var);
+}
+
+
+void
+XtVaSetSubvalues(XtPointer base, XtResourceList resources, Cardinal num_resources, ...)
+{
+    va_list	var;
+    ArgList    	args;
+    Cardinal   	num_args;
+    int		total_count, typed_count;		
+
+    va_start(var, num_resources);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    if (typed_count != 0) {
+	XtWarning("XtVaTypedArg is not valid in XtVaSetSubvalues()\n");
+    }
+
+    va_start(var, num_resources);
+    _XtVaToArgList((Widget)NULL, var, total_count, &args, &num_args);
+
+    XtSetSubvalues(base, resources, num_resources, args, num_args);
+
+    if (num_args != 0) {
+        XtFree((XtPointer)args);
+    }    
+
+    va_end(var);
+}
+
+Widget
+_XtVaOpenApplication(
+    XtAppContext *app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescList options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    WidgetClass widget_class,
+    va_list var_args)
+{
+    XtAppContext app_con;
+    Display * dpy;
+    register int saved_argc = *argc_in_out;
+    Widget root;
+    String attr;
+    int count = 0;
+    XtTypedArgList typed_args;
+
+    XtToolkitInitialize(); /* cannot be moved into _XtAppInit */
+    
+    dpy = _XtAppInit(&app_con, (String)application_class, options, num_options,
+		     argc_in_out, &argv_in_out, fallback_resources);
+
+    typed_args = (XtTypedArgList) __XtMalloc((unsigned) sizeof(XtTypedArg));
+    attr = va_arg (var_args, String);
+    for(; attr != NULL; attr = va_arg (var_args, String)) {
+        if (strcmp(attr, XtVaTypedArg) == 0) {
+            typed_args[count].name = va_arg(var_args, String);
+            typed_args[count].type = va_arg(var_args, String);
+            typed_args[count].value = va_arg(var_args, XtArgVal);
+            typed_args[count].size = va_arg(var_args, int);
+        } else {
+	    typed_args[count].name = attr;
+	    typed_args[count].type = NULL;
+	    typed_args[count].value = va_arg(var_args, XtArgVal);
+	    typed_args[count].size = 0;
+        }
+	count++;
+	typed_args = (XtTypedArgList) 
+	    XtRealloc((char *) typed_args, 
+		       (unsigned) (count + 1) * sizeof(XtTypedArg));
+    }
+    typed_args[count].name = NULL;
+
+    va_end (var_args);
+
+    root =
+	XtVaAppCreateShell( NULL, application_class, 
+			    widget_class, dpy,
+			    XtNscreen, (XtArgVal)DefaultScreenOfDisplay(dpy),
+			    XtNargc, (XtArgVal)saved_argc,
+			    XtNargv, (XtArgVal)argv_in_out,
+			    XtVaNestedList, (XtVarArgsList)typed_args,
+			    NULL );
+   
+    if (app_context_return != NULL)
+	*app_context_return = app_con;
+
+    XtFree((XtPointer)typed_args);
+    XtFree((XtPointer)argv_in_out);
+    return(root);
+}
+
+Widget
+_XtVaAppInitialize(
+    XtAppContext *app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescList options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    va_list var_args)
+{
+    return _XtVaOpenApplication(app_context_return, application_class,
+				options, num_options,
+				argc_in_out, argv_in_out, fallback_resources,
+				applicationShellWidgetClass, var_args);
+}
+
+#if !((defined(SUNSHLIB) || defined(AIXSHLIB)) && defined(SHAREDCODE))
+
+/*
+ * If not used as a shared library, we still need a front end to 
+ * _XtVaOpenApplication and to _XtVaAppInitialize.
+ */
+
+Widget
+XtVaOpenApplication(
+    XtAppContext *app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescList options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    WidgetClass widget_class,
+    ...)
+{
+    va_list	var;
+
+    va_start(var, widget_class);    
+    return _XtVaOpenApplication(app_context_return, (String)application_class,
+				options, num_options, argc_in_out, argv_in_out,
+				fallback_resources, widget_class, var);
+}
+
+Widget
+XtVaAppInitialize(
+    XtAppContext *app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescList options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    ...)
+{
+    va_list	var;
+
+    va_start(var, fallback_resources);    
+    return _XtVaOpenApplication(app_context_return, (String)application_class,
+				options, num_options, argc_in_out, argv_in_out,
+				fallback_resources,
+				applicationShellWidgetClass, var);
+}
+
+#endif /* !((SUNSHLIB || AIXSHLIB) && SHAREDCODE) */
+
diff --git a/libXt/src/VarGet.c b/libXt/src/VarGet.c
new file mode 100644
index 000000000..cdb425a71
--- /dev/null
+++ b/libXt/src/VarGet.c
@@ -0,0 +1,317 @@
+/* $Xorg: VarGet.c,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+/*
+
+Copyright 1993 by Sun Microsystems, Inc. Mountain View, CA.
+
+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, and that the name Sun not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+Sun makes no representations about the suitability of
+this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-
+NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-
+ABLE  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.
+
+*/
+
+/*
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/VarGet.c,v 1.7 2001/07/29 05:01:12 tsi Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "VarargsI.h"
+#include "StringDefs.h"
+
+static String XtNxtGetTypedArg = "xtGetTypedArg";
+
+void
+XtVaGetSubresources(
+    Widget widget,
+    XtPointer base,
+    _Xconst char* name,
+    _Xconst char* class,
+    XtResourceList resources,
+    Cardinal num_resources,
+    ...)
+{
+    va_list                 var;
+    XtTypedArgList          args;
+    Cardinal                num_args;
+    int			    total_count, typed_count;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    va_start(var, num_resources);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var, num_resources);
+
+    _XtVaToTypedArgList(var, total_count, &args, &num_args);
+
+    _XtGetSubresources(widget, base, name, class, resources, num_resources,
+	NULL, 0, args, num_args);
+
+    if (num_args != 0) {
+	XtFree((XtPointer)args);
+    }
+
+    va_end(var);
+    UNLOCK_APP(app);
+}
+
+
+void
+XtVaGetApplicationResources(Widget widget, XtPointer base, XtResourceList resources, Cardinal num_resources, ...)
+{
+    va_list                 var;
+    XtTypedArgList          args;
+    Cardinal                num_args;
+    int			    total_count, typed_count;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    va_start(var,num_resources);
+    _XtCountVaList(var, &total_count, &typed_count);
+    va_end(var);
+
+    va_start(var,num_resources);
+
+    _XtVaToTypedArgList(var, total_count, &args, &num_args);
+
+    _XtGetApplicationResources(widget, base, resources, num_resources,
+	NULL, 0, args, num_args);
+
+    if (num_args != 0) {
+	XtFree((XtPointer)args);
+    }
+
+    va_end(var);
+    UNLOCK_APP(app);
+}
+
+
+static void
+GetTypedArg(
+    Widget              widget,
+    XtTypedArgList	typed_arg,
+    XtResourceList      resources,
+    Cardinal            num_resources)
+{
+    String              from_type = NULL;
+    Cardinal		from_size = 0;
+    XrmValue            from_val, to_val;
+    register Cardinal   i;
+    Arg			arg;
+    XtPointer		value;
+
+    /* note we presume that the XtResourceList to be un-compiled */
+
+    for (i = 0; i < num_resources; i++) {
+        if (StringToName(typed_arg->name) == StringToName(resources[i].resource_name)) {
+            from_type = resources[i].resource_type;
+	    from_size = resources[i].resource_size;
+            break;
+        }
+    }
+
+    if (i == num_resources) {
+	XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+            "unknownType", XtNxtGetTypedArg, XtCXtToolkitError,
+            "Unable to find type of resource for conversion",
+            (String *)NULL, (Cardinal *)NULL);
+ 	return;
+    }
+
+    value = ALLOCATE_LOCAL(from_size);
+    if (value == NULL) _XtAllocError(NULL);
+    XtSetArg(arg, typed_arg->name, value);
+    XtGetValues(widget, &arg, 1);
+
+    from_val.size = from_size;
+    from_val.addr = (XPointer)value;
+    to_val.addr = (XPointer)typed_arg->value;
+    to_val.size = typed_arg->size;
+
+    if (!XtConvertAndStore(widget, from_type, &from_val,
+			   typed_arg->type, &to_val)) {
+	if (to_val.size > (unsigned) typed_arg->size) {
+	    String params[2];
+	    Cardinal num_params = 2;
+	    params[0] = typed_arg->type;
+	    params[1] = XtName(widget);
+	    XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"insufficientSpace", XtNxtGetTypedArg, XtCXtToolkitError,
+		"Insufficient space for converted type '%s' in widget '%s'",
+		params, &num_params);
+	}
+	else {
+	    String params[3];
+	    Cardinal num_params = 3;
+	    params[0] = from_type;
+	    params[1] = typed_arg->type;
+	    params[2] = XtName(widget);
+	    XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+		"conversionFailed", XtNxtGetTypedArg, XtCXtToolkitError,
+		"Type conversion (%s to %s) failed for widget '%s'",
+		params, &num_params);
+	}
+    }
+    DEALLOCATE_LOCAL(value);
+}
+
+static int
+GetNestedArg(
+    Widget              widget,
+    XtTypedArgList	avlist,
+    ArgList             args,
+    XtResourceList      resources,
+    Cardinal            num_resources)
+{
+    int         count = 0;
+
+    for (; avlist->name != NULL; avlist++) {
+        if (avlist->type != NULL) {
+	    GetTypedArg(widget, avlist, resources, num_resources);
+        } else if(strcmp(avlist->name, XtVaNestedList) == 0) {
+            count += GetNestedArg(widget, (XtTypedArgList)avlist->value,
+				     args, resources, num_resources);
+        } else {
+            (args+count)->name = avlist->name;
+            (args+count)->value = avlist->value;
+            ++count;
+        }
+    }
+
+    return(count);
+}
+
+void
+XtVaGetValues(Widget widget, ...)
+{
+    va_list		var;
+    String      	attr;
+    ArgList    		args;
+    XtTypedArg		typed_arg;
+    XtResourceList      resources = (XtResourceList)NULL;
+    Cardinal            num_resources;
+    int			count, total_count, typed_count;
+    WIDGET_TO_APPCON(widget);
+
+    LOCK_APP(app);
+    va_start(var,widget);
+
+    _XtCountVaList(var, &total_count, &typed_count);
+
+    if (total_count != typed_count) {
+        args = (ArgList)__XtMalloc((unsigned)((total_count - typed_count)
+				* sizeof(Arg)));
+    }
+    else args = NULL;		/* for lint; really unused */
+    va_end(var);
+
+    va_start(var,widget);
+    for(attr = va_arg(var, String), count = 0 ; attr != NULL;
+			attr = va_arg(var, String)) {
+	if (strcmp(attr, XtVaTypedArg) == 0) {
+	    typed_arg.name = va_arg(var, String);
+	    typed_arg.type = va_arg(var, String);
+	    typed_arg.value = va_arg(var, XtArgVal);
+	    typed_arg.size = va_arg(var, int);
+
+	    if (resources == NULL) {
+		XtGetResourceList(XtClass(widget), &resources,&num_resources);
+	    }
+
+	    GetTypedArg(widget, &typed_arg, resources, num_resources);
+	} else if (strcmp(attr, XtVaNestedList) == 0) {
+	    if (resources == NULL) {
+		XtGetResourceList(XtClass(widget),&resources, &num_resources);
+	    }
+
+	    count += GetNestedArg(widget, va_arg(var, XtTypedArgList),
+				     (args+count), resources, num_resources);
+	} else {
+	    args[count].name = attr;
+	    args[count].value = va_arg(var, XtArgVal);
+	    count ++;
+	}
+    }
+    va_end(var);
+
+    if (resources != (XtResourceList)NULL) {
+	XtFree((XtPointer)resources);
+    }
+
+    if (total_count != typed_count) {
+	XtGetValues(widget, args, count);
+	XtFree((XtPointer)args);
+    }
+    UNLOCK_APP(app);
+}
+
+void
+XtVaGetSubvalues(XtPointer base,XtResourceList  resources, Cardinal num_resources, ...)
+{
+    va_list	var;
+    ArgList    	args;
+    Cardinal   	num_args;
+    int		total_count, typed_count;
+
+    va_start(var,num_resources);
+
+    _XtCountVaList(var, &total_count, &typed_count);
+
+    if (typed_count != 0) {
+	XtWarning("XtVaTypedArg is an invalid argument to XtVaGetSubvalues()\n");
+    }
+    va_end(var);
+
+    va_start(var,num_resources);
+    _XtVaToArgList((Widget)NULL, var, total_count, &args, &num_args);
+    va_end(var);
+
+    XtGetSubvalues(base, resources, num_resources, args, num_args);
+
+    if (num_args != 0) {
+        XtFree((XtPointer)args);
+    }
+}
diff --git a/libXt/src/Varargs.c b/libXt/src/Varargs.c
new file mode 100644
index 000000000..37d3c64db
--- /dev/null
+++ b/libXt/src/Varargs.c
@@ -0,0 +1,519 @@
+/* $Xorg: Varargs.c,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/*
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/Varargs.c,v 3.10 2001/12/14 19:56:32 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "VarargsI.h"
+#include "StringDefs.h"
+
+static String XtNxtConvertVarToArgList = "xtConvertVarToArgList";
+
+/*
+ *    Given a nested list, _XtCountNestedList() returns counts of the
+ *    total number of attribute-value pairs and the count of those
+ *    attributes that are typed. The list is counted recursively.
+ */
+static  void
+_XtCountNestedList(
+    XtTypedArgList  avlist,
+    int             *total_count,
+    int             *typed_count)
+{
+    for (; avlist->name != NULL; avlist++) {
+        if (strcmp(avlist->name, XtVaNestedList) == 0) {
+            _XtCountNestedList((XtTypedArgList)avlist->value, total_count,
+                	       typed_count);
+        } else {
+            if (avlist->type != NULL) {
+                ++(*typed_count);
+            }
+            ++(*total_count);
+        }
+    }
+}
+
+
+/*
+ *    Given a variable length attribute-value list, _XtCountVaList()
+ *    returns counts of the total number of attribute-value pairs,
+ *    and the count of the number of those attributes that are typed.
+ *    The list is counted recursively.
+ */
+void
+_XtCountVaList(va_list var, int* total_count, int* typed_count)
+{
+    String          attr;
+
+    *total_count = 0;
+    *typed_count = 0;
+
+    for(attr = va_arg(var, String) ; attr != NULL;
+                        attr = va_arg(var, String)) {
+        if (strcmp(attr, XtVaTypedArg) == 0) {
+            (void)va_arg(var, String);
+            (void)va_arg(var, String);
+            (void)va_arg(var, XtArgVal);
+            (void)va_arg(var, int);
+            ++(*total_count);
+            ++(*typed_count);
+        } else if (strcmp(attr, XtVaNestedList) == 0) {
+            _XtCountNestedList(va_arg(var, XtTypedArgList), total_count,
+                typed_count);
+        } else {
+            (void)va_arg(var, XtArgVal);
+            ++(*total_count);
+	}
+    }
+}
+
+
+/*
+ *   Given a variable length attribute-value list, XtVaCreateArgsList()
+ *   constructs an attribute-value list of type XtTypedArgList and
+ *   returns the list.
+ */
+XtVarArgsList
+XtVaCreateArgsList(XtPointer unused, ...)
+{
+    va_list var;
+    XtTypedArgList  avlist;
+    int		    count = 0;
+    String	    attr;
+
+    /*
+     * Count the number of attribute-value pairs in the list.
+     * Note: The count is required only to allocate enough space to store
+     * the list. Therefore nested lists are not counted recursively.
+     */
+    va_start(var,unused);
+    for(attr = va_arg(var, String) ; attr != NULL;
+                        attr = va_arg(var, String)) {
+        ++count;
+        if (strcmp(attr, XtVaTypedArg) == 0) {
+            (void)va_arg(var, String);
+            (void)va_arg(var, String);
+            (void)va_arg(var, XtArgVal);
+            (void)va_arg(var, int);
+        } else {
+            (void)va_arg(var, XtArgVal);
+        }
+    }
+    va_end(var);
+
+    va_start(var,unused);
+    avlist = _XtVaCreateTypedArgList(var, count);
+    va_end(var);
+    return (XtVarArgsList)avlist;
+}
+
+
+XtTypedArgList _XtVaCreateTypedArgList(va_list var, register int count)
+{
+    String	    attr;
+    XtTypedArgList  avlist;
+
+    avlist = (XtTypedArgList)
+		__XtCalloc((int)count + 1, (unsigned)sizeof(XtTypedArg));
+
+    for(attr = va_arg(var, String), count = 0; attr != NULL;
+		attr = va_arg(var, String)) {
+	if (strcmp(attr, XtVaTypedArg) == 0) {
+	    avlist[count].name = va_arg(var, String);
+	    avlist[count].type = va_arg(var, String);
+	    avlist[count].value = va_arg(var, XtArgVal);
+	    avlist[count].size = va_arg(var, int);
+	} else {
+	    avlist[count].name = attr;
+	    avlist[count].type = NULL;
+	    avlist[count].value = va_arg(var, XtArgVal);
+	}
+	++count;
+    }
+    avlist[count].name = NULL;
+
+    return avlist;
+}
+
+
+/*
+ *    TypedArgToArg() invokes a resource converter to convert the
+ *    passed typed arg into a name/value pair and stores the name/value
+ *    pair in the passed Arg structure.  If memory is allocated for the
+ *    converted value, the address is returned in the value field of
+ *    memory_return; otherwise that field is NULL.  The function returns
+ *    1 if the conversion succeeded and 0 if the conversion failed.
+ */
+static int
+TypedArgToArg(
+    Widget              widget,
+    XtTypedArgList      typed_arg,
+    ArgList             arg_return,
+    XtResourceList      resources,
+    Cardinal            num_resources,
+    ArgList		memory_return)
+{
+    String              to_type = NULL;
+    XrmValue            from_val, to_val;
+
+
+    if (widget == NULL) {
+        XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+            "nullWidget", XtNxtConvertVarToArgList, XtCXtToolkitError,
+	    "XtVaTypedArg conversion needs non-NULL widget handle",
+            (String *)NULL, (Cardinal *)NULL);
+        return(0);
+    }
+
+    /* again we assume that the XtResourceList is un-compiled */
+
+    for (; num_resources--; resources++)
+	if (strcmp(typed_arg->name, resources->resource_name) == 0) {
+	    to_type = resources->resource_type;
+	    break;
+	}
+
+    if (to_type == NULL) {
+        XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+            "unknownType", XtNxtConvertVarToArgList, XtCXtToolkitError,
+            "Unable to find type of resource for conversion",
+            (String *)NULL, (Cardinal *)NULL);
+        return(0);
+    }
+
+    to_val.addr = NULL;
+    from_val.size = typed_arg->size;
+    if ((strcmp(typed_arg->type, XtRString) == 0) ||
+            ((unsigned) typed_arg->size > sizeof(XtArgVal))) {
+        from_val.addr = (XPointer)typed_arg->value;
+    } else {
+            from_val.addr = (XPointer)&typed_arg->value;
+    }
+
+    LOCK_PROCESS;
+    XtConvertAndStore(widget, typed_arg->type, &from_val, to_type, &to_val);
+
+    if (to_val.addr == NULL) {
+	UNLOCK_PROCESS;
+        XtAppWarningMsg(XtWidgetToApplicationContext(widget),
+            "conversionFailed", XtNxtConvertVarToArgList, XtCXtToolkitError,
+            "Type conversion failed", (String *)NULL, (Cardinal *)NULL);
+        return(0);
+    }
+
+    arg_return->name = typed_arg->name;
+    memory_return->value = (XtArgVal) NULL;
+
+    if (strcmp(to_type, XtRString) == 0) {
+	arg_return->value = (XtArgVal) to_val.addr;
+    }
+    else {
+	if (to_val.size == sizeof(long))
+	    arg_return->value = (XtArgVal) *(long *)to_val.addr;
+	else if (to_val.size == sizeof(short))
+	    arg_return->value = (XtArgVal) *(short *)to_val.addr;
+	else if (to_val.size == sizeof(char))
+	    arg_return->value = (XtArgVal) *(char *)to_val.addr;
+	else if (to_val.size == sizeof(XtArgVal))
+	    arg_return->value = *(XtArgVal *)to_val.addr;
+	else if (to_val.size > sizeof(XtArgVal)) {
+	    arg_return->value = (XtArgVal) __XtMalloc(to_val.size);
+	    memory_return->value = (XtArgVal)
+		memcpy((void *)arg_return->value, to_val.addr, to_val.size);
+	}
+    }
+    UNLOCK_PROCESS;
+
+    return(1);
+}
+
+
+/*
+ *    NestedArgtoArg() converts the passed nested list into
+ *    an ArgList/count.
+ */
+static int
+NestedArgtoArg(
+    Widget              widget,
+    XtTypedArgList      avlist,
+    ArgList             args,
+    XtResourceList      resources,
+    Cardinal            num_resources,
+    ArgList		memory_return)
+{
+    int         count = 0;
+
+    for (; avlist->name != NULL; avlist++) {
+        if (avlist->type != NULL) {
+            /* If widget is NULL, the typed arg is ignored */
+            if (widget != NULL) {
+                /* this is a typed arg */
+                count += TypedArgToArg(widget, avlist, (args+count),
+					  resources, num_resources,
+					  (memory_return+count));
+            }
+        } else if (strcmp(avlist->name, XtVaNestedList) == 0) {
+            count += NestedArgtoArg(widget, (XtTypedArgList)avlist->value,
+				       (args+count), resources, num_resources,
+				       (memory_return+count));
+        } else {
+            (args+count)->name = avlist->name;
+            (args+count)->value = avlist->value;
+            ++count;
+        }
+    }
+
+    return(count);
+}
+
+/*
+ * Free memory allocated through _XtVaToArgList.  The actual args array
+ * size is expected to be total_count * 2, where total_count is the number
+ * of elements needed for resource representations.  The lower half of the
+ * array contains pairs of resource names and values as usual.  For each
+ * element [n] in the lower half of the array, the value field of the
+ * corresponding element [n + total_count] in the upper half of the array
+ * has been pressed into service in order to note whether the resource value
+ * is a pointer to memory that was allocated in TypedArgToArg.  In the
+ * upper half, if the value field is not NULL, it contains the address of
+ * memory which should now be freed.  That memory could have been allocated
+ * only as a result of the conversion of typed arguments.  Therefore, if
+ * there were no typed arguments in the original varargs, there is no need
+ * to examine the upper half of the array.  In the choice of data structure
+ * to make this representation, priority was given to the wish to retrofit
+ * the release of memory around the existing signature of _XtVaToArgList.
+ */
+void
+_XtFreeArgList(
+    ArgList	args,	     /* as returned by _XtVaToArgList */
+    int		total_count, /*  argument count returned by _XtCountVaList */
+    int 	typed_count) /* typed arg count returned by _XtCountVaList */
+{
+    ArgList p;
+
+    if (args) {
+	if (typed_count)
+	    for (p = args + total_count; total_count--; ++p) {
+		if (p->value) XtFree((char *)p->value);
+	    }
+	XtFree((char *)args);
+    }
+}
+
+
+static void GetResources(Widget widget, XtResourceList *res_list,
+			 Cardinal *number);
+
+
+/*
+ *    Given a variable argument list, _XtVaToArgList() returns the
+ *    equivalent ArgList and count. _XtVaToArgList() handles nested
+ *    lists and typed arguments.  If typed arguments are present, the
+ *    ArgList should be freed with _XtFreeArgList.
+ */
+void
+_XtVaToArgList(
+    Widget		widget,
+    va_list     	var,
+    int			max_count,
+    ArgList		*args_return,
+    Cardinal		*num_args_return)
+{
+    String		attr;
+    int			count;
+    ArgList		args = (ArgList)NULL;
+    XtTypedArg		typed_arg;
+    XtResourceList	resources = (XtResourceList)NULL;
+    Cardinal		num_resources;
+    Boolean		fetched_resource_list = False;
+
+    if (max_count  == 0) {
+	*num_args_return = 0;
+	*args_return = (ArgList)NULL;
+	return;
+    }
+
+    args = (ArgList)__XtMalloc((unsigned)(max_count * 2 * sizeof(Arg)));
+    for (count = max_count * 2; --count >= 0; )
+	args[count].value = (XtArgVal) NULL;
+    count = 0;
+
+    for(attr = va_arg(var, String) ; attr != NULL;
+			attr = va_arg(var, String)) {
+	if (strcmp(attr, XtVaTypedArg) == 0) {
+	    typed_arg.name = va_arg(var, String);
+	    typed_arg.type = va_arg(var, String);
+	    typed_arg.value = va_arg(var, XtArgVal);
+	    typed_arg.size = va_arg(var, int);
+
+	    /* if widget is NULL, typed args are ignored */
+	    if (widget != NULL) {
+		if (!fetched_resource_list) {
+		    GetResources(widget, &resources, &num_resources);
+		    fetched_resource_list = True;
+		}
+		count += TypedArgToArg(widget, &typed_arg, &args[count],
+					  resources, num_resources,
+					  &args[max_count + count]);
+	    }
+	} else if (strcmp(attr, XtVaNestedList) == 0) {
+	    if (widget != NULL) {
+		if (!fetched_resource_list) {
+		    GetResources(widget, &resources, &num_resources);
+		    fetched_resource_list = True;
+		}
+	    }
+
+	    count += NestedArgtoArg(widget, va_arg(var, XtTypedArgList),
+				       &args[count], resources, num_resources,
+				       &args[max_count + count]);
+	} else {
+	    args[count].name = attr;
+	    args[count].value = va_arg(var, XtArgVal);
+	    count ++;
+	}
+    }
+
+    if (resources != NULL)
+	XtFree((XtPointer)resources);
+
+    *num_args_return = (Cardinal)count;
+    *args_return = (ArgList)args;
+}
+
+/*	Function Name: GetResources
+ *	Description: Retreives the normal and constraint resources
+ *                   for this widget.
+ *	Arguments: widget - the widget.
+ * RETURNED        res_list - the list of resource for this widget
+ * RETURNED        number - the number of resources in the above list.
+ *	Returns: none
+ */
+
+static void
+GetResources(
+    Widget widget,
+    XtResourceList * res_list,
+    Cardinal * number)
+{
+    Widget parent = XtParent(widget);
+
+    XtInitializeWidgetClass(XtClass(widget));
+    XtGetResourceList(XtClass(widget), res_list, number);
+
+    if (!XtIsShell(widget) && parent && XtIsConstraint(parent)) {
+	XtResourceList res, constraint, cons_top;
+	Cardinal num_constraint, temp;
+
+	XtGetConstraintResourceList(XtClass(parent), &constraint,
+				    &num_constraint);
+
+	cons_top = constraint;
+	*res_list = (XtResourceList) XtRealloc((char*)*res_list,
+					       ((*number + num_constraint) *
+						sizeof(XtResource)));
+
+	for (temp= num_constraint, res= *res_list + *number; temp != 0; temp--)
+	    *res++ = *constraint++;
+
+	*number += num_constraint;
+	XtFree( (XtPointer) cons_top);
+    }
+}
+
+static int NestedArgtoTypedArg(
+    XtTypedArgList      args,
+    XtTypedArgList      avlist)
+{
+    int         count = 0;
+
+    for (; avlist->name != NULL; avlist++) {
+        if (avlist->type != NULL) {
+            (args+count)->name = avlist->name;
+            (args+count)->type = avlist->type;
+            (args+count)->size = avlist->size;
+            (args+count)->value = avlist->value;
+            ++count;
+        } else if(strcmp(avlist->name, XtVaNestedList) == 0) {
+            count += NestedArgtoTypedArg((args+count),
+                            (XtTypedArgList)avlist->value);
+        } else {
+            (args+count)->name = avlist->name;
+	    (args+count)->type = NULL;
+            (args+count)->value = avlist->value;
+            ++count;
+        }
+    }
+    return(count);
+}
+
+
+/*
+ *    Given a variable argument list, _XtVaToTypedArgList() returns
+ *    the equivalent TypedArgList. _XtVaToTypedArgList() handles nested
+ *    lists.
+ *    Note: _XtVaToTypedArgList() does not do type conversions.
+ */
+void
+_XtVaToTypedArgList(
+    va_list             var,
+    int			max_count,
+    XtTypedArgList   	*args_return,
+    Cardinal            *num_args_return)
+{
+    XtTypedArgList	args = NULL;
+    String              attr;
+    int			count;
+
+    args = (XtTypedArgList)
+	__XtMalloc((unsigned)(max_count * sizeof(XtTypedArg)));
+
+    for(attr = va_arg(var, String), count = 0 ; attr != NULL;
+		    attr = va_arg(var, String)) {
+        if (strcmp(attr, XtVaTypedArg) == 0) {
+	    args[count].name = va_arg(var, String);
+	    args[count].type = va_arg(var, String);
+	    args[count].value = va_arg(var, XtArgVal);
+	    args[count].size = va_arg(var, int);
+	    ++count;
+	} else if (strcmp(attr, XtVaNestedList) == 0) {
+   	    count += NestedArgtoTypedArg(&args[count], 
+			va_arg(var, XtTypedArgList));
+	} else {
+	    args[count].name = attr;
+	    args[count].type = NULL;
+	    args[count].value = va_arg(var, XtArgVal);
+	    ++count;
+	}
+    }
+
+    *args_return = args;
+    *num_args_return = count;
+}
diff --git a/libXt/src/Vendor.c b/libXt/src/Vendor.c
new file mode 100644
index 000000000..2d3090189
--- /dev/null
+++ b/libXt/src/Vendor.c
@@ -0,0 +1,159 @@
+/* $Xorg: Vendor.c,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/Vendor.c,v 1.7 2002/05/31 18:45:46 dawes Exp $ */
+
+/* Make sure all wm properties can make it out of the resource manager */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "StringDefs.h"
+#include "Shell.h"
+#include "ShellP.h"
+#include "Vendor.h"
+#include "VendorP.h"
+#include <stdio.h>
+
+/***************************************************************************
+ *
+ * Vendor shell class record
+ *
+ ***************************************************************************/
+
+#if defined(__UNIXOS2__) || defined(__CYGWIN__) || defined(__MINGW32__)
+/* to fix the EditRes problem because of wrong linker semantics */
+extern WidgetClass vendorShellWidgetClass;
+
+#if defined(__UNIXOS2__)
+unsigned long _DLL_InitTerm(unsigned long mod,unsigned long flag)
+{
+        switch (flag) {
+        case 0: /*called on init*/
+                _CRT_init();
+                vendorShellWidgetClass = (WidgetClass)(&vendorShellClassRec);
+                return 1;
+        case 1: /*called on exit*/
+                return 1;
+        default:
+                return 0;
+        }
+}
+#endif
+
+#if defined(__CYGWIN__) || defined(__MINGW32__)
+int __stdcall
+DllMain(unsigned long mod_handle, unsigned long flag, void *routine)
+{
+  switch (flag)
+    {
+    case 1: /* DLL_PROCESS_ATTACH - process attach */
+      vendorShellWidgetClass = (WidgetClass)(&vendorShellClassRec);
+      break;
+    case 0: /* DLL_PROCESS_DETACH - process detach */
+      break;
+    }
+  return 1;
+}
+#endif
+#endif
+
+externaldef(vendorshellclassrec) VendorShellClassRec vendorShellClassRec = {
+  {
+    /* superclass         */    (WidgetClass) &wmShellClassRec,
+    /* class_name         */    "VendorShell",
+    /* size               */    sizeof(VendorShellRec),
+    /* Class Initializer  */	NULL,
+    /* class_part_initialize*/	NULL,
+    /* Class init'ed ?    */	FALSE,
+    /* initialize         */    NULL,
+    /* initialize_notify    */	NULL,		
+    /* realize            */    XtInheritRealize,
+    /* actions            */    NULL,
+    /* num_actions        */    0,
+    /* resources          */    NULL,
+    /* resource_count     */	0,
+    /* xrm_class          */    NULLQUARK,
+    /* compress_motion    */    FALSE,
+    /* compress_exposure  */    TRUE,
+    /* compress_enterleave*/	FALSE,
+    /* visible_interest   */    FALSE,
+    /* destroy            */    NULL,
+    /* resize             */    XtInheritResize,
+    /* expose             */    NULL,
+    /* set_values         */    NULL,
+    /* set_values_hook      */	NULL,			
+    /* set_values_almost    */	XtInheritSetValuesAlmost,  
+    /* get_values_hook      */	NULL,
+    /* accept_focus       */    NULL,
+    /* intrinsics version */	XtVersion,
+    /* callback offsets   */    NULL,
+    /* tm_table		  */	NULL,
+    /* query_geometry	    */  NULL,
+    /* display_accelerator  */  NULL,
+    /* extension	    */  NULL
+  },{
+    /* geometry_manager   */    XtInheritGeometryManager,
+    /* change_managed     */    XtInheritChangeManaged,
+    /* insert_child	  */	XtInheritInsertChild,
+    /* delete_child	  */	XtInheritDeleteChild,
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  },{
+    /* extension	    */  NULL
+  }
+};
+
+#if !defined(AIXSHLIB) || !defined(SHAREDCODE)
+externaldef(vendorshellwidgetclass) WidgetClass vendorShellWidgetClass =
+	(WidgetClass) (&vendorShellClassRec);
+#endif
diff --git a/libXt/src/sharedlib.c b/libXt/src/sharedlib.c
new file mode 100644
index 000000000..699302ced
--- /dev/null
+++ b/libXt/src/sharedlib.c
@@ -0,0 +1,236 @@
+/* $Xorg: sharedlib.c,v 1.4 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/*
+
+Copyright 1989, 1994, 1998  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.
+
+*/
+/* $XFree86: xc/lib/Xt/sharedlib.c,v 3.7 2002/05/31 18:45:46 dawes Exp $ */
+
+#if (defined(SUNSHLIB) || defined(AIXSHLIB)) && !defined(SHAREDCODE)
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "IntrinsicI.h"
+#include "VarargsI.h"
+#include "ShellP.h"
+#include "VendorP.h"
+#include "CreateI.h"
+
+
+#if defined(AIXSHLIB) || defined(__UNIXOS2__)
+WidgetClass vendorShellWidgetClass = (WidgetClass) &vendorShellClassRec;
+
+static void _XtVendorInitialize()
+{
+    transientShellWidgetClass->core_class.superclass =
+	(WidgetClass) &vendorShellClassRec;
+    topLevelShellWidgetClass->core_class.superclass =
+	(WidgetClass) &vendorShellClassRec;
+}
+
+#define VENDORINIT _XtVendorInitialize();
+
+#else
+
+#define VENDORINIT /* as nothing */
+
+#endif
+
+#ifdef SUNSHLIB
+/*
+ * _XtInherit needs to be statically linked since it is compared against as
+ * well as called.
+ */
+void _XtInherit()
+{
+    extern void __XtInherit();
+    __XtInherit();
+}
+#endif
+
+/*
+ * The following routine will be called by every toolkit
+ * application, forcing this file to be statically linked.
+ *
+ * Note: XtInitialize, XtAppInitialize, and XtOpenApplication
+ *       call XtToolkitInitialize.
+ */
+
+void XtToolkitInitialize()
+{
+    extern void _XtToolkitInitialize();
+    VENDORINIT
+    _XtToolkitInitialize();
+}
+
+Widget 
+XtInitialize(
+    _Xconst char* name,
+    _Xconst char* classname,
+    XrmOptionDescRec *options,
+    Cardinal num_options,
+    int *argc,
+    String *argv)
+{
+    extern Widget _XtInitialize();
+    VENDORINIT
+    return _XtInitialize (name, classname, options, num_options, argc, argv);
+}
+
+Widget
+XtAppInitialize(
+    XtAppContext * app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescRec *options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    ArgList args_in,
+    Cardinal num_args_in)
+{
+    extern Widget _XtAppInitialize();
+    VENDORINIT
+    return _XtAppInitialize (app_context_return, application_class, options,
+			     num_options, argc_in_out, argv_in_out, 
+			     fallback_resources, args_in, num_args_in);
+}
+
+Widget
+XtVaAppInitialize(
+    XtAppContext *app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescList options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    ...)
+{
+    va_list	var;
+    extern Widget _XtVaAppInitialize();
+
+    VENDORINIT
+    va_start(var, fallback_resources);
+    return _XtVaAppInitialize(app_context_return, application_class, options,
+			      num_options, argc_in_out, argv_in_out,
+			      fallback_resources, var);
+}
+
+Widget
+XtOpenApplication(
+    XtAppContext * app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescRec *options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    WidgetClass widget_class,
+    ArgList args_in,
+    Cardinal num_args_in)
+{
+    extern Widget _XtOpenApplication();
+    VENDORINIT
+    return _XtOpenApplication (app_context_return, application_class, options,
+			       num_options, argc_in_out, argv_in_out, 
+			       fallback_resources, widget_class,
+			       args_in, num_args_in);
+}
+
+Widget
+XtVaOpenApplication(
+    XtAppContext *app_context_return,
+    _Xconst char* application_class,
+    XrmOptionDescList options,
+    Cardinal num_options,
+    int *argc_in_out,
+    String *argv_in_out,
+    String *fallback_resources,
+    WidgetClass widget_class,
+    ...)
+{
+    va_list	var;
+    extern Widget _XtVaOpenApplication();
+
+    VENDORINIT
+    va_start(var, widget_class);
+    return _XtVaOpenApplication(app_context_return, application_class, options,
+				num_options, argc_in_out, argv_in_out,
+				fallback_resources, widget_class, var);
+}
+
+#else
+
+#ifndef lint
+static int dummy;			/* avoid warning from ranlib */
+#endif
+
+#endif /* SUNSHLIB or AIXSHLIB */
+
+#if defined(SUNSHLIB) && !defined(SHAREDCODE)
+
+int _XtInheritTranslations = 0;
+
+extern CompositeClassRec compositeClassRec;
+WidgetClass compositeWidgetClass = (WidgetClass) &compositeClassRec;
+
+extern ConstraintClassRec constraintClassRec;
+WidgetClass constraintWidgetClass = (WidgetClass) &constraintClassRec;
+
+extern WidgetClassRec widgetClassRec;
+WidgetClass widgetClass = &widgetClassRec;
+WidgetClass coreWidgetClass = &widgetClassRec;
+
+extern ObjectClassRec objectClassRec;
+WidgetClass objectClass = (WidgetClass)&objectClassRec;
+
+extern RectObjClassRec rectObjClassRec;
+WidgetClass rectObjClass = (WidgetClass)&rectObjClassRec;
+
+extern ShellClassRec shellClassRec;
+WidgetClass shellWidgetClass = (WidgetClass) &shellClassRec;
+
+extern OverrideShellClassRec overrideShellClassRec;
+WidgetClass overrideShellWidgetClass = (WidgetClass) &overrideShellClassRec;
+
+extern WMShellClassRec wmShellClassRec;
+WidgetClass wmShellWidgetClass = (WidgetClass) &wmShellClassRec;
+
+extern TransientShellClassRec transientShellClassRec;
+WidgetClass transientShellWidgetClass = (WidgetClass) &transientShellClassRec;
+
+extern TopLevelShellClassRec topLevelShellClassRec;
+WidgetClass topLevelShellWidgetClass = (WidgetClass) &topLevelShellClassRec;
+
+extern ApplicationShellClassRec applicationShellClassRec;
+WidgetClass applicationShellWidgetClass = (WidgetClass) &applicationShellClassRec;
+
+extern SessionShellClassRec sessionShellClassRec;
+WidgetClass sessionShellWidgetClass = (WidgetClass) &sessionShellClassRec;
+
+extern HookObjClassRec hookObjClassRec;
+WidgetClass hookObjectClass = (WidgetClass) &hookObjClassRec;
+
+#endif /* SUNSHLIB */
diff --git a/libXt/util/Makefile.am b/libXt/util/Makefile.am
new file mode 100644
index 000000000..d51365e66
--- /dev/null
+++ b/libXt/util/Makefile.am
@@ -0,0 +1,47 @@
+if INSTALL_MAKESTRS
+bin_PROGRAMS = makestrs
+else
+noinst_PROGRAMS = makestrs
+endif
+
+CC = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS_FOR_BUILD@
+LDFLAGS = @LDFLAGS_FOR_BUILD@
+
+EXTRA_DIST = \
+	Shell.ht \
+	StrDefs.ct \
+	StrDefs.ht \
+	string.list
+
+makestrs_CFLAGS = $(XT_CFLAGS)
+makestrs_SOURCES = makestrs.c
+
+
+# Man page
+appmandir = $(APP_MAN_DIR)
+
+appman_PRE = makestrs.man
+
+if INSTALL_MAKESTRS
+appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
+else
+noinst_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
+endif
+
+EXTRA_DIST += $(appman_PRE)
+CLEANFILES = $(appman_DATA)
+
+SED = sed
+
+# Strings to replace in man pages
+XORGRELSTRING = @PACKAGE_STRING@
+  XORGMANNAME = X Version 11
+
+MAN_SUBSTS = \
+	-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|'
+
+SUFFIXES = .$(APP_MAN_SUFFIX) .man
+
+.man.$(APP_MAN_SUFFIX):
+	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libXt/util/Makefile.in b/libXt/util/Makefile.in
new file mode 100644
index 000000000..4b2b2a401
--- /dev/null
+++ b/libXt/util/Makefile.in
@@ -0,0 +1,646 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
+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@
+@INSTALL_MAKESTRS_TRUE@bin_PROGRAMS = makestrs$(EXEEXT)
+@INSTALL_MAKESTRS_FALSE@noinst_PROGRAMS = makestrs$(EXEEXT)
+subdir = util
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(appmandir)"
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am_makestrs_OBJECTS = makestrs-makestrs.$(OBJEXT)
+makestrs_OBJECTS = $(am_makestrs_OBJECTS)
+makestrs_LDADD = $(LDADD)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+makestrs_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(makestrs_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(makestrs_SOURCES)
+DIST_SOURCES = $(makestrs_SOURCES)
+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'
+DATA = $(appman_DATA) $(noinst_DATA)
+ETAGS = etags
+CTAGS = ctags
+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@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC_FOR_BUILD@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS_FOR_BUILD@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+CHANGELOG_CMD = @CHANGELOG_CMD@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CWARNFLAGS = @CWARNFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DRIVER_MAN_DIR = @DRIVER_MAN_DIR@
+DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
+DSYMUTIL = @DSYMUTIL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FILE_MAN_DIR = @FILE_MAN_DIR@
+FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS_FOR_BUILD@
+LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIB_MAN_DIR = @LIB_MAN_DIR@
+LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MALLOC_ZERO_CFLAGS = @MALLOC_ZERO_CFLAGS@
+MISC_MAN_DIR = @MISC_MAN_DIR@
+MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
+MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+RAWCPP = @RAWCPP@
+RAWCPPFLAGS = @RAWCPPFLAGS@
+SED = sed
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRINGSABIOPTIONS = @STRINGSABIOPTIONS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XFILESEARCHPATHDEFAULT = @XFILESEARCHPATHDEFAULT@
+XMALLOC_ZERO_CFLAGS = @XMALLOC_ZERO_CFLAGS@
+XTMALLOC_ZERO_CFLAGS = @XTMALLOC_ZERO_CFLAGS@
+XT_CFLAGS = @XT_CFLAGS@
+XT_LIBS = @XT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+appdefaultdir = @appdefaultdir@
+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@
+distcleancheck_listfiles = @distcleancheck_listfiles@
+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@
+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@
+EXTRA_DIST = Shell.ht StrDefs.ct StrDefs.ht string.list $(appman_PRE)
+makestrs_CFLAGS = $(XT_CFLAGS)
+makestrs_SOURCES = makestrs.c
+
+# Man page
+appmandir = $(APP_MAN_DIR)
+appman_PRE = makestrs.man
+@INSTALL_MAKESTRS_TRUE@appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
+@INSTALL_MAKESTRS_FALSE@noinst_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
+CLEANFILES = $(appman_DATA)
+
+# Strings to replace in man pages
+XORGRELSTRING = @PACKAGE_STRING@
+XORGMANNAME = X Version 11
+MAN_SUBSTS = \
+	-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|'
+
+SUFFIXES = .$(APP_MAN_SUFFIX) .man
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .$(APP_MAN_SUFFIX) .man .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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) --gnu util/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu util/Makefile
+.PRECIOUS: 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__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p || test -f $$p1; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+makestrs$(EXEEXT): $(makestrs_OBJECTS) $(makestrs_DEPENDENCIES) 
+	@rm -f makestrs$(EXEEXT)
+	$(AM_V_CCLD)$(makestrs_LINK) $(makestrs_OBJECTS) $(makestrs_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makestrs-makestrs.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+makestrs-makestrs.o: makestrs.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(makestrs_CFLAGS) $(CFLAGS) -MT makestrs-makestrs.o -MD -MP -MF $(DEPDIR)/makestrs-makestrs.Tpo -c -o makestrs-makestrs.o `test -f 'makestrs.c' || echo '$(srcdir)/'`makestrs.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/makestrs-makestrs.Tpo $(DEPDIR)/makestrs-makestrs.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='makestrs.c' object='makestrs-makestrs.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(makestrs_CFLAGS) $(CFLAGS) -c -o makestrs-makestrs.o `test -f 'makestrs.c' || echo '$(srcdir)/'`makestrs.c
+
+makestrs-makestrs.obj: makestrs.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(makestrs_CFLAGS) $(CFLAGS) -MT makestrs-makestrs.obj -MD -MP -MF $(DEPDIR)/makestrs-makestrs.Tpo -c -o makestrs-makestrs.obj `if test -f 'makestrs.c'; then $(CYGPATH_W) 'makestrs.c'; else $(CYGPATH_W) '$(srcdir)/makestrs.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/makestrs-makestrs.Tpo $(DEPDIR)/makestrs-makestrs.Po
+@am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='makestrs.c' object='makestrs-makestrs.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(makestrs_CFLAGS) $(CFLAGS) -c -o makestrs-makestrs.obj `if test -f 'makestrs.c'; then $(CYGPATH_W) 'makestrs.c'; else $(CYGPATH_W) '$(srcdir)/makestrs.c'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-appmanDATA: $(appman_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(appmandir)" || $(MKDIR_P) "$(DESTDIR)$(appmandir)"
+	@list='$(appman_DATA)'; test -n "$(appmandir)" || list=; \
+	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)$(appmandir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(appmandir)" || exit $$?; \
+	done
+
+uninstall-appmanDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(appman_DATA)'; test -n "$(appmandir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(appmandir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(appmandir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	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"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(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 $(PROGRAMS) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(appmandir)"; 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:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+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-binPROGRAMS clean-generic clean-libtool \
+	clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-appmanDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+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 -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-appmanDATA uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-appmanDATA \
+	install-binPROGRAMS 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 \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-appmanDATA uninstall-binPROGRAMS
+
+
+.man.$(APP_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:
diff --git a/libXt/util/Shell.ht b/libXt/util/Shell.ht
new file mode 100644
index 000000000..c9e7e01ea
--- /dev/null
+++ b/libXt/util/Shell.ht
@@ -0,0 +1,97 @@
+/* $Xorg: Shell.ht,v 1.5 2001/02/09 02:03:59 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/util/Shell.ht,v 3.4 2001/07/29 05:01:12 tsi Exp $ */
+
+#ifndef _XtShell_h
+#define _XtShell_h
+
+#include <X11/SM/SMlib.h>
+#include <X11/Intrinsic.h>
+
+/***********************************************************************
+ *
+ * Shell Widget
+ *
+ ***********************************************************************/
+/*
+ * Shell-specific resources names, classes, and a representation type.
+ */
+
+#ifndef XTSTRINGDEFINES
+#define _XtShell_h_Const const
+#endif
+
+<<<STRING_TABLE_GOES_HERE>>>
+
+#ifndef XTSTRINGDEFINES
+#undef _XtShell_h_Const
+#endif
+
+/* Class record constants */
+
+typedef struct _ShellClassRec *ShellWidgetClass;
+typedef struct _OverrideShellClassRec *OverrideShellWidgetClass;
+typedef struct _WMShellClassRec *WMShellWidgetClass;
+typedef struct _TransientShellClassRec *TransientShellWidgetClass;
+typedef struct _TopLevelShellClassRec *TopLevelShellWidgetClass;
+typedef struct _ApplicationShellClassRec *ApplicationShellWidgetClass;
+typedef struct _SessionShellClassRec *SessionShellWidgetClass;
+
+#ifndef SHELL 
+externalref WidgetClass shellWidgetClass;
+externalref WidgetClass overrideShellWidgetClass;
+externalref WidgetClass wmShellWidgetClass;
+externalref WidgetClass transientShellWidgetClass;
+externalref WidgetClass topLevelShellWidgetClass;
+externalref WidgetClass applicationShellWidgetClass;
+externalref WidgetClass sessionShellWidgetClass;
+#endif
+
+#endif /* _XtShell_h */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libXt/util/StrDefs.ct b/libXt/util/StrDefs.ct
new file mode 100644
index 000000000..ea971f153
--- /dev/null
+++ b/libXt/util/StrDefs.ct
@@ -0,0 +1,54 @@
+/* $Xorg: StrDefs.ct,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/util/StrDefs.ct,v 3.4 2001/07/29 05:01:12 tsi Exp $ */
+
+#define Const const
+
+<<<STRING_TABLE_GOES_HERE>>>
+
diff --git a/libXt/util/StrDefs.ht b/libXt/util/StrDefs.ht
new file mode 100644
index 000000000..c23759c46
--- /dev/null
+++ b/libXt/util/StrDefs.ht
@@ -0,0 +1,64 @@
+/* $Xorg: StrDefs.ht,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1994, 1998  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.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+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, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/* $XFree86: xc/lib/Xt/util/StrDefs.ht,v 3.4 2001/07/29 05:01:12 tsi Exp $ */
+
+#ifndef _XtStringDefs_h_
+#define _XtStringDefs_h_
+
+#ifndef XTSTRINGDEFINES
+#define _XtStringDefs_h_Const const
+#endif
+
+<<<STRING_TABLE_GOES_HERE>>>
+
+#ifndef XTSTRINGDEFINES
+#undef _XtStringDefs_h_Const
+#endif
+
+#endif /* _XtStringDefs_h_ */
diff --git a/libXt/util/makestrs.c b/libXt/util/makestrs.c
new file mode 100644
index 000000000..ae8c1572b
--- /dev/null
+++ b/libXt/util/makestrs.c
@@ -0,0 +1,752 @@
+/* $XdotOrg: $ */
+
+/*
+
+Copyright (c) 1991, 1998 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.
+
+*/
+/* $XFree86: xc/config/util/makestrs.c,v 3.6 2001/07/25 15:04:41 dawes Exp $ */
+
+/* Constructs string definitions */
+
+#include <stdio.h>
+#include <X11/Xos.h>
+#include <stdlib.h>
+#include <unistd.h>
+#if defined(macII) && !defined(__STDC__)  /* stdlib.h fails to define these */
+char *malloc();
+#endif /* macII */
+
+typedef struct _TableEnt {
+    struct _TableEnt* next;
+    char* left;
+    char* right;
+    int offset;
+} TableEnt;
+
+typedef struct _Table {
+    struct _Table* next;
+    TableEnt* tableent;
+    TableEnt* tableentcurrent;
+    TableEnt** tableenttail;
+    char* name;
+    int offset;
+} Table;
+
+typedef struct _File {
+    struct _File* next;
+    FILE* tmpl;
+    char* name;
+    Table* table;
+    Table* tablecurrent;
+    Table** tabletail;
+} File;
+
+static File* file = NULL;
+static File* filecurrent = NULL;
+static File** filetail = &file;
+static char* conststr;
+static char* prefixstr = NULL;
+static char* featurestr = NULL;
+static char* ctmplstr = NULL;
+static char* fileprotstr;
+static char* externrefstr;
+static char* externdefstr;
+
+#ifndef FALSE
+# define FALSE 0
+# define TRUE  !(FALSE)
+#endif
+
+static int   solaris_abi_names = FALSE;
+
+#define X_DEFAULT_ABI	0
+#define X_ARRAYPER_ABI	1
+#define X_INTEL_ABI	2
+#define X_INTEL_ABI_BC	3
+#define X_SPARC_ABI	4
+#define X_FUNCTION_ABI	5
+
+#define X_MAGIC_STRING "<<<STRING_TABLE_GOES_HERE>>>"
+
+/* Wrapper for fopen()
+ * Prepend filename with an includedir which can be specified on the 
+ * commandline. Needed to separate source and build directories.
+ */
+static char* includedir = NULL;
+static FILE *ifopen(const char *file, const char *mode)
+{
+    size_t len;
+    char *buffer;
+    FILE *ret;
+    
+    if (includedir == NULL)
+        return fopen(file, mode);
+
+    len = strlen(file) + strlen(includedir) + 1;
+    buffer = (char*)malloc(len + 1);
+    if (buffer == NULL)
+        return NULL;
+            
+    strcpy(buffer, includedir);
+    strcat(buffer, "/");
+    strcat(buffer, file);
+
+    ret = fopen(buffer, mode);
+
+    free(buffer);
+    return ret;
+}
+
+static void WriteHeaderProlog (FILE *f, File *phile)
+{
+    Table* t;
+    TableEnt* te;
+
+    (void) fprintf (f, "#ifdef %s\n", featurestr);
+    for (t = phile->table; t; t = t->next)
+	for (te = t->tableent; te; te = te->next) {
+	    if (strcmp (te->left, "RAtom") == 0) {
+		(void) fprintf (f, 
+			"#ifndef %s%s\n#define %s%s \"%s\"\n#endif\n",
+			prefixstr, te->left, prefixstr, te->left, te->right);
+	    } else {
+		(void) fprintf (f, 
+			"#define %s%s \"%s\"\n",
+			prefixstr, te->left, te->right);
+	    }
+	}
+    (void) fprintf (f, "%s", "#else\n");
+}
+
+static void IntelABIWriteHeader (FILE *f, File *phile)
+{
+    Table* t;
+    TableEnt* te;
+
+    WriteHeaderProlog (f, phile);
+
+    for (t = phile->table; t; t = t->next) {
+      (void) fprintf (f, "%s %sConst char %s[];\n", 
+		      externrefstr, conststr ? conststr : fileprotstr, t->name);
+	for (te = t->tableent; te; te = te->next)
+	    (void) fprintf (f, 
+		"#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n",
+		prefixstr, te->left, prefixstr, te->left, t->name, te->offset);
+    }
+
+    (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void SPARCABIWriteHeader (FILE *f, File *phile)
+{
+    Table* t;
+    TableEnt* te;
+
+    for (t = phile->table; t; t = t->next)
+	for (te = t->tableent; te; te = te->next)
+	    (void) fprintf (f, "#define %s%s \"%s\"\n",
+			    prefixstr, te->left, te->right);
+}
+
+static void FunctionWriteHeader (FILE *f, File *phile)
+{
+    Table* t;
+    TableEnt* te;
+
+    WriteHeaderProlog (f, phile);
+
+    (void) fprintf (f, "%s %sConst char* %s();\n", 
+		    externrefstr, conststr ? conststr : fileprotstr, 
+		    phile->table->name);
+
+    for (t = phile->table; t; t = t->next)
+	for (te = t->tableent; te; te = te->next)
+	    (void) fprintf (f, 
+		"#ifndef %s%s\n#define %s%s (%s(%d))\n#endif\n",
+		prefixstr, te->left, prefixstr, te->left, phile->table->name, 
+		te->offset);
+
+    (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void ArrayperWriteHeader (FILE *f, File *phile)
+{
+    Table* t;
+    TableEnt* te;
+
+    WriteHeaderProlog (f, phile);
+
+    for (t = phile->table; t; t = t->next)
+        for (te = t->tableent; te; te = te->next)
+	    (void) fprintf (f, 
+			    "#ifndef %s%s\n%s %sConst char %s%s[];\n#endif\n",
+			    prefixstr, te->left, 
+			    externrefstr, conststr ? conststr : fileprotstr, 
+			    prefixstr, te->left);
+
+    (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void DefaultWriteHeader (FILE *f, File *phile)
+{
+    Table* t;
+    TableEnt* te;
+
+    WriteHeaderProlog (f, phile);
+
+    (void) fprintf (f, "%s %sConst char %s[];\n", 
+		    externrefstr, conststr ? conststr : fileprotstr, 
+		    phile->table->name);
+
+    for (t = phile->table; t; t = t->next)
+	for (te = t->tableent; te; te = te->next)
+	    (void) fprintf (f, 
+		"#ifndef %s%s\n#define %s%s ((char*)&%s[%d])\n#endif\n",
+		prefixstr, te->left, prefixstr, te->left, phile->table->name, 
+		te->offset);
+
+    (void) fprintf (f, "#endif /* %s */\n", featurestr);
+}
+
+static void CopyTmplProlog (FILE *tmpl, FILE *f)
+{
+    char buf[1024];
+    static char* magic_string = X_MAGIC_STRING;
+    int magic_string_len = strlen (magic_string);
+
+    while (fgets (buf, sizeof buf, tmpl)) {
+	if (strncmp (buf, magic_string, magic_string_len) == 0) {
+	    return;
+	}
+	(void) fputs (buf, f);
+    }
+}
+
+static void CopyTmplEpilog (FILE *tmpl, FILE *f)
+{
+    char buf[1024];
+
+    while (fgets (buf, sizeof buf, tmpl))
+	(void) fputs (buf, f);
+}
+
+static char* abistring[] = {
+    "Default", "Array per string", "Intel", "Intel BC", "SPARC", "Function" };
+
+static void WriteHeader (char *tagline, File *phile, int abi)
+{
+    FILE* f;
+    char* tmp;
+    static void (*headerproc[])(FILE *f, File *phile) = { 
+	DefaultWriteHeader, ArrayperWriteHeader,
+	IntelABIWriteHeader, IntelABIWriteHeader,
+	SPARCABIWriteHeader, FunctionWriteHeader };
+
+    if ((f = fopen (phile->name, "w+")) == NULL) exit (1);
+
+    if (phile->tmpl) CopyTmplProlog (phile->tmpl, f);
+
+    (void) fprintf (f, 
+	"%s\n%s\n/* %s ABI version -- Do not edit */\n", 
+	"/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */",
+	"/* This file is automatically generated. */",
+	abistring[abi]);
+
+    if (tagline) (void) fprintf (f, "/* %s */\n\n", tagline);
+
+    /* do the right thing for Motif, i.e. avoid _XmXmStrDefs_h_ */
+    if (strcmp (prefixstr, "Xm") == 0) {
+	if ((fileprotstr = malloc (strlen (phile->name) + 3)) == NULL)
+	   exit (1);
+	(void) sprintf (fileprotstr, "_%s_", phile->name);
+    } else {
+	if ((fileprotstr = malloc (strlen (phile->name) + strlen (prefixstr) +  3)) == NULL)
+	   exit (1);
+	(void) sprintf (fileprotstr, "_%s%s_", prefixstr, phile->name);
+    }
+
+    for (tmp = fileprotstr; *tmp; tmp++) if (*tmp == '.') *tmp = '_';
+
+    (*headerproc[abi])(f, phile);
+
+    if (phile->tmpl) CopyTmplEpilog (phile->tmpl, f);
+
+    (void) free (fileprotstr);
+    (void) fclose (phile->tmpl);
+    (void) fclose (f);
+}
+
+static void WriteSourceLine (TableEnt *te, int abi, int fudge)
+{
+    char* c;
+
+    for (c = te->right; *c; c++) (void) printf ("'%c',", *c);
+    (void) printf ("%c", '0');
+    if (te->next || fudge) (void) printf ("%c", ',');
+    (void) printf ("%s", "\n");
+}
+
+static char* const_string = "%s %sConst char %s[] = {\n";
+
+static void IntelABIWriteSource (int abi)
+{
+    File* phile;
+
+    for (phile = file; phile; phile = phile->next) {
+	Table* t;
+	TableEnt* te;
+
+	for (t = phile->table; t; t = t->next) {
+	    (void) printf (const_string, externdefstr, 
+			   conststr ? conststr : "", t->name);
+	    for (te = t->tableent; te; te = te->next)
+		WriteSourceLine (te, abi, 0);
+	    (void) printf ("%s\n\n", "};");
+	}
+    }
+}
+
+static void IntelABIBCWriteSource (int abi)
+{
+    File* phile;
+
+    for (phile = file; phile; phile = phile->next) {
+	Table* t;
+	TableEnt* te;
+
+	(void) printf (const_string, externdefstr, 
+		       conststr ? conststr : "", phile->table->name);
+
+	for (t = phile->table; t; t = t->next) 
+	    for (te = t->tableent; te; te = te->next)
+		WriteSourceLine (te, abi, t->next ? 1 : 0);
+	(void) printf ("%s\n\n", "};");
+
+	if (phile->table->next) {
+	    (void) printf (const_string, externdefstr, 
+			   conststr ? conststr : "", phile->table->next->name);
+	    for (t = phile->table->next; t; t = t->next) 
+		for (te = t->tableent; te; te = te->next)
+		    WriteSourceLine (te, abi, 0);
+	    (void) printf ("%s\n\n", "};");
+	}
+    }
+}
+
+static void FunctionWriteSource (int abi)
+{
+    File* phile;
+
+    for (phile = file; phile; phile = phile->next) {
+	Table* t;
+	TableEnt* te;
+
+	(void) printf ("static %sConst char _%s[] = {\n", 
+		       conststr ? conststr : "", phile->table->name);
+
+	for (t = phile->table; t; t = t->next) 
+	    for (te = t->tableent; te; te = te->next)
+		WriteSourceLine (te, abi, t->next ? 1 : 0);
+	(void) printf ("%s\n\n", "};");
+
+	(void) printf ("%sConst char* %s(index)\n    int index;\n{\n    return &_%s[index];\n}\n\n",
+		       conststr ? conststr : "", 
+		       phile->table->name, phile->table->name);
+    }
+}
+
+static void ArrayperWriteSource (int abi)
+{
+    File* phile;
+    static int done_atom;
+
+    for (phile = file; phile; phile = phile->next) {
+	Table* t;
+	TableEnt* te;
+
+	for (t = phile->table; t; t = t->next) 
+	    for (te = t->tableent; te; te = te->next) {
+		if (strcmp (te->left, "RAtom") == 0) {
+		    if (done_atom) return;
+		    done_atom = 1;
+		}
+		(void) printf ("%s %sConst char %s%s[] = \"%s\";\n",
+			       externdefstr, conststr ? conststr : "",
+			       prefixstr, 
+			       te->left, te->right);
+	    }
+    }
+}
+
+static void DefaultWriteSource (int abi)
+{
+    File* phile;
+
+    for (phile = file; phile; phile = phile->next) {
+	Table* t;
+	TableEnt* te;
+
+	(void) printf (const_string, externdefstr, conststr ? conststr : "",
+		       phile->table->name);
+
+	for (t = phile->table; t; t = t->next) 
+	    for (te = t->tableent; te; te = te->next)
+		WriteSourceLine (te, abi, t->next ? 1 : 0);
+	(void) printf ("%s\n\n", "};");
+    }
+}
+
+static void WriteSource(char *tagline, int abi)
+{
+    static void (*sourceproc[])(int) = { 
+	DefaultWriteSource, ArrayperWriteSource,
+	IntelABIWriteSource, IntelABIBCWriteSource,
+	DefaultWriteSource, FunctionWriteSource };
+
+    FILE* tmpl;
+
+    if (ctmplstr) {
+	tmpl = ifopen (ctmplstr, "r");
+
+	if (tmpl) CopyTmplProlog (tmpl, stdout);
+	else {
+	    (void) fprintf (stderr, "Expected template %s, not found\n",
+			    ctmplstr);
+	    exit (1);
+	}
+    } else
+	tmpl = NULL;
+
+
+    (void) printf ("%s\n%s\n/* %s ABI version -- Do not edit */\n", 
+		   "/* $Xorg: makestrs.c,v 1.6 2001/02/09 02:03:17 xorgcvs Exp $ */",
+		   "/* This file is automatically generated. */",
+		   abistring[abi]);
+
+    if (tagline) (void) printf ("/* %s */\n\n", tagline);
+
+    (*sourceproc[abi])(abi);
+
+    if (tmpl) CopyTmplEpilog (tmpl, stdout);
+}
+
+static void DoLine(char *buf)
+{
+#define X_NO_TOKEN 0
+#define X_FILE_TOKEN 1
+#define X_TABLE_TOKEN 2
+#define X_PREFIX_TOKEN 3
+#define X_FEATURE_TOKEN 4
+#define X_EXTERNREF_TOKEN 5
+#define X_EXTERNDEF_TOKEN 6
+#define X_CTMPL_TOKEN 7
+#define X_HTMPL_TOKEN 8
+#define X_CONST_TOKEN 9
+
+    int token;
+    char lbuf[1024];
+    static char* file_str = "#file";
+    static char* table_str = "#table";
+    static char* prefix_str = "#prefix";
+    static char* feature_str = "#feature";
+    static char* externref_str = "#externref";
+    static char* externdef_str = "#externdef";
+    static char* ctmpl_str = "#ctmpl";
+    static char* htmpl_str = "#htmpl";
+    static char* const_str = "#const";
+
+    if (strncmp (buf, file_str, strlen (file_str)) == 0) 
+	token = X_FILE_TOKEN;
+    else if (strncmp (buf, table_str, strlen (table_str)) == 0) 
+	token = X_TABLE_TOKEN;
+    else if (strncmp (buf, prefix_str, strlen (prefix_str)) == 0) 
+	token = X_PREFIX_TOKEN;
+    else if (strncmp (buf, feature_str, strlen (feature_str)) == 0) 
+	token = X_FEATURE_TOKEN;
+    else if (strncmp (buf, externref_str, strlen (externref_str)) == 0) 
+	token = X_EXTERNREF_TOKEN;
+    else if (strncmp (buf, externdef_str, strlen (externdef_str)) == 0) 
+	token = X_EXTERNDEF_TOKEN;
+    else if (strncmp (buf, ctmpl_str, strlen (ctmpl_str)) == 0) 
+	token = X_CTMPL_TOKEN;
+    else if (strncmp (buf, htmpl_str, strlen (htmpl_str)) == 0) 
+	token = X_HTMPL_TOKEN;
+    else if (strncmp (buf, const_str, strlen (const_str)) == 0) 
+	token = X_CONST_TOKEN;
+    else
+        token = X_NO_TOKEN;
+
+    switch (token) {
+    case X_FILE_TOKEN:
+	{
+	    File* phile;
+
+	    if ((phile = (File*) malloc (sizeof(File))) == NULL) 
+		exit(1);
+	    if ((phile->name = malloc (strlen (buf + strlen (file_str)) + 1)) == NULL) 
+		exit(1);
+	    (void) strcpy (phile->name, buf + strlen (file_str) + 1);
+	    phile->table = NULL;
+	    phile->tablecurrent = NULL;
+	    phile->tabletail = &phile->table;
+	    phile->next = NULL;
+	    phile->tmpl = NULL;
+
+	    *filetail = phile;
+	    filetail = &phile->next;
+	    filecurrent = phile;
+	}
+	break;
+    case X_TABLE_TOKEN:
+	{
+	    Table* table;
+	    if ((table = (Table*) malloc (sizeof(Table))) == NULL) 
+		exit(1);
+	    if ((table->name = malloc (strlen (buf + strlen (table_str)) + 1)) == NULL) 
+		exit(1);
+	    (void) strcpy (table->name, buf + strlen (table_str) + 1);
+	    if (solaris_abi_names) {
+		if (strcmp(table->name, "XtStringsR6") == 0) {
+		    strcpy(table->name, "XtR6Strings");
+		} else if (strcmp(table->name, "XtShellStringsR6") == 0) {
+		    strcpy(table->name, "XtR6ShellStrings");
+		}
+	    }
+	    table->tableent = NULL;
+	    table->tableentcurrent = NULL;
+	    table->tableenttail = &table->tableent;
+	    table->next = NULL;
+	    table->offset = 0;
+
+	    *filecurrent->tabletail = table;
+	    filecurrent->tabletail = &table->next;
+	    filecurrent->tablecurrent = table;
+	}
+	break;
+    case X_PREFIX_TOKEN:
+	if ((prefixstr = malloc (strlen (buf + strlen (prefix_str)) + 1)) == NULL) 
+	    exit(1);
+	(void) strcpy (prefixstr, buf + strlen (prefix_str) + 1);
+	break;
+    case X_FEATURE_TOKEN:
+	if ((featurestr = malloc (strlen (buf + strlen (feature_str)) + 1)) == NULL) 
+	    exit(1);
+	(void) strcpy (featurestr, buf + strlen (feature_str) + 1);
+	break;
+    case X_EXTERNREF_TOKEN:
+	if ((externrefstr = malloc (strlen (buf + strlen (externref_str)) + 1)) == NULL) 
+	    exit(1);
+	(void) strcpy (externrefstr, buf + strlen (externref_str) + 1);
+	break;
+    case X_EXTERNDEF_TOKEN:
+	if ((externdefstr = malloc (strlen (buf + strlen (externdef_str)) + 1)) == NULL) 
+	    exit(1);
+	(void) strcpy (externdefstr, buf + strlen (externdef_str) + 1);
+	break;
+    case X_CTMPL_TOKEN:
+	if ((ctmplstr = malloc (strlen (buf + strlen (ctmpl_str)) + 1)) == NULL) 
+	    exit(1);
+	(void) strcpy (ctmplstr, buf + strlen (ctmpl_str) + 1);
+	break;
+    case X_HTMPL_TOKEN:
+	if ((filecurrent->tmpl = ifopen (buf + strlen (htmpl_str) + 1, "r")) == NULL) {
+	    (void) fprintf (stderr, 
+			    "Expected template %s, not found\n", htmpl_str);
+	    exit (1);
+	}
+	break;
+    case X_CONST_TOKEN:
+	if ((conststr = malloc (strlen (buf + strlen (const_str)) + 1)) == NULL)
+	    exit(1);
+	(void) strcpy (conststr, buf + strlen (const_str) + 1);
+	break;
+    default:
+	{
+	    char* right;
+	    TableEnt* tableent;
+	    int llen;
+	    int rlen;
+	    int len;
+
+	    if ((right = index(buf, ' ')))
+		*right++ = 0;
+	    else
+		right = buf + 1;
+	    if (buf[0] == 'H') {
+		strcpy (lbuf, prefixstr);
+		strcat (lbuf, right);
+		right = lbuf;
+	    }
+
+	    llen = len = strlen(buf) + 1;
+	    rlen = strlen(right) + 1;
+	    if (right != buf + 1) len += rlen;
+	    if ((tableent = (TableEnt*)malloc(sizeof(TableEnt) + len)) == NULL)
+		exit(1);
+	    tableent->left = (char *)(tableent + 1);
+	    strcpy(tableent->left, buf);
+	    if (llen != len) {
+		tableent->right = tableent->left + llen;
+		strcpy(tableent->right, right);
+	    } else {
+		tableent->right = tableent->left + 1;
+	    }
+	    tableent->next = NULL;
+
+	    *filecurrent->tablecurrent->tableenttail = tableent;
+	    filecurrent->tablecurrent->tableenttail = &tableent->next;
+	    filecurrent->tablecurrent->tableentcurrent = tableent;
+	}
+	break;
+    }
+}
+
+static void IntelABIIndexEntries (File *file)
+{
+    Table* t;
+    TableEnt* te;
+
+    for (t = file->table; t; t = t->next)
+	for (te = t->tableent; te; te = te->next) {
+	    te->offset = t->offset;
+	    t->offset += strlen (te->right);
+	    t->offset++;
+    }
+}
+
+static void DefaultIndexEntries (File *file)
+{
+    Table* t;
+    TableEnt* te;
+    int offset = 0;
+
+    for (t = file->table; t; t = t->next)
+	for (te = t->tableent; te; te = te->next) {
+	    te->offset = offset;
+	    offset += strlen (te->right);
+	    offset++;
+    }
+}
+
+static void IndexEntries (File *file, int abi)
+{
+    switch (abi) {
+    case X_SPARC_ABI:
+	break;
+    case X_INTEL_ABI:
+    case X_INTEL_ABI_BC:
+	IntelABIIndexEntries (file);
+	break;
+    default:
+	DefaultIndexEntries (file);
+	break;
+    }
+}
+
+static char* DoComment (char *line)
+{
+    char* tag;
+    char* eol;
+    char* ret;
+    int len;
+
+    /* assume that the first line with two '$' in it is the RCS tag line */
+    if ((tag = index (line, '$')) == NULL) return NULL;
+    if ((eol = index (tag + 1, '$')) == NULL) return NULL;
+    len = eol - tag;
+    if ((ret = malloc (len)) == NULL)
+	exit (1);
+    (void) strncpy (ret, tag + 1, len - 1);
+    ret[len - 2] = 0;
+    return ret;
+}
+
+int main(int argc, char *argv[])
+{
+    int len, i;
+    char* tagline = NULL;
+    File* phile;
+    FILE *f;
+    char buf[1024];
+    int abi = 
+#ifndef ARRAYPERSTR
+	X_DEFAULT_ABI;
+#else
+	X_ARRAYPER_ABI;
+#endif
+
+    f = stdin;
+    if (argc > 1) {
+	for (i = 1; i < argc; i++) {
+	    if (strcmp (argv[i], "-f") == 0) {
+		if (++i < argc)
+		    f = fopen (argv[i], "r");
+		else
+		    return 1;
+	    }
+	    if (strcmp (argv[i], "-i") == 0) {
+		if (++i < argc)
+		    includedir = argv[i];
+		else
+		    return 1;
+	    }
+	    if (strcmp (argv[i], "-sparcabi") == 0)
+		abi = X_SPARC_ABI;
+	    if (strcmp (argv[i], "-intelabi") == 0)
+		abi = X_INTEL_ABI;
+	    if (strcmp (argv[i], "-functionabi") == 0)
+		abi = X_FUNCTION_ABI;
+	    if (strcmp (argv[i], "-earlyR6bc") == 0 && abi == X_INTEL_ABI)
+		abi = X_INTEL_ABI_BC;
+	    if (strcmp (argv[i], "-arrayperabi") == 0)
+		abi = X_ARRAYPER_ABI;
+#ifdef ARRAYPERSTR
+	    if (strcmp (argv[i], "-defaultabi") == 0)
+		abi = X_DEFAULT_ABI;
+#endif
+	    if (strcmp (argv[i], "-solarisabinames") == 0)
+		solaris_abi_names = TRUE;
+	}
+    }
+
+    if (f == NULL) return 1;
+    while (fgets(buf, sizeof buf, f)) {
+	if (!buf[0] || buf[0] == '\n') 
+	    continue;
+	if (buf[0] == '!') {
+	    if (tagline) continue;
+	    tagline = DoComment (buf);
+	    continue;
+	}
+	if (buf[(len = strlen (buf) - 1)] == '\n') buf[len] = '\0';
+	DoLine(buf);
+    }
+    for (phile = file; phile; phile = phile->next) {
+	if (abi != X_ARRAYPER_ABI) IndexEntries (phile, abi);
+	WriteHeader (tagline, phile, abi);
+    }
+    WriteSource(tagline, abi);
+    return 0;
+}
+
diff --git a/libXt/util/makestrs.man b/libXt/util/makestrs.man
new file mode 100644
index 000000000..bb9183938
--- /dev/null
+++ b/libXt/util/makestrs.man
@@ -0,0 +1,219 @@
+.\" $Xorg: makestrs.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $
+.\" Copyright (c) 1993, 1994, 1998 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 
+.\" dealing in this Software without prior written authorization from The
+.\" Open Group.
+.\"
+.\" $XFree86: xc/config/util/makestrs.man,v 3.8 2001/12/14 19:53:22 dawes Exp $
+.\"
+.TH MAKESTRS 1 __xorgversion__
+.SH NAME
+makestrs \- makes string table C source and header(s)
+.SH SYNOPSIS
+.B makestrs [-f source] [-i includedir] [-abioptions ...]
+.SH DESCRIPTION
+The
+.I makestrs
+command creates string table C source files and headers.
+If
+.I -f
+.I source
+is not specified
+.I makestrs
+will read from
+.IR stdin .
+The C source file is always written to
+.IR stdout .
+.I makestrs
+creates one or more C header files as specified in the source file.
+The following options may be specified:
+.IR -sparcabi ,
+.IR -intelabi ,
+.IR -functionabi ,
+.IR -arrayperabi ,
+and
+.I -defaultabi.
+.LP
+.I -sparcabi 
+is used on SPARC platforms conforming to the SPARC 
+Compliance Definition, i.e. SVR4/Solaris.
+.LP
+.I -intelabi 
+is used on Intel platforms conforming to the System 
+V Application Binary Interface, i.e. SVR4.
+.LP
+.I -earlyR6abi 
+may be used in addition to 
+.I -intelabi 
+for situations 
+where the vendor wishes to maintain binary compatibility between 
+X11R6 public-patch 11 (and earlier) and X11R6 public-patch 12 (and later).
+.LP
+.I -functionabi 
+generates a functional abi to the string table. This 
+mechanism imposes a severe performance penalty and it's recommended 
+that you not use it.
+.LP
+.I -arrayperabi 
+results in a separate array for each string. This is 
+the default behavior if makestrs was compiled with -DARRAYPERSTR 
+(it almost never is).
+.LP
+.I -defaultabi 
+forces the generation of the "normal" string table even 
+if makestrs was compiled with -DARRAYPERSTR. Since makestrs is almost 
+never compiled with -DARRAYPERSTR this is the default behavior if 
+no abioptions are specified.
+.LP
+.I -i includedir
+forces the reading of templates from the includedir instead of the local 
+directory. This is useful to have separate source and build directories. 
+.SH SYNTAX
+The syntax for string-list file is (items in square brackets are optional):
+.RS 4
+\&#prefix <text>
+.RE
+.RS 4
+\&#feature <text>
+.RE
+.RS 4
+\&#externref <text>
+.RE
+.RS 4
+\&#externdef [<text>]
+.RE
+.RS 4
+[#ctempl <text>]
+.RE
+.LP
+.RS 4
+\&#file <filename>
+.RE
+.RS 4
+\&#table <tablename>
+.RE
+.RS 4
+[#htempl]
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+\&...
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+[#table <tablename>
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+\&...
+.RE
+.RS 4
+<text>
+.RE
+.RS 4
+\& ...
+.RE
+.RS 4
+\&#table <tablename>
+.RE
+.RS 4
+\& ...]
+.RE
+.RS 4
+[#file <filename>
+.RE
+.RS 4
+\& ...]
+.RE
+.LP
+In words you may have one or more #file directives. Each #file may have
+one or more #table directives.
+.LP
+The #prefix directive determines the string that makestr will prefix
+to each definition.
+.LP
+The #feature directive determines the string that makestr will use
+for the feature-test macro, e.g. X[TM]STRINGDEFINES.
+.LP
+The #externref directive determines the string that makestr will use
+for the extern clause, typically this will be "extern" but Motif wants
+it to be "externalref"
+.LP
+The #externdef directive determines the string that makestr will use
+for the declaration, typically this will be the null string (note that
+makestrs requires a trailing space in this case, i.e. "#externdef "),
+and Motif will use "externaldef(_xmstrings).
+.LP
+The #ctmpl directive determines the name of the file used as a template
+for the C source file that is generated
+.LP
+Each #file <filename> directive will result in a corresponding header 
+file by that name containing the appropriate definitions as specified
+by command line options. A single C source file containing the
+declarations for the definitions in all the headers will be printed
+to stdout.
+.LP
+The #htmpl directive determines the name of the file used as a template
+for the C header file that is generated.
+.LP
+Each #table <tablename> directive will be processed in accordance with
+the ABI. On most platforms all tables will be catenated into a single
+table with the name of the first table for that file. To conform to
+the Intel ABI separate tables will be generated with the names indicated.
+.LP
+The template files specified by the #ctmpl and #htmpl directives
+are processed by copying line for line from the template file to
+the appropriate output file. The line containing the string
+.I <<<STRING_TABLE_GOES_HERE>>>
+is not copied to the output file. The appropriate data is then
+copied to the output file and then the remainder of the template
+file is copied to the output file.
+.SH BUGS
+makestrs is not very forgiving of syntax errors. Sometimes you need
+a trailing space after # directives, other times they will mess you
+up. No warning messages are emitted.
+.SH SEE ALSO
+SPARC Compliance Definition 2.2., SPARC International Inc.,
+535 Middlefield Road, Suite 210, Menlo Park, CA  94025
+.LP
+System V Application Binary Interface, Third Edition, 
+ISBN 0-13-100439-5
+UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, 
+NJ  07632
+.LP
+System V Application Binary Interface, Third Edition, Intel386
+Architecture Processor Supplement
+ISBN 0-13-104670-5
+UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, 
+NJ  07632
+.LP
+System V Application Binary Interface, Third Edition, SPARC
+Architecture Processor Supplement
+ISBN 0-13-104696-9
+UNIX Press, PTR Prentice Hall, 113 Sylvan Avenue, Englewood Cliffs, 
+NJ  07632
diff --git a/libXt/util/string.list b/libXt/util/string.list
new file mode 100644
index 000000000..bef098c2f
--- /dev/null
+++ b/libXt/util/string.list
@@ -0,0 +1,399 @@
+! $Xorg: string.list,v 1.3 2000/08/17 19:46:22 cpqbld Exp $
+! NOTE: To maintain binary compatibility, you can only APPEND items within
+!	a given list!!!!
+!
+! See the makestrs(1) manual.
+!
+
+#prefix Xt
+#feature XTSTRINGDEFINES
+#externref extern
+#externdef 
+! note that the trailing space is required in the #externdef line.
+#ctmpl util/StrDefs.ct
+
+#file StringDefs.h
+#table XtStrings
+#htmpl util/StrDefs.ht
+
+Naccelerators
+NallowHoriz
+NallowVert
+NancestorSensitive
+Nbackground
+NbackgroundPixmap
+Nbitmap
+NborderColor
+Nborder borderColor
+NborderPixmap
+NborderWidth
+Ncallback
+Nchildren
+Ncolormap
+Ndepth
+NdestroyCallback
+NeditType
+Nfile
+Nfont
+NforceBars
+Nforeground
+Nfunction
+Nheight
+Nhighlight
+NhSpace
+Nindex
+NinitialResourcesPersistent
+NinnerHeight
+NinnerWidth
+NinnerWindow
+NinsertPosition
+NinternalHeight
+NinternalWidth
+NjumpProc
+Njustify
+NknobHeight
+NknobIndent
+NknobPixel
+NknobWidth
+Nlabel
+Nlength
+NlowerRight
+NmappedWhenManaged
+NmenuEntry
+Nname
+Nnotify
+NnumChildren
+Norientation
+Nparameter
+Npixmap
+NpopupCallback
+NpopdownCallback
+Nresize
+NreverseVideo
+Nscreen
+NscrollProc
+NscrollDCursor
+NscrollHCursor
+NscrollLCursor
+NscrollRCursor
+NscrollUCursor
+NscrollVCursor
+Nselection
+NselectionArray
+Nsensitive
+Nshown
+Nspace
+Nstring
+NtextOptions
+NtextSink
+NtextSource
+Nthickness
+Nthumb
+NthumbProc
+Ntop
+Ntranslations
+NunrealizeCallback
+Nupdate
+NuseBottom
+NuseRight
+Nvalue
+NvSpace
+Nwidth
+Nwindow
+Nx
+Ny
+CAccelerators
+CBackground
+CBitmap
+CBoolean
+CBorderColor
+CBorderWidth
+CCallback
+CColormap
+CColor
+CCursor
+CDepth
+CEditType
+CEventBindings
+CFile
+CFont
+CForeground
+CFraction
+CFunction
+CHeight
+CHSpace
+CIndex
+CInitialResourcesPersistent
+CInsertPosition
+CInterval
+CJustify
+CKnobIndent
+CKnobPixel
+CLabel
+CLength
+CMappedWhenManaged
+CMargin
+CMenuEntry
+CNotify
+COrientation
+CParameter
+CPixmap
+CPosition
+CReadOnly
+CResize
+CReverseVideo
+CScreen
+CScrollProc
+CScrollDCursor
+CScrollHCursor
+CScrollLCursor
+CScrollRCursor
+CScrollUCursor
+CScrollVCursor
+CSelection
+CSensitive
+CSelectionArray
+CSpace
+CString
+CTextOptions
+CTextPosition
+CTextSink
+CTextSource
+CThickness
+CThumb
+CTranslations
+CValue
+CVSpace
+CWidth
+CWindow
+CX
+CY
+RAcceleratorTable
+RAtom
+RBitmap
+RBool
+RBoolean
+RCallback
+RCallProc
+RCardinal
+RColor
+RColormap
+RCursor
+RDimension
+RDisplay
+REditMode
+REnum
+RFile
+RFloat
+RFont
+RFontStruct
+RFunction
+RGeometry
+RImmediate
+RInitialState
+RInt
+RJustify
+RLongBoolean Bool
+RObject
+ROrientation
+RPixel
+RPixmap
+RPointer
+RPosition
+RScreen
+RShort
+RString
+RStringArray
+RStringTable
+RUnsignedChar
+RTranslationTable
+RVisual
+RWidget
+RWidgetClass
+RWidgetList
+RWindow
+Eoff
+Efalse
+Eno
+Eon
+Etrue
+Eyes
+Evertical
+Ehorizontal
+EtextRead read
+EtextAppend append
+EtextEdit edit
+Extdefaultbackground
+Extdefaultforeground
+Extdefaultfont
+NfontSet
+RFontSet
+CFontSet
+
+#table XtStringsR6
+
+RGravity
+NcreateHook
+NchangeHook
+NconfigureHook
+NgeometryHook
+NdestroyHook
+Nshells
+NnumShells
+RCommandArgArray
+RDirectoryString
+REnvironmentArray
+RRestartStyle
+RSmcConn
+Hcreate
+HsetValues
+HmanageChildren
+HunmanageChildren
+HmanageSet
+HunmanageSet
+HrealizeWidget
+HunrealizeWidget
+HaddCallback
+HaddCallbacks
+HremoveCallback
+HremoveCallbacks
+HremoveAllCallbacks
+HaugmentTranslations
+HoverrideTranslations
+HuninstallTranslations
+HsetKeyboardFocus
+HsetWMColormapWindows
+HsetMappedWhenManaged
+HmapWidget
+HunmapWidget
+Hpopup
+HpopupSpringLoaded
+Hpopdown
+Hconfigure
+HpreGeometry
+HpostGeometry
+Hdestroy
+
+#file Shell.h
+#table XtShellStrings
+#htmpl util/Shell.ht
+
+NiconName
+CIconName
+NiconPixmap
+CIconPixmap
+NiconWindow
+CIconWindow
+NiconMask
+CIconMask
+NwindowGroup
+CWindowGroup
+Nvisual
+CVisual
+NtitleEncoding
+CTitleEncoding
+NsaveUnder
+CSaveUnder
+Ntransient
+CTransient
+NoverrideRedirect
+COverrideRedirect
+NtransientFor
+CTransientFor
+NiconNameEncoding
+CIconNameEncoding
+NallowShellResize
+CAllowShellResize
+NcreatePopupChildProc
+CCreatePopupChildProc
+Ntitle
+CTitle
+RAtom
+Nargc
+CArgc
+Nargv
+CArgv
+NiconX
+CIconX
+NiconY
+CIconY
+Ninput
+CInput
+Niconic
+CIconic
+NinitialState
+CInitialState
+Ngeometry
+CGeometry
+NbaseWidth
+CBaseWidth
+NbaseHeight
+CBaseHeight
+NwinGravity
+CWinGravity
+NminWidth
+CMinWidth
+NminHeight
+CMinHeight
+NmaxWidth
+CMaxWidth
+NmaxHeight
+CMaxHeight
+NwidthInc
+CWidthInc
+NheightInc
+CHeightInc
+NminAspectY
+CMinAspectY
+NmaxAspectY
+CMaxAspectY
+NminAspectX
+CMinAspectX
+NmaxAspectX
+CMaxAspectX
+NwmTimeout
+CWmTimeout
+NwaitForWm waitforwm
+CWaitForWm Waitforwm
+
+#table XtShellStringsR6
+
+Nwaitforwm
+CWaitforwm
+NclientLeader
+CClientLeader
+NwindowRole
+CWindowRole
+Nurgency
+CUrgency
+NcancelCallback
+NcloneCommand
+CCloneCommand
+Nconnection
+CConnection
+NcurrentDirectory
+CCurrentDirectory
+NdieCallback
+NdiscardCommand
+CDiscardCommand
+Nenvironment
+CEnvironment
+NinteractCallback
+NjoinSession
+CJoinSession
+NprogramPath
+CProgramPath
+NresignCommand
+CResignCommand
+NrestartCommand
+CRestartCommand
+NrestartStyle
+CRestartStyle
+NsaveCallback
+NsaveCompleteCallback
+NsessionID
+CSessionID
+NshutdownCommand
+CShutdownCommand
+NerrorCallback
+
diff --git a/libXt/xt.pc.in b/libXt/xt.pc.in
new file mode 100644
index 000000000..3ea8c6fe2
--- /dev/null
+++ b/libXt/xt.pc.in
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+appdefaultdir=@appdefaultdir@
+
+Name: Xt
+Description: X Toolkit Library
+Version: @VERSION@
+Requires: xproto x11 sm
+Requires.private: x11 sm
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXt
diff --git a/packages.txt b/packages.txt
index 0ae01f904..96974d66e 100644
--- a/packages.txt
+++ b/packages.txt
@@ -55,6 +55,7 @@ libXdmcp-1.0.3
 libXfont-1.4.1
 libXinerama-1.1
 libxkbfile-1.0.6
+libXt-1.0.7
 MesaLib-7.6
 mkfontscale-1.0.7
 openssl-0.9.8k
-- 
cgit v1.2.3