diff --git a/ANNOUNCE b/ANNOUNCE
index 4dd8358..1ab10c8 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,18 +1,13 @@
-The Wine team is proud to announce that the stable release Wine 1.2 is
-now available.
+The Wine maintenance release 1.2.1 is now available.
 
-This release represents two years of development effort and over
-23,000 changes. The main highlights are the support for 64-bit
-applications, and the new graphics based on the Tango standard.
-
-It also contains a lot of improvements across the board, and over
-3,000 bug fixes. See the release notes below for a summary of the
-major changes.
+What's new in this release (see below for details):
+  - Translation updates.
+  - Various bug fixes.
 
 The source is available from the following locations:
 
-  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.2.tar.bz2
-  http://prdownloads.sourceforge.net/wine/wine-1.2.tar.bz2
+  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.2.1.tar.bz2
+  http://prdownloads.sourceforge.net/wine/wine-1.2.1.tar.bz2
 
 Binary packages for various distributions will be available from:
 
@@ -28,474 +23,360 @@
 
 ----------------------------------------------------------------
 
-What's new in Wine 1.2
-======================
+Bugs fixed in 1.2.1:
 
-*** Core functionality
+   3975  FILE: printing does not work as expected
+  13344  DPP 3.4.1.1 - Images with "Fit to window" corrupted
+  16047  Garena client crashes in WSASendTo
+  16998  WISO Sparbuch crashes at startup
+  18864  IW2: Edge of Chaos launcher pagefaults on startup
+  19070  hh.exe should exit immediately if not given a file to open (appinstall)
+  19560  Street Fighter IV : launcher crashes
+  21295  Painkiller and Painkiller Black Edition cannot accept CD Key submission preventing installation
+  22021  Switching pages in ElsterFormular 2009/2010 needs much time
+  22536  Office 2010 installation crashed
+  22881  Custom-decorated windows not movable with Openbox (affects steam, wow...)
+  22994  Far Cry installer quits
+  23085  Printing in notepad displays "Page &p" instead of actual page number.
+  23340  Winscard : test program : unimplemented function winscard.dll.SCardIsValidContext and winscard.dll.SCardReleaseContext
+  23453  Worms Armageddon cannot send text in WormNET
+  23477  WoW Cataclysm Beta needs KERNEL32.SetFileValidData
+  23578  Team Fortress 2: Significant lag disrupts gameplay...
+  23678  Crystal Cubes: fonts not drawn correctly
+  23704  winhelp failed to load any help file
+  23707  stack overflow when destroying a window whose owner is itself
+  23762  wineboot aborts if "Terminate Process" is clicked
+  23772  The bug in NtQueryInformationProcess with ProcessInformationClass = ProcessDebugObjectHandle
+  23810  16-bit setup program can't find its files
+  23907  Winecfg should not allow resolutions lower than 640x480 amount
+  23936  pressing enter in passpack's search box has no effect
+  23940  SetWindowPos does not work for other process windows
+  23953  qemu.exe exhausts file descriptors
+  24046  Keypressing in listview can result in infinite hang
+  24068  Crash in dbghelp (WoW)
+  24072  winepath: Add -0 option
+  24161  Anzio version 16.2 fails with ntdll exception
+  24180  crash in dnsbench.exe
+  24193  ptrace protection in Ubuntu 10.10 breaks debuggers (affects winedbg, wow, ...)
+  24226  Broken Sword II gives fatal error on startup
+  24425  err:module:find_forwarded_export function not found for forward 'krnl386.exe16.GetProcessDword'
+  24441  Fix the detection of the number of CPUs for OpenBSD.
 
-- Loading and running 64-bit Windows applications is now supported on
-  x86-64 processors (only on Linux at this point).
+----------------------------------------------------------------
 
-- There are now two flavors of Wine prefixes, 32-bit and
-  64-bit. 32-bit prefixes only support 32-bit applications, while
-  64-bit prefixes support both 32-bit and 64-bit applications. The
-  prefix flavor is set at prefix creation time and cannot be changed
-  afterwards, since all the files and registry entries are in
-  different locations. Backwards compatibility is ensured by
-  considering all prefixes created with older Wine versions to be
-  32-bit.
+Changes since 1.2:
 
-- WoW64 file system redirection is supported now. When running a
-  32-bit application in a 64-bit prefix, accesses to the
-  window/system32 directory are automatically redirected to
-  windows/syswow64.
+Alexandre Julliard (17):
+      comctl32: Fix positioning of toolbars that have the WS_BORDER style.
+      winebuild: Add more checks to protect against corrupted resource files.
+      server: Try to use /proc/pid/mem to read process memory since it should be faster.
+      rpcrt4: Don't align the buffer after reading the conformance, we need to read the variance first.
+      include: Don't install tlb files, they are platform-dependent.
+      configure: Send the flex error output to config.log.
+      winex11: Fix handling of the lpDx array in ExtTextOut for the non-Xrender case.
+      gdi32: Replicate a Windows bug in StretchDIBits for top-down bitmaps in the non-stretching case.
+      winex11: Sending a move/resize client message to the root requires a SubstructureRedirect mask too.
+      ntdll: Fix the protection state of writable sections.
+      krnl386.exe: Remove 16 suffix on Get/SetProcessDword since there's no 32-bit version.
+      ws2_32: Fail when select is called with an invalid fd.
+      server: Make the fd passing code slightly more portable.
+      ntdll: Add support for retrieving the server pid from the socket credentials.
+      ntdll: Add a workaround for Ubuntu's stupid ptrace breakage.
+      winex11: Force setting the cursor again on the first mouse event in case the initial setting failed.
+      Updated the authors list.
 
-- WoW64 registry redirection is now supported in 64-bit prefixes. This
-  allows both 32-bit and 64-bit applications to set platform-specific
-  registry keys without stepping on each other.
+Amine Khaldi (2):
+      mpr: Fix Bulgarian translation.
+      shdoclc: Fix Spanish translation.
 
-- All the 16-bit support code has been moved to a set of independent
-  16-bit modules. No 16-bit code is loaded or initialized when running
-  a standard Win32 application, unless it starts making 16-bit calls.
+Anders Jonsson (15):
+      README: Update Swedish translation.
+      mapi32: Add Swedish translation.
+      cryptui: Add Swedish translation.
+      xcopy: Add Swedish translation.
+      start: Add Swedish translation.
+      reg: Add Swedish translation.
+      jscript: Add Swedish translation.
+      credui: Update Swedish translation.
+      setupapi: Update Swedish translation.
+      wininet: Update Swedish translation.
+      shell32: Update Swedish translation.
+      devenum: Add Swedish translation.
+      user32: Update Swedish translation.
+      oleacc: Add Swedish translation.
+      winecfg: Update Swedish translation.
 
-- The mount manager now reports the actual UUID for disk devices that
-  support it instead of a hard-coded one.
+Andrew Nguyen (2):
+      ntdll: Fix the status code for ProcessDebugObjectHandle class in NtQueryInformationProcess when the debugger is absent.
+      krnl386.exe: Fix last error check for DOS compatibility hack.
 
-- Symbolic links are now supported in the registry.
+André Hentschel (7):
+      winebuild: Don't segfault when run without arguments.
+      winecfg: Improve German view.
+      winecfg: Sync German keyboard shortcuts.
+      comdlg32: Fix German font dialog.
+      comdlg32: Fix German shortcut conflict.
+      winhlp32: Update translations.
+      winedbg: Fix typo in German translation.
 
-- The C runtime libraries msvcr80, msvcr90 and msvcr100 used by recent
-  Visual C++ versions are now partially implemented.
+Aurimas Fišeras (1):
+      taskmgr: Update Lithuanian translation.
 
-- Some functions now use a Microsoft-compatible function prologue when
-  building with a recent enough gcc. This allows Steam overlays to
-  work.
+Austin English (4):
+      Remove references to wineprefixcreate.
+      winscard: Add stubs for SCardIsValidContext/SCardReleaseContext.
+      kernel32: Add stub for SetFileValidData.
+      ntdll: Check for __FreeBSD_kernel__, remove redundant ifdef's, make FIXME's consistent.
 
+Brad Smith (1):
+      ntll: Fix the detection of the number of CPUs for OpenBSD.
 
-*** User interface
+Cheer Xiao (7):
+      oleview: Update simplified Chinese translation.
+      regedit: Update simplified Chinese translation.
+      uninstaller: Update simplified Chinese translation.
+      view: Update simplified Chinese translation.
+      wineboot: Update simplified Chinese translation.
+      winemine: Update simplified Chinese translation.
+      wordpad: Update simplified Chinese translation.
 
-- There are new icons for all the built-in applications, as well as
-  for the standard toolbars and images. The icons are based on the
-  Tango set for a nicer integration with the native Unix desktop look.
+Damjan Jovanovic (1):
+      notepad: Substitute the page number in the footer.
 
-- Animated cursors can now be loaded, though only the first frame of
-  the animation is used as a static cursor.
+Dan Kegel (1):
+      kernel32: Add error text for WSAECONNREFUSED.
 
-- The mouse cursor is now updated correctly in applications that
-  create windows from different threads, like Internet Explorer.
+Davide Pizzetti (6):
+      winecfg: Italian translation update.
+      winedbg: Italian translation update.
+      xcopy: Italian translation update.
+      wordpad: Italian translation update.
+      xcopy: Italian translation update.
+      wineboot: Italian translation update.
 
-- The standard print and page setup dialogs are working much better
-  now.
+Detlef Riekenberg (2):
+      winhelp.exe16: Add missing separator after command name.
+      wineps: Use winspool.drv for job management.
 
-- There is now an application wizard control panel to manage installed
-  applications.
+Dmitry Timoshkov (6):
+      winex11: Remember last window that had the XIC focus and use it in ToUnicode() to make dead keys work more reliably.
+      gdi32: Make sure that all the glyph metrics are transformed before caching them.
+      user32: Protect from setting as a window owner one of its successors.
+      user32: Properly pack the WM_WINE_SETWINDOWPOS internal message.
+      winex11.drv: Avoid copying window bits if the window didn't move.
+      winex11.drv: Avoid copying invalid window bits.
 
-- Rendering of bi-directional text is now supported reasonably
-  well. There is also some support for Arabic text shaping.
+Eric Pouech (1):
+      dbghelp: Fix regression with prevented StackWalk on i386 CPU to be called with a NULL context.
 
-- Many features of the RichEdit control are improved, particularly
-  support for tables, URL detection, cursor positioning, scrollbar
-  management, and support for windowless controls.
+Francois Gouget (7):
+      wine.inf: Let winebrowser handle the ftp URLs.
+      xcopy: Remove spaces before '\n's in the Korean translation.
+      start: Remove spaces before '\n's in the Portuguese translation.
+      programs: Remove spaces before '\n's in the Swedish translation.
+      shell32: Remove spaces before '\n's in the Serbian translation.
+      appwiz.cpl: Remove a space before an ellipsis in the Norwegian translation.
+      shdoclc: Remove a space before an ellipsis in the Italian translation.
 
-- Many common controls work better now, particularly the listview,
-  calendar and tab controls.
+Frédéric Delanoy (1):
+      start: Fix French translation.
 
-- There is now a partial implementation of the Microsoft Text Services
-  framework, which provides better input method support in modern
-  applications.
+Hans Leidekker (3):
+      dnsapi: Remove the critical section around res_query.
+      winecfg: Update Windows 7 version to Service Pack 1.
+      msi: Treat empty string as NULL in MsiGetSummaryInformationW.
 
-- There is now a proper user interface for importing, exporting and
-  managing cryptographic keys and certificates.
+Harald Hoyer (1):
+      preloader: Fix moving of auxiliary values.
 
-- Wine is now fully translated to French, German, Dutch, Italian,
-  Portuguese, Romanian, Polish, Lithuanian, Norwegian, and Korean. It
-  has partial translations for another twenty languages.
+Howell Tam (1):
+      ws2_32: Wrapped WSASendTo/WSARecvFrom with a different function name.
 
+Huw Davies (2):
+      rpcrt4: Add a missing STUBLESS_INITOUT case.
+      winspool.drv: Allow for spaces in either the printer name or the spool file.
 
-*** Desktop integration
+Hwang YunSong (2):
+      start: Update Korean resource.
+      xcopy: Update Korean resource.
 
-- The XDG standard for application startup notification is now
-  implemented.
+Igor Paliychuk (28):
+      appwiz.cpl: Add Ukrainian translation.
+      winecfg: Add Ukrainian translation.
+      regedit: Add Ukrainian translation.
+      oleview: Add Ukrainian translation.
+      shell32: Update Ukrainian translation.
+      taskmgr: Add Ukrainian translation.
+      notepad: Add Ukrainian translation.
+      cryptui: Add Ukrainian translation.
+      winedbg: Add Ukrainian translation.
+      net: Add Ukrainian translation.
+      progman: Add Ukrainian translation.
+      wineboot: Add Ukrainian translation.
+      browseui: Add Ukrainian translation.
+      notepad: Ukrainian translation fix.
+      gphoto2.ds: Add Ukrainian translation.
+      jscript: Add Ukrainian translation.
+      progman: Ukrainian translation fix.
+      sane.ds: Add Ukrainian translation.
+      winspool.drv: Add Ukrainian translation.
+      wineconsole: Add Ukrainian translation.
+      cmdlgtst: Add Ukrainian translation.
+      start: Add Ukrainian translation.
+      cmd: Add Ukrainian translation.
+      taskmgr: Fixed Ukrainian translation.
+      comdlg32: Ukrainian translation update.
+      crypt32: Ukrainian translation update.
+      comdlg32: Fixed Russian standard dialog sizes.
+      comdlg32: Fixed Ukrainian standard dialog sizes.
 
-- The NET_WORKAREA property is now supported to let applications take
-  into account the size of the Unix desktop task bars.
+Jacek Caban (1):
+      widl: Define _WIN32 by default.
 
-- File associations created by a Windows applications are now
-  registered with the Unix desktop.
+Jerome Leclanche (2):
+      winepath: Add a -0 option to use null character as separator.
+      gdi32: Properly set ERROR_NOACCESS when GetObject receives invalid arguments.
 
-- Application icons are now set with the NET_WM_ICON hint, which
-  enables alpha channel transparency under window managers that
-  support it.
+Jose Rostagno (2):
+      notepad: Fix Spanish translation.
+      cmd: Fix Spanish translation.
 
-- Maximizing a window from the Unix window manager is now detected and
-  the state is correctly reflected on the Windows application side.
+Juan Lang (1):
+      iphlpapi: Don't overwrite last IPv4 address with first IPv6 address.
 
-- The XDG desktop screen saver is now launched when a Windows
-  application makes a request to start the screen saver.
+Ken Thomases (1):
+      winex11: Pass window property to server in 64KB chunks.
 
-- Start Menu entries are now properly removed when an application is
-  uninstalled.
+Lauri Kenttä (4):
+      user32: Update Finnish translation.
+      wininet: Update Finnish translation.
+      msi: Update Finnish translation.
+      comdlg32: Update Finnish translation.
 
-- Copying and pasting images between Windows and Unix applications
-  works more reliably now, and more image formats are supported.
+Louis Lenders (2):
+      kernel32: Change SetHandleCount to match behaviour on versions >WINNT.
+      wine.inf.in: Add registry key under HKLM\%CurrentVersion%\Policies\System.
 
-- Launching an external Unix Web browser from a Windows application
-  now works correctly.
+Luca Bennati (41):
+      winecfg: Fix Italian translation.
+      taskmgr: Fix Italian translation.
+      winhlp32: Fix Italian translation.
+      wineconsole: Fix Italian translation.
+      crypt32: Update Italian translation.
+      wldap32: Update Italian translation.
+      cmd: Update Italian translation.
+      winecfg: Update Italian translation.
+      devenum: Update Italian translation.
+      user32: Update Italian translation.
+      winecfg: Fix Italian translation.
+      crypt32: Update Italian translation.
+      avifil32: Update Italian translation.
+      cryptdlg: Update Italian translation.
+      hhctrl.ocx: Update Italian translation.
+      winecfg: Update Italian translation.
+      iccvid: Update Italian translation.
+      wininet: Update Italian translation.
+      wineps.drv: Update Italian translation.
+      shdoclc: Update Italian translation.
+      oledlg: Update Italian translation.
+      comdlg32: Update Italian translation.
+      msvfw32: Update Italian translation.
+      wineconsole: Update Italian translation.
+      wordpad: Update Italian translation.
+      notepad: Update Italian translation.
+      regeedit: Update Italian translation.
+      winecfg: Fix Italian translation.
+      reg: Update Italian translation.
+      winemine: Update Italian translation.
+      cmdlgtst: Update Italian translation.
+      xcopy: Fix Italian translation.
+      start: Fix Italian translation.
+      winefile: Update Italian translation.
+      msrle32: Update Italian translation.
+      oleaut32: Update Italian translation.
+      browseui: Convert Italian translation to UTF-8.
+      serialui: Update Italian translation.
+      comctl32: Update Italian translation.
+      msacm32: Update Italian translation.
+      kernel32: Update Italian translation.
 
-- MSI files are now associated with Wine to enable launching them
-  directly from the desktop.
+Maarten Lankhorst (2):
+      mmdevapi: Blacklist portaudio.
+      winmm: Fix fd leak on restarting timer.
 
-- The virtual desktop window now switches to full-screen mode when its
-  size matches that of the screen.
+Marcus Meissner (2):
+      gdi32: Rebuild font hash after changing the matrix.
+      ntdll: Set correct protection flags on sections in builtin DLLs.
 
-- The strange window management behavior used by Delphi-generated
-  applications is better supported now.
+Matt 'Murph' Finnicum (1):
+      imm32: Set size of OSVERSIONINFOA before calling GetVersionExA.
 
+Michael Stefaniuc (2):
+      cmd: Remove stray ';' from the resource files.
+      winhlp32: Move from a per resource to a global LANGUAGE setting.
 
-*** Graphics
+Nikolay Sivov (1):
+      comctl32/listview: Fix infinite loop case for full item range as a first search range.
 
-- Subpixel font rendering is now supported, which greatly improves
-  text appearance on LCD screens. The subpixel configuration is
-  derived from the system fontconfig and Xft settings.
+Octavian Voicu (1):
+      wined3d: Add missing ckey, fx, and pal directdraw caps.
 
-- Icons with alpha channels are now properly blended in, for a much
-  nicer appearance.
+Owen Rudge (2):
+      fusion: Install assemblies into correct directory for architecture.
+      fusion: Implement IAssemblyNameImpl_GetDisplayName more completely.
 
-- Image lists now properly store the alpha channel of images and use
-  it when displaying them.
-
-- The windowscodecs dll has been added, with codecs for the JPEG, GIF,
-  PNG, BMP, ICO, and TIFF image formats.
-
-- Many functions are now implemented in GDIPlus. The gdiplus dll is
-  now considered good enough to load the built-in version by default.
-
-- Overlays are now supported in DirectDraw.
-
-- Many more capabilities are now supported in the SANE scanner
-  backend. This improves scanning support in Acrobat.
-
-
-*** Audio
-
-- The openal32 dll is now implemented, as a wrapper around the Unix
-  OpenAL library.
-
-- There is now an initial implementation of the mmdevapi dll (part of
-  the new Vista sound architecture), using OpenAL for sound I/O.
-
-- The msgsm32.acm GSM codec is now supported.
-
-- The ALSA sound driver now works better with PulseAudio's ALSA
-  emulation.
-
-- Digital playback of audio CDs is now supported.
-
-
-*** Internet and networking
-
-- The HTTP protocol implementation has seen many improvements, in
-  particular better handling of proxies and redirects, better cookie
-  management, support for gzip encoding, fixes for chunked transfer
-  mode, support for IPv6 addresses, and better certificate validation
-  on secure connections.
-
-- The Gecko HTML engine has been updated to a more recent upstream
-  version. Many more HTML objects are now implemented.
-
-- The RPC layer now properly supports server-side authentication and
-  impersonation. The COM marshalling/unmarshalling is also more
-  compatible. RPC is now supported over the HTTP protocol too.
-
-- There is now an essentially complete implementation of the
-  JavaScript language.
-
-- The IRDA network protocol is now supported by the socket layer.
-
-- The inetmib1 dll is now implemented, with support for the standard
-  SNMP MIB tables.
-
-- The inetcomm dll now implements the POP3 and SMTP protocols, as well
-  as better MIME support.
-
-- Extended mail providers are now better supported, particularly the
-  native Outlook provider. Mail attachments are also supported now.
-
-- Many undocumented functions in the shlwapi dll have been implemented
-  for improved Internet Explorer support.
-
-
-*** Direct3D
-
-- FBOs are now used by default for off-screen rendering in Direct3D.
-
-- Backbuffers larger/smaller than their associated window are now
-  correctly stretched.
-
-- A large portion of the d3dx9 dlls is now implemented, most notably
-  the shader assembler, .x file support, functions for fonts, general
-  3D math, mesh handling, and sprites. A start has been made with the
-  texture and effect functions.
-
-- Fog handling has improved a lot.
-
-- Various YUV texture formats are now supported.
-
-- wined3d contexts are now managed per-thread, and play nice both with
-  other wined3d instances and opengl32 GL contexts. Contexts are
-  checked for validity before being used (e.g. if the associated
-  window is destroyed.)
-
-- Point sprite handling has improved a lot.
-
-- The shader source is now dumped on GLSL compile/link failures. This
-  is mostly to help driver developers, like Mesa, with investigating
-  GLSL bugs triggered by Wine.
-
-- The graphics card detection code is improved, and many more graphics
-  cards are now recognized.
-
-- User clip planes are now supported in shaders. This allows proper
-  water reflections in Half-Life 2.
-
-- There is now an initial implementation of Direct3D 10, including the
-  dxgi, d3d10core and d3d10 dlls.  Most of the work so far has gone
-  into parsing d3d10 effects and SM4 shaders.
-
-- Shadow samplers are now properly supported. This fixes shadows in
-  StarCraft 2.
-
-- There is now a shader based implementation of D3D fixed function
-  fragment processing. This avoids some limitations of the previous
-  OpenGL fixed function based approach.
-
-- Partial updates of surfaces with compressed formats are now properly
-  supported.
-
-- Many new OpenGL extensions are now supported. These include:
-
-   - EXT_provoking_vertex/ARB_provoking_vertex. This allows the
-     correct vertex color to be used when flat shading is enabled, and
-     helps Civilization IV in particular.
-
-   - EXT_vertex_array_bgra/ARB_vertex_array_bgra. This allows for more
-     efficient handling of BGRA (D3DCOLOR) data in the fixed function
-     pipeline.
-
-   - EXT_draw_buffers2. This enables independent color write masks
-     when multiple (simultaneous) render targets are in use.
-
-   - Various nVidia extensions to ARB vertex/fragment programs. These
-     allow SM3 support with the ARB vertex/fragment program shader
-     backend.
-
-   - EXT_texture_compression_rgtc. This adds support for the ATI2N
-     (also known as 3Dc) compressed texture format.
-
-   - ARB_texture_rg. This allows for more efficient support of the
-     R16F, G16R16F, R32F and G32R32F texture formats.
-
-   - ARB_framebuffer_object. This is mostly the same as the existing
-     support for EXT_framebuffer_object, but improves rendering with a
-     depth/stencil buffer larger than the color buffer(s). It helps
-     (among others) Splinter Cell,
-
-   - ARB_sync. This adds support for multi-threaded / cross GL context
-     event queries used by Dragon Age: Origins.
-
-   - ARB_half_float_vertex. This adds support for 16-bit floating
-     point vertex formats on cards that don't already support
-     NV_half_float. It helps Supreme Commander.
-
-- There is now a general framework for supporting variations/quirks in
-  GL drivers.
-
-
-*** Built-in applications
-
-- The Wine debugger now displays a crash dialog to let the user know
-  that a crash happened before dumping the backtrace information.
-
-- The Wine debugger now uses the Dwarf exception unwinding data for
-  more reliable backtraces.
-
-- The file dialogs in built-in applications are now resizable.
-
-- Regedit can now import from and export to files in Unicode format.
-
-- Wineboot now displays a dialog while creating or updating the prefix
-  directory to let the user know that something is happening, since
-  the update can take some time, particularly with 64-bit prefixes.
-
-- Text replacement is now implemented in Notepad.
-
-- The print preview feature in Wordpad now works much better.
-
-- Navigation in help files now works better in Winhelp. Many graphical
-  glitches have also been fixed.
-
-- The Winecfg dialogs have been tweaked so that the application is
-  usable in a 640x480 desktop. The About panel has been redesigned
-  with better graphics.
-
-- The command-line parser in cmd.exe is more compatible now, which
-  should enable more Windows batch files to execute correctly. There
-  is also a regression test suite for it.
-
-- Rpcss now implements a proper RPC endpoint mapper.
-
-
-*** Build environment
-
-- The Wine IDL compiler can now generate correct code for all the
-  standard IDL files, including proper exception handling. A large
-  number of COM proxies and servers are now automatically generated
-  from their IDL definitions.
-
-- The fake dll placeholders are now built at compile time, instead of
-  being generated every time a Wine prefix is created. This makes it
-  possible to install a placeholder for every supported dll, which
-  should avoid many failures in installers that check dll versions.
-
-- configure now supports the --disable-tests option to prevent
-  building the test suite. This allows for faster compile times,
-  particularly when bisecting a regression.
-
-- The cross-compiled tests are now built against the Wine import
-  libraries instead of the Mingw ones. The latter are not compatible
-  enough for our needs.
-
-- winegcc now handles resource files just like normal object files and
-  links them into the final binary without requiring special build
-  rules.
-
-- winebuild and winegcc now fully support Solaris.
-
-- Wine now builds properly on Cygwin, though some of the resulting
-  binaries do not work correctly.
-
-- Makefiles are now created as needed during the build process,
-  instead of being all created together at configure time. This makes
-  it unnecessary to run 'make depend' in most cases.
-
-- winemaker now has better support for Visual C++ project files.
-
-
-*** Miscellaneous
-
-- The OLE storage implementation now supports transacted storage, with
-  proper commits and rollbacks. This enables support for Microsoft
-  Office documents containing macros.
-
-- The MSI installer now supports patches, which enables the
-  installation of service packs for many applications. Many more MSI
-  standard actions are also supported now.
-
-- The rsaenh dll now supports the SHA-256, SHA-384, and SHA-512
-  encryption algorithms, as well as CALG_SSL3_SHAMD5 hashing.
-
-- OLE database objects are now implemented, which fixes the clipart
-  functionality in Microsoft Office 2007.
-
-- Copying and pasting OLE objects across applications works better now.
-
-- Support for cryptographic signatures and certificates is improved,
-  including support for certificate trust lists.
-
-- The Task Scheduler service is now implemented.
-
-
-*** Performance
-
-- Bitmap stretching and alpha blending is now done through Xrender
-  when possible, which avoids a time-consuming round-trip of the
-  bitmap bits from the X server.
-
-- Startup time for MSI installers that contain a large amount of
-  strings is much improved.
-
-- Setting the processor affinity for threads or processes is now
-  supported, which improves multi-core performance for applications
-  that take advantage of it.
-
-- Loading large symbol tables in the Wine debugger is much faster
-  now.
-
-- FBO handling has improved significantly. Recently used FBO
-  configurations are now cached, which is a major performance
-  improvement.
-
-- Loading shader constants is more efficient now. This improves
-  performance for (among others) Half-Life 2, Counter Strike: Source,
-  and Source Engine games in general.
-
-- The performance of sRGB samples is improved, this particularly helps
-  Source Engine games.
-
-
-*** Platform-specific changes
-
-- Joysticks POV switch and axis remapping are now better supported on
-  Linux. Joysticks are now supported on Mac OS X too.
-
-- The various DVD I/O controls are now implemented on Mac OS X.
-
-- The network routing and statistics functions in iphlpapi are now
-  implemented on Solaris and FreeBSD.
-
-- Mach-O debugging symbols (the format used by Mac OS X) are now
-  supported in the debugger.
-
-- Event ports are now used on Solaris for improved wineserver
-  performance.
-
-
-*** New library dependencies
-
-- The libgnutls library is now used for encryption and certificate
-  validation in secur32.
-
-- The libgsm library is now used for the GSM codec support.
-
-- The libmpg123 library is now used for mp3 decoding (except on Mac OS
-  X where CoreAudio functions are used instead).
-
-- The libopenal library is now used for the openal32 dll
-  implementation, as well as for the mmdevapi dll (Vista sound
-  support).
-
-- The libtiff library is now used for TIFF image decoding in the
-  windowscodecs dll.
-
-- The libv4l1 library is now used for video capture in DirectShow.
-
-
-*** Backwards compatibility
-
-- The wineshelllink helper script has been removed. All the menu and
-  desktop integration is now handled by winemenubuilder.
+Paul Vriens (17):
+      comctl32: Add the Serbian (Latin) translation.
+      msi: Add the Serbian (Latin) translation.
+      msi: Add the Serbian (Cyrillic) translation.
+      comctl32: Add the Serbian (Cyrillic) translation.
+      appwiz.cpl: Add the Serbian (Latin) translation.
+      comctl32: Use the Cyrillic 'O' in the Serbian translation.
+      appwiz.cpl: Add the Serbian (Cyrillic) translation.
+      comdlg32: Add the Serbian (Latin) translation.
+      shell32: Add the Serbian (Latin) translation.
+      user32: Add the Serbian (Latin) translation.
+      winhlp32: Add the Serbian (Latin) translation.
+      shell32: Add the Serbian (Cyrillic) translation.
+      shell32: Fix the Serbian (Latin) translation.
+      winecfg: Add the Serbian (Latin) translation.
+      user32: Add the Serbian (Cyrillic) translation.
+      cmd: Add the Swedish translation.
+      user32: Fix a typo.
 
-- The deprecated wineprefixcreate script has been removed. Wine prefix
-  directories are created automatically as needed.
+Peter Rosin (1):
+      winepath: Adhere to the requested separator on failure.
 
-- Old LinuxThreads setups are no longer supported. Wine now requires
-  the modern NPTL threading that has been standard on Linux for many
-  years now.
+Sven Baars (2):
+      user32: Fix the Dutch translation.
+      kernel32: Update the Dutch translation.
 
-- The PBuffer option for off-screen rendering has been removed from
-  Direct3D. This code was unmaintained, and offered little advantage
-  over the "fbo" or "backbuffer" modes.
+Travis Athougies (1):
+      wpp: Fixed bug in preventing add_text_to_macro from handling macros over 1 kb large.
 
+Vincent Povirk (3):
+      wineboot: Query windows from all desktops when --end-session --kill is used.
+      wineboot: Don't abort shutdown if we have to terminate a process.
+      winecfg: Don't allow virtual desktops smaller than 640x480.
 
-*** Known issues with recent 1.2 changes
+Vladimir Panteleev (1):
+      user32: Fix VK_RETURN handling in IsDialogMessage for dialogs without an IDOK.
 
-- The subpixel font rendering doesn't yet look quite as nice as that
-  used by the rest of the Unix desktop.
+Wolfram Sang (1):
+      hhctrl: Add check for no filename.
 
-- The OLE storage performance can degrade pretty badly on files with a
-  particular layout.
+Yaron Shahrabani (5):
+      notepad: Add Persian translation.
+      clock: Added Hebrew translation.
+      wineboot: Added Hebrew translation.
+      regedit: Added Hebrew translation.
+      clock: Updated Hebrew translation.
 
-- There is no 64-bit version of the Gecko engine yet, so 64-bit
-  applications that use a browser control won't work correctly.
+Łukasz Wojniłowicz (4):
+      oleacc: Update the Polish translation.
+      appwiz.cpl: Update the Polish translation.
+      wineps: Update the Polish translation.
+      oledlg: Update the Polish translation.
 
 --
 Alexandre Julliard
diff --git a/VERSION b/VERSION
index 6a6d754..aaabf7a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Wine version 1.2
+Wine version 1.2.1
diff --git a/configure b/configure
index 942663a..ab8f4dd 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,13 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for Wine 1.2.
+# Generated by GNU Autoconf 2.67 for Wine 1.2.1.
 #
 # Report bugs to <wine-devel@winehq.org>.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -319,7 +319,7 @@
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -359,19 +359,19 @@
 fi # as_fn_arith
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -533,7 +533,7 @@
 exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -552,8 +552,8 @@
 # Identity of this package.
 PACKAGE_NAME='Wine'
 PACKAGE_TARNAME='wine'
-PACKAGE_VERSION='1.2'
-PACKAGE_STRING='Wine 1.2'
+PACKAGE_VERSION='1.2.1'
+PACKAGE_STRING='Wine 1.2.1'
 PACKAGE_BUGREPORT='wine-devel@winehq.org'
 PACKAGE_URL='http://www.winehq.org'
 
@@ -885,8 +885,9 @@
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -931,7 +932,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -957,7 +958,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1161,7 +1162,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1177,7 +1178,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: $ac_useropt"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1207,8 +1208,8 @@
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
@@ -1216,7 +1217,7 @@
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1234,13 +1235,13 @@
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
 if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
-    fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1263,7 +1264,7 @@
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1277,8 +1278,8 @@
 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
+    $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
@@ -1293,9 +1294,9 @@
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error "working directory cannot be determined"
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error "pwd does not report name of working directory"
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1334,11 +1335,11 @@
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1364,7 +1365,7 @@
   # 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 Wine 1.2 to adapt to many kinds of systems.
+\`configure' configures Wine 1.2.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1378,7 +1379,7 @@
       --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
+  -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
@@ -1433,7 +1434,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Wine 1.2:";;
+     short | recursive ) echo "Configuration of Wine 1.2.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1576,10 +1577,10 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Wine configure 1.2
-generated by GNU Autoconf 2.65
+Wine configure 1.2.1
+generated by GNU Autoconf 2.67
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1733,7 +1734,7 @@
     mv -f conftest.er1 conftest.err
   fi
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
+  test $ac_status = 0; } > conftest.i && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        }; then :
@@ -1757,10 +1758,10 @@
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+  if eval "test \"\${$3+set}\"" = set; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=\$$3
@@ -1796,7 +1797,7 @@
 else
   ac_header_preproc=no
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
 $as_echo "$ac_header_preproc" >&6; }
 
@@ -1819,17 +1820,15 @@
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## ------------------------------------ ##
+( $as_echo "## ------------------------------------ ##
 ## Report this to wine-devel@winehq.org ##
-## ------------------------------------ ##
-_ASBOX
+## ------------------------------------ ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=\$ac_header_compiler"
@@ -1893,7 +1892,7 @@
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1923,7 +1922,7 @@
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1991,7 +1990,7 @@
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
 $as_echo_n "checking for $2.$3... " >&6; }
-if { as_var=$4; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$4+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2048,7 +2047,7 @@
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=no"
@@ -2096,8 +2095,8 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Wine $as_me 1.2, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+It was created by Wine $as_me 1.2.1, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -2207,11 +2206,9 @@
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -2245,11 +2242,9 @@
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -2262,11 +2257,9 @@
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -2280,11 +2273,9 @@
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -2339,7 +2330,12 @@
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
   ac_site_file1=$prefix/share/config.site
   ac_site_file2=$prefix/etc/config.site
@@ -2354,7 +2350,11 @@
     { $as_echo "$as_me:${as_lineno-$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"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
   fi
 done
 
@@ -2430,7 +2430,7 @@
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
   { $as_echo "$as_me:${as_lineno-$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_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2448,16 +2448,22 @@
 
 ac_aux_dir=
 for ac_dir in tools "$srcdir"/tools; do
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
+  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_fn_error "cannot find install-sh, install.sh, or shtool in tools \"$srcdir\"/tools" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in tools \"$srcdir\"/tools" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2749,7 +2755,7 @@
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
 $as_echo_n "checking build system type... " >&6; }
@@ -2760,16 +2766,16 @@
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
 test "x$ac_build_alias" = x &&
-  as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 $as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -2794,7 +2800,7 @@
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
@@ -2802,7 +2808,7 @@
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -2822,7 +2828,7 @@
 case "$srcdir" in
  .) ;;
  *) if test -f "$srcdir/Makefile" -o -f "$srcdir/include/config.h"; then
-      as_fn_error "you are building out of the source tree, but the source tree contains object files.
+      as_fn_error $? "you are building out of the source tree, but the source tree contains object files.
 You need to run 'make distclean' in the source tree first." "$LINENO" 5
     fi ;;
 esac
@@ -2832,7 +2838,7 @@
 $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 :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2840,7 +2846,7 @@
 all:
 	@echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# 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;;
@@ -3159,8 +3165,8 @@
 
 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3274,9 +3280,8 @@
 
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
@@ -3318,8 +3323,8 @@
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest conftest$ac_cv_exeext
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3376,9 +3381,9 @@
     else
 	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
+as_fn_error $? "cannot run C compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
     fi
   fi
 fi
@@ -3429,8 +3434,8 @@
 
 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
@@ -4054,7 +4059,7 @@
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-                      as_fn_error "Cannot build a 32-bit program, you need to install 32-bit development libraries." "$LINENO" 5
+                      as_fn_error $? "Cannot build a 32-bit program, you need to install 32-bit development libraries." "$LINENO" 5
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
@@ -4087,7 +4092,7 @@
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-                           as_fn_error "You need gcc >= 4.4 to build Wine as 64-bit." "$LINENO" 5
+                           as_fn_error $? "You need gcc >= 4.4 to build Wine as 64-bit." "$LINENO" 5
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
       fi
@@ -4112,7 +4117,7 @@
 then
     if test "x$enable_win64" = "xyes"
     then
-        as_fn_error "--enable-win64 and --with-wine64 are mutually exclusive.
+        as_fn_error $? "--enable-win64 and --with-wine64 are mutually exclusive.
 --enable-win64 should be used in the 64-bit build tree, --with-wine64 in the 32-bit Wow64 build tree." "$LINENO" 5
     fi
     WOW64_DISABLE=\#
@@ -4133,7 +4138,7 @@
   wine_cv_toolsdir="$with_wine_tools"
    if test -z "$with_wine_tools"; then
      if test "$cross_compiling" = "yes"; then
-       as_fn_error "you must use the --with-wine-tools option when cross-compiling." "$LINENO" 5
+       as_fn_error $? "you must use the --with-wine-tools option when cross-compiling." "$LINENO" 5
      elif test -n "$with_wine64"; then
        wine_cv_toolsdir="$with_wine64"
      fi
@@ -4146,7 +4151,7 @@
        *)  wine_cv_toolsdir="\$(TOPOBJDIR)/$wine_cv_toolsdir" ;;
      esac
    else
-     as_fn_error "could not find Wine tools in $wine_cv_toolsdir" "$LINENO" 5
+     as_fn_error $? "could not find Wine tools in $wine_cv_toolsdir" "$LINENO" 5
    fi
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wine_cv_toolsdir" >&5
@@ -4204,7 +4209,7 @@
 
 if test "$FLEX" = "none"
 then
-  as_fn_error "no suitable flex found. Please install the 'flex' package." "$LINENO" 5
+  as_fn_error $? "no suitable flex found. Please install the 'flex' package." "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether flex is recent enough" >&5
 $as_echo_n "checking whether flex is recent enough... " >&6; }
@@ -4221,7 +4226,7 @@
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-  as_fn_error "Your flex version is too old. Please install flex version 2.5.33 or newer." "$LINENO" 5
+  as_fn_error $? "Your flex version is too old. Please install flex version 2.5.33 or newer." "$LINENO" 5
 fi
 
 for ac_prog in bison
@@ -4269,7 +4274,7 @@
 
 if test "$BISON" = "none"
 then
-  as_fn_error "no suitable bison found. Please install the 'bison' package." "$LINENO" 5
+  as_fn_error $? "no suitable bison found. Please install the 'bison' package." "$LINENO" 5
 fi
 
 if test -n "$ac_tool_prefix"; then
@@ -4620,7 +4625,7 @@
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_GREP"; then
-    as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_GREP=$GREP
@@ -4686,7 +4691,7 @@
   done
 IFS=$as_save_IFS
   if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
   ac_cv_path_EGREP=$EGREP
@@ -5552,7 +5557,7 @@
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -5568,11 +5573,11 @@
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
   break
 fi
@@ -5611,7 +5616,7 @@
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -5627,18 +5632,18 @@
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
 
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -5767,8 +5772,7 @@
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -5916,8 +5920,7 @@
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -5978,8 +5981,7 @@
      # include <sys/param.h>
      #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -6029,8 +6031,7 @@
      # include <netinet/ip.h>
      #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -6081,8 +6082,7 @@
      #include <netinet/tcp_timer.h>
      #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -6106,8 +6106,7 @@
      # include <linux/types.h>
      #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -6614,7 +6613,7 @@
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-                                       as_fn_error "Xcode 3.x cannot build 16-bit code correctly. Use --disable-win16 if you don't need 16-bit support." "$LINENO" 5
+                                       as_fn_error $? "Xcode 3.x cannot build 16-bit code correctly. Use --disable-win16 if you don't need 16-bit support." "$LINENO" 5
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -6756,9 +6755,10 @@
 fi
 
       echo '{ global: *; };' >conftest.map
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -shared -Wl,--version-script=conftest.map" >&5
+      as_ac_var=`$as_echo "ac_cv_cflags_-fPIC -shared -Wl,--version-script=conftest.map" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -shared -Wl,--version-script=conftest.map" >&5
 $as_echo_n "checking whether the compiler supports -fPIC -shared -Wl,--version-script=conftest.map... " >&6; }
-if test "${ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map+set}" = set; then :
+if eval "test \"\${$as_ac_var+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_wine_try_cflags_saved=$CFLAGS
@@ -6768,17 +6768,18 @@
 int main(int argc, char **argv) { return 0; }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map=yes
+  eval "$as_ac_var=yes"
 else
-  ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map=no
+  eval "$as_ac_var=no"
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 CFLAGS=$ac_wine_try_cflags_saved
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map" >&5
-$as_echo "$ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map" >&6; }
-if test $ac_cv_cflags__fPIC__shared__Wl___version_script_conftest_map = yes; then :
+eval ac_res=\$$as_ac_var
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'};$as_echo "$as_val"'` = yes; then :
   LDSHARED="$LDSHARED \$(VERSCRIPT:%=-Wl,--version-script=%)"
 fi
       rm -f conftest.map
@@ -6813,7 +6814,7 @@
       as_ac_var=`$as_echo "ac_cv_cflags_-fPIC -Wl,--rpath,\\$ORIGIN/../lib" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -Wl,--rpath,\$ORIGIN/../lib" >&5
 $as_echo_n "checking whether the compiler supports -fPIC -Wl,--rpath,\$ORIGIN/../lib... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_var+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_wine_try_cflags_saved=$CFLAGS
@@ -6841,7 +6842,7 @@
   as_ac_var=`$as_echo "ac_cv_cflags_-fPIC -Wl,-R,\\$ORIGIN/../lib" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fPIC -Wl,-R,\$ORIGIN/../lib" >&5
 $as_echo_n "checking whether the compiler supports -fPIC -Wl,-R,\$ORIGIN/../lib... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_var+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_wine_try_cflags_saved=$CFLAGS
@@ -6896,9 +6897,10 @@
 
       case $host_cpu in
         *i[3456789]86* | x86_64)
-          { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400" >&5
+          as_ac_var=`$as_echo "ac_cv_cflags_-Wl,--section-start,.interp=0x7bf00400" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400" >&5
 $as_echo_n "checking whether the compiler supports -Wl,--section-start,.interp=0x7bf00400... " >&6; }
-if test "${ac_cv_cflags__Wl___section_start__interp_0x7bf00400+set}" = set; then :
+if eval "test \"\${$as_ac_var+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   ac_wine_try_cflags_saved=$CFLAGS
@@ -6908,17 +6910,18 @@
 int main(int argc, char **argv) { return 0; }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_cflags__Wl___section_start__interp_0x7bf00400=yes
+  eval "$as_ac_var=yes"
 else
-  ac_cv_cflags__Wl___section_start__interp_0x7bf00400=no
+  eval "$as_ac_var=no"
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 CFLAGS=$ac_wine_try_cflags_saved
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Wl___section_start__interp_0x7bf00400" >&5
-$as_echo "$ac_cv_cflags__Wl___section_start__interp_0x7bf00400" >&6; }
-if test $ac_cv_cflags__Wl___section_start__interp_0x7bf00400 = yes; then :
+eval ac_res=\$$as_ac_var
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'};$as_echo "$as_val"'` = yes; then :
   LDEXECFLAGS="$LDEXECFLAGS -Wl,--section-start,.interp=0x7bf00400"
 fi
           ;;
@@ -6990,7 +6993,7 @@
 enable_winequartz_drv=${enable_winequartz_drv:-no}
 
 if test "$LIBEXT" = "a"; then
-  as_fn_error "could not find a way to build shared libraries.
+  as_fn_error $? "could not find a way to build shared libraries.
 It is currently not possible to build Wine without shared library
 (.so) support to allow transparent switch between .so and .dll files.
 If you are using Linux, you will need a newer binutils.
@@ -7120,9 +7123,9 @@
 if test "x$LIBPTHREAD" = "x"; then :
   case "x$with_pthread" in
   xno) ;;
-  *)   as_fn_error "pthread ${notice_platform}development files not found.
+  *)   as_fn_error $? "pthread ${notice_platform}development files not found.
 Wine cannot support threads without libpthread.
-Use the --without-pthread option if you really want this." "$LINENO" 5 ;;
+Use the --without-pthread option if you really want this." "$LINENO" 5  ;;
 esac
 fi
 
@@ -7142,7 +7145,7 @@
   have_x=disabled
 else
   case $x_includes,$x_libraries in #(
-    *\'*) as_fn_error "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5 ;; #(
     *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then :
   $as_echo_n "(cached) " >&6
 else
@@ -7160,7 +7163,7 @@
 	@echo libdir='${LIBDIR}'
 _ACEOF
   if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
-    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
     for ac_var in incroot usrlibdir libdir; do
       eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
     done
@@ -7246,7 +7249,7 @@
   fi
 done
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 fi # $ac_x_includes = no
 
 if test "$ac_x_libraries" = no; then
@@ -7940,8 +7943,7 @@
 # include <X11/Xutil.h>
 #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -8054,8 +8056,8 @@
   case "x$with_xcursor" in
   x)   as_fn_append wine_notices "|libxcursor ${notice_platform}development files not found, the Xcursor extension won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxcursor ${notice_platform}development files not found, the Xcursor extension won't be supported.
-This is an error since --with-xcursor was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxcursor ${notice_platform}development files not found, the Xcursor extension won't be supported.
+This is an error since --with-xcursor was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8116,8 +8118,8 @@
   case "x$with_xinput" in
   x)   as_fn_append wine_notices "|libxi ${notice_platform}development files not found, the Xinput extension won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxi ${notice_platform}development files not found, the Xinput extension won't be supported.
-This is an error since --with-xinput was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxi ${notice_platform}development files not found, the Xinput extension won't be supported.
+This is an error since --with-xinput was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8170,8 +8172,8 @@
   case "x$with_xshm" in
   x)   as_fn_append wine_notices "|XShm ${notice_platform}development files not found, X Shared Memory won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "XShm ${notice_platform}development files not found, X Shared Memory won't be supported.
-This is an error since --with-xshm was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "XShm ${notice_platform}development files not found, X Shared Memory won't be supported.
+This is an error since --with-xshm was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8224,8 +8226,8 @@
   case "x$with_xshape" in
   x)   as_fn_append wine_notices "|XShape ${notice_platform}development files not found, XShape won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "XShape ${notice_platform}development files not found, XShape won't be supported.
-This is an error since --with-xshape was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "XShape ${notice_platform}development files not found, XShape won't be supported.
+This is an error since --with-xshape was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8286,8 +8288,8 @@
   case "x$with_xxf86vm" in
   x)   as_fn_append wine_notices "|libXxf86vm ${notice_platform}development files not found, XFree86 Vidmode won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libXxf86vm ${notice_platform}development files not found, XFree86 Vidmode won't be supported.
-This is an error since --with-xxf86vm was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libXxf86vm ${notice_platform}development files not found, XFree86 Vidmode won't be supported.
+This is an error since --with-xxf86vm was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8390,8 +8392,8 @@
   case "x$with_xrender" in
   x)   as_fn_append wine_warnings "|libxrender ${notice_platform}development files not found, XRender won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxrender ${notice_platform}development files not found, XRender won't be supported.
-This is an error since --with-xrender was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxrender ${notice_platform}development files not found, XRender won't be supported.
+This is an error since --with-xrender was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8467,8 +8469,8 @@
   case "x$with_xrandr" in
   x)   as_fn_append wine_notices "|libxrandr ${notice_platform}development files not found, XRandr won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxrandr ${notice_platform}development files not found, XRandr won't be supported.
-This is an error since --with-xrandr was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxrandr ${notice_platform}development files not found, XRandr won't be supported.
+This is an error since --with-xrandr was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8544,8 +8546,8 @@
   case "x$with_xinerama" in
   x)   as_fn_append wine_notices "|libxinerama ${notice_platform}development files not found, multi-monitor setups won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxinerama ${notice_platform}development files not found, multi-monitor setups won't be supported.
-This is an error since --with-xinerama was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxinerama ${notice_platform}development files not found, multi-monitor setups won't be supported.
+This is an error since --with-xinerama was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8606,8 +8608,8 @@
   case "x$with_xcomposite" in
   x)   as_fn_append wine_notices "|libxcomposite ${notice_platform}development files not found, Xcomposite won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxcomposite ${notice_platform}development files not found, Xcomposite won't be supported.
-This is an error since --with-xcomposite was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxcomposite ${notice_platform}development files not found, Xcomposite won't be supported.
+This is an error since --with-xcomposite was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8636,8 +8638,7 @@
 # include <GL/glx.h>
 #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -8844,8 +8845,8 @@
   case "x$with_glu" in
   x)   as_fn_append wine_notices "|libGLU ${notice_platform}development files not found, GLU won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libGLU ${notice_platform}development files not found, GLU won't be supported.
-This is an error since --with-glu was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libGLU ${notice_platform}development files not found, GLU won't be supported.
+This is an error since --with-glu was requested." "$LINENO" 5  ;;
 esac
 fi
              else
@@ -8865,9 +8866,9 @@
   x)   as_fn_append wine_warnings "|$opengl_msg
 OpenGL and Direct3D won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "$opengl_msg
+  *)   as_fn_error $? "$opengl_msg
 OpenGL and Direct3D won't be supported.
-This is an error since --with-opengl was requested." "$LINENO" 5 ;;
+This is an error since --with-opengl was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -8995,10 +8996,10 @@
 if test "x$XLIB" = "x"; then :
   case "x$with_x" in
   xno) ;;
-  *)   as_fn_error "X ${notice_platform}development files not found. Wine will be built
+  *)   as_fn_error $? "X ${notice_platform}development files not found. Wine will be built
 without X support, which probably isn't what you want. You will need to install
 ${notice_platform}development packages of Xlib/Xfree86 at the very least.
-Use the --without-x option if you really want this." "$LINENO" 5 ;;
+Use the --without-x option if you really want this." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9167,8 +9168,8 @@
   case "x$with_xml" in
   x)   as_fn_append wine_warnings "|libxml2 ${notice_platform}development files not found, XML won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxml2 ${notice_platform}development files not found, XML won't be supported.
-This is an error since --with-xml was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxml2 ${notice_platform}development files not found, XML won't be supported.
+This is an error since --with-xml was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9191,8 +9192,7 @@
 # include <libxslt/pattern.h>
 #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -9260,8 +9260,8 @@
   case "x$with_xslt" in
   x)   as_fn_append wine_warnings "|libxslt ${notice_platform}development files not found, xslt won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libxslt ${notice_platform}development files not found, xslt won't be supported.
-This is an error since --with-xslt was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libxslt ${notice_platform}development files not found, xslt won't be supported.
+This is an error since --with-xslt was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9280,8 +9280,7 @@
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -9388,8 +9387,8 @@
   case "x$with_hal" in
   x)   as_fn_append wine_notices "|libhal/libdbus ${notice_platform}development files not found, no dynamic device support." ;;
   xno) ;;
-  *)   as_fn_error "libhal/libdbus ${notice_platform}development files not found, no dynamic device support.
-This is an error since --with-hal was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libhal/libdbus ${notice_platform}development files not found, no dynamic device support.
+This is an error since --with-hal was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9478,8 +9477,8 @@
   case "x$with_gnutls" in
   x)   as_fn_append wine_notices "|libgnutls ${notice_platform}development files not found, no schannel support." ;;
   xno) ;;
-  *)   as_fn_error "libgnutls ${notice_platform}development files not found, no schannel support.
-This is an error since --with-gnutls was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libgnutls ${notice_platform}development files not found, no schannel support.
+This is an error since --with-gnutls was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9607,8 +9606,8 @@
   case "x$with_curses" in
   x)   as_fn_append wine_notices "|lib(n)curses ${notice_platform}development files not found, curses won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "lib(n)curses ${notice_platform}development files not found, curses won't be supported.
-This is an error since --with-curses was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "lib(n)curses ${notice_platform}development files not found, curses won't be supported.
+This is an error since --with-curses was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9721,8 +9720,8 @@
   case "x$with_sane" in
   x)   as_fn_append wine_notices "|libsane ${notice_platform}development files not found, scanners won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libsane ${notice_platform}development files not found, scanners won't be supported.
-This is an error since --with-sane was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libsane ${notice_platform}development files not found, scanners won't be supported.
+This is an error since --with-sane was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9783,8 +9782,8 @@
   case "x$with_v4l" in
   x)   as_fn_append wine_notices "|libv4l ${notice_platform}development files not found." ;;
   xno) ;;
-  *)   as_fn_error "libv4l ${notice_platform}development files not found.
-This is an error since --with-v4l was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libv4l ${notice_platform}development files not found.
+This is an error since --with-v4l was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -9938,8 +9937,8 @@
   case "x$with_gphoto" in
   x)   as_fn_append wine_notices "|libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported.
-This is an error since --with-gphoto was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported.
+This is an error since --with-gphoto was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -10027,8 +10026,8 @@
   case "x$with_cms" in
   x)   as_fn_append wine_notices "|liblcms ${notice_platform}development files not found, Color Management won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "liblcms ${notice_platform}development files not found, Color Management won't be supported.
-This is an error since --with-cms was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "liblcms ${notice_platform}development files not found, Color Management won't be supported.
+This is an error since --with-cms was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -10155,8 +10154,7 @@
                           # include <ft2build.h>
                           #endif
 "
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
@@ -10178,7 +10176,7 @@
 else
   wine_cv_fttrigon=no
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
         ac_fn_c_check_type "$LINENO" "FT_TrueTypeEngineType" "ac_cv_type_FT_TrueTypeEngineType" "#include <freetype/ftmodapi.h>
 "
 if test "x$ac_cv_type_FT_TrueTypeEngineType" = x""yes; then :
@@ -10220,8 +10218,8 @@
 if test "x$FREETYPELIBS" = "x"; then :
   case "x$with_freetype" in
   xno) ;;
-  *)   as_fn_error "FreeType ${notice_platform}development files not found. Fonts will not be built.
-Use the --without-freetype option if you really want this." "$LINENO" 5 ;;
+  *)   as_fn_error $? "FreeType ${notice_platform}development files not found. Fonts will not be built.
+Use the --without-freetype option if you really want this." "$LINENO" 5  ;;
 esac
 fi
 test "x$FREETYPELIBS" = "x" && enable_fonts=${enable_fonts:-no}
@@ -10271,8 +10269,7 @@
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-eval as_val=\$$as_ac_var
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -10615,8 +10612,8 @@
   case "x$with_capi" in
   x)   as_fn_append wine_notices "|libcapi20 ${notice_platform}development files not found, ISDN won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libcapi20 ${notice_platform}development files not found, ISDN won't be supported.
-This is an error since --with-capi was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libcapi20 ${notice_platform}development files not found, ISDN won't be supported.
+This is an error since --with-capi was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -10695,8 +10692,8 @@
   case "x$with_cups" in
   x)   as_fn_append wine_notices "|libcups ${notice_platform}development files not found, CUPS won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libcups ${notice_platform}development files not found, CUPS won't be supported.
-This is an error since --with-cups was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libcups ${notice_platform}development files not found, CUPS won't be supported.
+This is an error since --with-cups was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -10884,8 +10881,8 @@
   case "x$with_fontconfig" in
   x)   as_fn_append wine_notices "|fontconfig ${notice_platform}development files not found, fontconfig won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "fontconfig ${notice_platform}development files not found, fontconfig won't be supported.
-This is an error since --with-fontconfig was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "fontconfig ${notice_platform}development files not found, fontconfig won't be supported.
+This is an error since --with-fontconfig was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -10996,8 +10993,8 @@
   case "x$with_openssl" in
   x)   as_fn_append wine_warnings "|OpenSSL ${notice_platform}development files not found, SSL won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "OpenSSL ${notice_platform}development files not found, SSL won't be supported.
-This is an error since --with-openssl was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "OpenSSL ${notice_platform}development files not found, SSL won't be supported.
+This is an error since --with-openssl was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -11058,8 +11055,8 @@
   case "x$with_gsm" in
   x)   as_fn_append wine_notices "|libgsm ${notice_platform}development files not found, gsm 06.10 codec won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libgsm ${notice_platform}development files not found, gsm 06.10 codec won't be supported.
-This is an error since --with-gsm was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libgsm ${notice_platform}development files not found, gsm 06.10 codec won't be supported.
+This is an error since --with-gsm was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -11120,8 +11117,8 @@
   case "x$with_jpeg" in
   x)   as_fn_append wine_warnings "|libjpeg ${notice_platform}development files not found, JPEG won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libjpeg ${notice_platform}development files not found, JPEG won't be supported.
-This is an error since --with-jpeg was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libjpeg ${notice_platform}development files not found, JPEG won't be supported.
+This is an error since --with-jpeg was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -11339,8 +11336,8 @@
   case "x$with_png" in
   x)   as_fn_append wine_warnings "|libpng ${notice_platform}development files not found, PNG won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libpng ${notice_platform}development files not found, PNG won't be supported.
-This is an error since --with-png was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libpng ${notice_platform}development files not found, PNG won't be supported.
+This is an error since --with-png was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -11401,8 +11398,8 @@
   case "x$with_tiff" in
   x)   as_fn_append wine_notices "|libtiff ${notice_platform}development files not found, TIFF won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libtiff ${notice_platform}development files not found, TIFF won't be supported.
-This is an error since --with-tiff was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libtiff ${notice_platform}development files not found, TIFF won't be supported.
+This is an error since --with-tiff was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -11454,8 +11451,8 @@
   case "x$with_mpg123" in
   x)   as_fn_append wine_notices "|libmpg123 ${notice_platform}development files not found (or too old), mp3 codec won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libmpg123 ${notice_platform}development files not found (or too old), mp3 codec won't be supported.
-This is an error since --with-mpg123 was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libmpg123 ${notice_platform}development files not found (or too old), mp3 codec won't be supported.
+This is an error since --with-mpg123 was requested." "$LINENO" 5  ;;
 esac
 fi
 test "x$ac_cv_lib_mpg123_mpg123_feed" = xyes -o "x$ac_cv_header_AudioToolbox_AudioConverter_h" = xyes || enable_winemp3_acm=${enable_winemp3_acm:-no}
@@ -11524,8 +11521,8 @@
   case "x$with_openal" in
   x)   as_fn_append wine_notices "|libopenal ${notice_platform}development files not found (or too old), OpenAL won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libopenal ${notice_platform}development files not found (or too old), OpenAL won't be supported.
-This is an error since --with-openal was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libopenal ${notice_platform}development files not found (or too old), OpenAL won't be supported.
+This is an error since --with-openal was requested." "$LINENO" 5  ;;
 esac
 fi
 test "x$ac_cv_lib_openal" = xyes || enable_openal32=${enable_openal32:-no}
@@ -12349,8 +12346,7 @@
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-eval as_val=\$$as_ac_var
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -12653,8 +12649,7 @@
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-eval as_val=\$$as_ac_var
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -12768,8 +12763,7 @@
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-eval as_val=\$$as_ac_var
-   if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
@@ -12783,8 +12777,8 @@
   case "x$with_ldap" in
   x)   as_fn_append wine_notices "|libldap (OpenLDAP) ${notice_platform}development files not found, LDAP won't be supported." ;;
   xno) ;;
-  *)   as_fn_error "libldap (OpenLDAP) ${notice_platform}development files not found, LDAP won't be supported.
-This is an error since --with-ldap was requested." "$LINENO" 5 ;;
+  *)   as_fn_error $? "libldap (OpenLDAP) ${notice_platform}development files not found, LDAP won't be supported.
+This is an error since --with-ldap was requested." "$LINENO" 5  ;;
 esac
 fi
 
@@ -13989,8 +13983,7 @@
 {
     ac_dir=$1
     ac_enable=$2
-    eval as_val=\$$ac_enable
-   if test "x$as_val" = x""no; then :
+    if eval test \"x\$"$ac_enable"\" = x"no"; then :
   return 0
 fi
 
@@ -14040,8 +14033,7 @@
 
     wine_fn_all_dir_rules dlls/$ac_dir "dlls/Makedll.rules \$(MAKEDEP)"
 
-    eval as_val=\$$ac_enable
-   if test "x$as_val" = x""no; then :
+    if eval test \"x\$"$ac_enable"\" = x"no"; then :
                 test "$ac_enable" != enable_win16 || return 0
 else
   wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
@@ -14101,8 +14093,7 @@
     ac_install=$3
     wine_fn_all_dir_rules programs/$ac_dir "programs/Makeprog.rules \$(MAKEDEP)"
 
-    eval as_val=\$$ac_enable
-   if test "x$as_val" = x""no; then :
+    if eval test \"x\$"$ac_enable"\" = x"no"; then :
 
 else
   wine_fn_append_rule ALL_MAKEFILE_DEPENDS \
@@ -14930,6 +14921,7 @@
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -15091,19 +15083,19 @@
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -15299,7 +15291,7 @@
       test -d "$as_dir" && break
     done
     test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -15352,8 +15344,8 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Wine $as_me 1.2, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+This file was extended by Wine $as_me 1.2.1, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -15423,11 +15415,11 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Wine config.status 1.2
-configured by $0, generated by GNU Autoconf 2.65,
+Wine config.status 1.2.1
+configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -15443,11 +15435,16 @@
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -15469,6 +15466,7 @@
     $ac_shift
     case $ac_optarg in
     *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
@@ -15481,7 +15479,7 @@
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error "ambiguous option: \`$1'
+    as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
@@ -15490,7 +15488,7 @@
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
+  -*) as_fn_error $? "unrecognized option: \`$1'
 Try \`$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
@@ -15539,7 +15537,7 @@
     cat Make.tmp - <<\_WINE_EOF >\$tmp/makefile && mv -f \$tmp/makefile \$1 && rm -f Make.tmp && return
 $ALL_MAKEFILE_DEPENDS
 _WINE_EOF
-    as_fn_error "could not create Makefile" "$LINENO" 5
+    as_fn_error $? "could not create Makefile" "$LINENO" 5
 }
 
 _ACEOF
@@ -15573,7 +15571,7 @@
     "Makefile") CONFIG_COMMANDS="$CONFIG_COMMANDS Makefile" ;;
     "Make.tmp") CONFIG_FILES="$CONFIG_FILES Make.tmp:Makefile.in" ;;
 
-  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
@@ -15612,7 +15610,7 @@
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -15646,7 +15644,7 @@
 fi
 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'
+  ac_cs_awk_cr='\\r'
 else
   ac_cs_awk_cr=$ac_cr
 fi
@@ -15663,7 +15661,7 @@
   echo "_ACEOF"
 } >conf$$files.sh &&
 . ./conf$$files.sh ||
-  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 rm -f conf$$files.sh
 
 {
@@ -15671,18 +15669,18 @@
   echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
   echo "_ACEOF"
 } >conf$$subs.sh ||
-  as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   . ./conf$$subs.sh ||
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
   ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
   if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -15777,20 +15775,28 @@
 else
   cat
 fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error "could not setup config files machinery" "$LINENO" 5
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[	 ]*$//
 }'
 fi
@@ -15818,7 +15824,7 @@
   if test -z "$ac_t"; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -15903,7 +15909,7 @@
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -15916,7 +15922,7 @@
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -15944,7 +15950,7 @@
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
       esac
       case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
@@ -15971,7 +15977,7 @@
 
     case $ac_tag in
     *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -16107,22 +16113,22 @@
 else
   $AWK -f "$tmp/subs.awk" | $SHELL
 fi >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 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:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
+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;}
+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_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -16133,19 +16139,19 @@
       $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
     } >"$tmp/config.h" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
       { $as_echo "$as_me:${as_lineno-$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_fn_error "could not create $ac_file" "$LINENO" 5
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error "could not create -" "$LINENO" 5
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
  ;;
   :L)
@@ -16165,19 +16171,19 @@
 $as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
 
     if test ! -r "$ac_source"; then
-      as_fn_error "$ac_source: file not found" "$LINENO" 5
+      as_fn_error $? "$ac_source: file not found" "$LINENO" 5
     fi
     rm -f "$ac_file"
 
     # Try a relative symlink, then a hard link, then a copy.
-    case $srcdir in
+    case $ac_source in
     [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
 	*) ac_rel_source=$ac_top_build_prefix$ac_source ;;
     esac
     ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
       ln "$ac_source" "$ac_file" 2>/dev/null ||
       cp -p "$ac_source" "$ac_file" ||
-      as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+      as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
   fi
  ;;
   :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
@@ -16211,7 +16217,7 @@
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -16232,7 +16238,7 @@
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit $?
+  $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
