diff --git a/ANNOUNCE b/ANNOUNCE
index d77be97..a8a4831 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,12 +1,18 @@
-The Wine development release 1.8-rc4 is now available.
+The Wine team is proud to announce that the stable release Wine 1.8
+is now available.
 
-What's new in this release (see below for details):
-  - Bug fixes only, we are in code freeze.
+This release represents 17 months of development effort and around
+13,000 individual changes. The main highlights are the implementation
+of DirectWrite and Direct2D, and the new Pulse Audio driver.
+
+It also contains a lot of improvements across the board, as well as
+support for many new applications and games. See the release notes
+below for a summary of the major changes.
 
 The source is available from the following locations:
 
-  http://dl.winehq.org/wine/source/1.8/wine-1.8-rc4.tar.bz2
-  http://mirrors.ibiblio.org/wine/source/1.8/wine-1.8-rc4.tar.bz2
+  http://dl.winehq.org/wine/source/1.8/wine-1.8.tar.bz2
+  http://mirrors.ibiblio.org/wine/source/1.8/wine-1.8.tar.bz2
 
 Binary packages for various distributions will be available from:
 
@@ -22,140 +28,427 @@
 
 ----------------------------------------------------------------
 
-Bugs fixed in 1.8-rc4 (total 26):
+What's new in Wine 1.8
+======================
 
-   8258  Dolphin Smalltalk IDE fails when requesting trial on urlmon.dll.URLOpenBlockingStreamA
-  16698  Sandboxie installer needs 'HKLM\\System\\CurrentControlSet\\Services\\Eventlog\\System' registry key
-  17501  Cockpit Crash hangs
-  17814  HLMV from Source SDK crashes while starting
-  18964  BioEdit: Minimized windows icons become garbaged
-  19041  WinNER5 database client crashes on startup
-  23377  Buried in Time demo does not start
-  31817  Tencent RTX Client 2010 installer fails to register Shell extension handler 'RTXShlMenu.dll' (missing 'HKCR\\*\\shellex\\ContextMenuHandlers' and 'HKCR\\folder\shellex\ContextMenuHandlers' registry keys)
-  31862  "The Network" demo fails to start without native d3dx9
-  32383  Configure script can't find 32-bit freetype libraries on 64-bit debian squeeze
-  32655  Miro 5.x/6.x installer does not go beyond "initializing..." phase
-  33438  Wine builtin 'explorer' crashes in Win98 mode when browsing virtual 'C:' drive
-  33917  Voyage: Journey to the Moon demo shows white screen
-  34308  Gazillionaire has transparency issues
-  36726  DVD Profiler: black squares in the gui
-  37899  Adobe Photoshop 5.0: Type tool fails with stack overflow
-  38293  Setting PROMPT in a batch file resets on exit of batch file
-  38371  Winfiol crashes when changing program preferences
-  38480  RuneScape crashes when switching to OpenGL renderer (glCopyTexSubImage3DEXT blacklisted by extension filtering)
-  38723  Ad-Aware 11.6.306.7947 wants msi.dll.MsiJoinTransaction
-  38778  Blade of Darkness demo hangs with a black screen on start
-  39119  Heroes of the Storm 13.0.37117 crashes on exit needing wevtapi.dll.EvtClose
-  39535  PowerISO 6.4 (32 bits) crashes on installation (needs fusion.dll.CopyPDBs)
-  39710  Hitman 2: Silent Assassin shows wrong colors with environment bump mapping
-  39747  Original War: user interface gets corrupted after opening the help screen
-  39758  Desktop Holiday Light app crashes
 
-----------------------------------------------------------------
+*** Text and fonts
 
-Changes since 1.8-rc3:
+- DirectWrite is implemented, and works for a number of
+  applications. The implemented functionality includes:
+  - Font file loading from system or custom font collections.
+  - Building font families by combining similar font faces.
+  - Font matching algorithm using weight/width/slope model.
+  - Basic text layout support.
+  - Bi-directional level resolution and line breaks resolution.
+  - GDI interoperability API, including rendering to DIB section base target.
+  - Rendering to arbitrary target with generic rendering interface.
+  - Generating black&white and grayscale alpha bitmaps.
 
-Alex Henrie (3):
-      winecfg: Widen "Folder" column to accommodate Catalan translation.
-      ieframe: Widen toolbar buttons to accommodate Catalan translation.
-      po: Update Catalan translation.
+- Bold glyphs can be synthesized for outline fonts.
 
-Alexandre Julliard (5):
-      user32: Fix WS_EX_DLGMODALFRAME handling in AdjustWindowRect and add more tests.
-      opengl32: Make it possible to use an alternative in wglGetProcAddress when an extension is missing.
-      user32: SetLayeredWindowAttributes is no longer a stub.
-      user32: Preserve the surface contents when changing the WS_EX_LAYERED bit.
-      Revert "opengl32: Store alternative function in wglGetProcAddress."
+- Multiple replacements can be specified for a single font by using a
+  multi-string entry under HKCU\Software\Wine\Fonts\Replacements.
 
-Alistair Leslie-Hughes (3):
-      configure: Create d3dx10 import library.
-      dxguid: Include d3dx10.h.
-      wevtapi: Add EvtClose stub.
+- Vertical text uses the Unicode data tables for more accurate
+  character ranges support.
 
-Andrew Eikum (1):
-      winepulse.drv: Print a winediag error when PA buffer size is too small.
+- Character tables are based on version 8.0.0 of the Unicode Standard.
 
-Austin English (1):
-      fusion: Add a stub for CopyPDBs.
+- The built-in Wingdings font contains more glyphs.
 
-Boyuan Yang (1):
-      readme: Add Simplified Chinese translation.
+- Unicode bracketing pairs are supported in Uniscribe.
 
-Dmitry Timoshkov (6):
-      winhttp/tests: Fix spurious crashes under Windows.
-      winhttp/tests: Fix a typo.
-      winhttp/tests: Use symbolic names for http status codes.
-      winhttp/tests: Send a not empty payload in the server authorization response, check the received data on the client side.
-      user32: Call the EnumChildWindows callback using a wrapper.
-      winhttp/tests: Add an authentication test using IWinHttpRequest.
+- The RichEdit control uses Uniscribe for more accurate text rendering.
 
-François Gouget (15):
-      po: Fix some trailing space and exclamation mark issues in the Norwegian Bokmål translation.
-      po: Fix ellipsis issues in the Norwegian Bokmål translation.
-      po: Remove some extraneous ellipses in the Norwegian Bokmål translation.
-      po: Fuzzy some incorrect Arabic translations.
-      po: Fuzzy an incomplete Croatian translation.
-      po: Remove an unwanted shortcut key in the Arabic translation.
-      po: Fix a printf-format specified in the Catalan translation.
-      po: Remove a superfluous trailing space in a Japanese translation.
-      po: Fix trailing colon issues in the Czech, Esperanto Japanese and Portuguese (Portugal) translations.
-      po: Add a couple of missing ellipses to the Catalan translation.
-      po: French translation tweaks and fixes.
-      winecfg: Tweak sizes and alignments so the 'Font' button does not clip in Portuguese (Portugal).
-      po: Translate 'batch file' to French.
-      po: Tweak the French TYPE and ASSOC usage messages.
-      po: Use lowercase+underscore names for the replaceable parts of the French usage messages.
+- Hebrew and Arabic Mac OS code pages are supported. This improves
+  support for loading translated font names from Mac OS font files.
 
-Henri Verbeet (1):
-      ddraw: Mark surfaces as lost on mode changes.
 
-Hugh McMaster (1):
-      cmd: Do not overwrite a user-specified Prompt variable.
+*** Graphics
 
-Jacek Caban (3):
-      mshtml: Fixed nsIHttpChannelInternal declaration.
-      mshtml: Return success in SetCorsIncludeCredentials and SetCorsMode.
-      mshtml: Properly return NULL parentElement.
+- Direct2D is supported. Among the implemented features are:
+  - DXGI surface and WIC bitmap render targets.
+  - Geometries defined by straight lines and cubic Bézier curves.
+  - Drawing text.
+  - Bitmaps.
+  - Solid color brushes and bitmap brushes.
+  - Opacity brushes.
 
-Jactry Zeng (2):
-      riched20/tests: Test EM_SETTEXT and EM_REPLACESEL with multibyte character.
-      riched20/tests: Add return tests for EM_SETTEXTEX.
+- PNG files can be encoded in interlaced mode.
 
-Julian Rüger (1):
-      po: Update German translation.
+- Gamma information can be loaded from PNG files.
 
-Józef Kucia (4):
-      wined3d: Use correct initial color for FFP texture blending in GLSL backend.
-      wined3d: Use correct initial color for FFP texture blending in ARB program shader backend.
-      d3d9/tests: Add tests for FFP texture blending.
-      d3d8/tests: Port test_texture_blending() from d3d9.
+- Animated GIFs are correctly supported in GdiPlus.
 
-Ken Thomases (1):
-      loader: Add the CFBundleAllowMixedLocalizations key to the embedded Info.plist to allow Cocoa to localize its strings.
 
-Michael Müller (1):
-      advapi32: Set last error to ERROR_SUCCESS in GetSidIdentifierAuthority.
+*** Direct3D
 
-Nikolay Sivov (4):
-      po: Update Russian translation.
-      dwrite/tests: Some tests for MapCharacters().
-      dwrite/tests: Some tests for fallback builder.
-      winecfg: Fix a crash on empty size field in Desktop Integration.
+- Direct3D 11 is supported, to about the same level as Direct3D 10.
 
-Piotr Caban (1):
-      ole32: Fix minimal size check of compound file in StgOpenStorage.
+- Simple applications using Direct3D 10 are supported. There are still
+  many unimplemented features.  Direct3D 10 requires support for at
+  least OpenGL 3.2 and GLSL 1.50. Some of the changes and supported
+  features include:
+  - Several resource update operations are implemented.
+  - Many more shader model 4 opcode are recognized.
+  - Constant buffers are supported.
+  - The various resource views are implemented.
+  - The various state objects are implemented.
+  - Stateblocks are implemented.
 
-Sebastian Lackner (3):
-      opengl32: Store alternative function in wglGetProcAddress.
-      ntdll/tests: Add more tests for ProcessDebugFlags.
-      opengl32: Add alternative function for glVertexAttribDivisor.
+- A number of new DXGI 1.1 interfaces are implemented. This benefits Direct3D
+  10 and 11 applications.
 
-Stefan Dösinger (2):
-      wined3d: Restore WINEDDBLT_ALPHATEST support.
-      wined3d: Clip software cursor blits.
+- Direct3D applications correctly minimize and restore the display
+  mode on focus loss.
 
-Viliam Lejcik (1):
-      kernel32/nls: Regional settings translation for Czech and Slovak.
+- Fixed function vertex blending is implemented. This requires GLSL support.
+
+- Per-vertex point sizes are supported. This requires GLSL support.
+
+- The wined3d graphics card database recognizes more graphics
+  cards. The graphics card detection code is simplified and
+  improved. More reasonable fallbacks are picked for unrecognized
+  graphics cards.
+
+- On drivers that support it, GL_ARB_texture_mirror_clamp_to_edge or
+  GL_EXT_texture_mirror_clamp are used to implement the "mirror once"
+  texture addressing mode. Previously this required
+  GL_ATI_texture_mirror_once.
+
+- GL_ARB_depth_clamp is no longer required to correctly draw pre-transformed
+  vertices with disabled z-buffering. This helps older graphics cards that
+  can't correctly implement GL_ARB_depth_clamp.
+
+- On drivers that support it, GL_ARB_blend_func_extended is used to
+  implement the D3DBLEND_SRCALPHASAT blend factor.
+
+- On drivers that support it, GL_ARB_sampler_objects is used to apply
+  sampler states independently of the texture object they apply
+  to. This helps applications that bind the same texture to multiple
+  texture stages, but with different sampler states.
+
+- On drivers that support it, GL_EXT_texture_snorm is used to support
+  signed (normalized) texture formats. These are typically used for
+  bump mapping. Previously these formats required either
+  GL_NV_texture_shader, or fixups when loading and using them.
+
+- On drivers that support is, GL_ARB_timer_query is used to support
+  Direct3D 9 timestamp queries.
+
+- Texture format restrictions are more strictly enforced. This allows
+  applications to fall back to a different format instead of continuing with
+  broken rendering.
+
+- Direct3D 9 D3DTSS_CONSTANT texture stage constants are supported.
+
+- Color keyed blits can be done by the graphics card. Previously these
+  needed to be done by the CPU.
+
+- NV12 surfaces are supported. This is used by some applications for
+  playing back video.
+
+- ATI1N textures and surfaces are supported, in addition to ATI2N
+  textures and surfaces. This requires support for
+  GL_ARB_texture_compression_rgtc from the OpenGL driver.
+
+- When GLSL is supported, lighting for Direct3D 1-3 is more
+  correct. However, for most application the difference will only be
+  very slight.
+
+- The IDirect3DSwapChain9Ex interface is supported.
+
+- OpenGL core contexts, OpenGL ES contexts, and multi-threaded OpenGL
+  command submission (known as "CSMT") have been added, however that
+  work is not finished yet.
+
+
+*** DirectDraw
+
+- SetCooperativeLevel() works better, affecting DirectDraw exclusive
+  mode in particular.
+
+- DirectDraw surface flipping is more correct. This affects applications that
+  use more than 1 back buffer in particular.
+
+- DirectDraw palette handling is better supported. This mostly affects
+  older applications using 8-bpp display modes (but not exclusively.)
+
+- "Client memory" surfaces are better supported, in particular related
+  to the handling of pitch and texture compression.
+
+
+*** Audio and video
+
+- A Pulse Audio driver is implemented. It is selected automatically
+  when Pulse Audio is running.
+
+- 5.1 surround sound is supported in DirectSound. Stereo is the
+  default, but other speaker configurations can be set through the
+  Audio tab in Winecfg.
+
+- XAudio2 is implemented, based on the OpenAL Soft library.
+
+- The OpenAL library defaults to the native version.
+
+- The Video Mixing Renderer version 7 is implemented.
+
+- AVI file encoding and compression is implemented.
+
+
+*** Kernel
+
+- Wine can be configured to report the Windows version as 'Windows
+  8.1' and 'Windows 10'.
+
+- Keyed event synchronization objects are implemented.
+
+- The "init once" synchronization mechanism is supported.
+
+- Condition variables are implemented.
+
+- Slim Reader/Writer locks are implemented.
+
+- Activation contexts are used for loading DLLs, type libraries, and
+  COM classes, avoiding the need for explicit registration.
+
+- Windows devices support read and write operations in addition to I/O
+  controls. They can be remapped directly to existing Unix devices.
+
+- Thread local storage is supported in dynamically loaded libraries.
+
+- Process jobs are implemented.
+
+- The Task Scheduler service is implemented.
+
+- The UTF-7 encoding is supported.
+
+- ATL thunk emulation supports a wider range of possible instructions.
+
+- Process and thread affinity is supported even with a large number of
+  processors.
+
+- Dynamic DST (Daylight Saving Time) is supported through the
+  registry. Timezone data is updated for a number of timezones.
+
+- USER_SHARED_DATA access is emulated on x86-64 platforms.
+
+- The new thread pool API is supported.
+
+- OpenMP (parallel programming API) is implemented.
+
+- Preliminary support for HID devices is implemented, but it's not
+  enabled yet.
+
+
+*** User interface
+
+- There is an optional Start Menu in desktop mode, that can be enabled
+  on a per-desktop basis by setting "EnableShell" to "Y" under
+  HKCU\Software\Wine\Explorer\Desktops\<name>.
+
+- The standard Open File dialog supports a drop-down menu for file
+  manipulations.
+
+- The 'My Documents' folder links to the XDG or Mac OS X 'Documents'
+  folder if it exists.
+
+- Many more shell Known Folders are supported.
+
+- Scrollbar theming is implemented. Theming of other controls also
+  works better.
+
+- The Toolbar common control can save and restore its state.
+
+
+*** Mac OS X support
+
+- The 64-bit architecture is supported on Mac OS X; however, it's not
+  100% compatible with Win64, because of the OS X non-standard 64-bit
+  ABI.
+
+- Memory size is reported accurately on Mac OS X.
+
+- Joysticks are supported at the WinMM level on Mac OS X.
+
+- Debugging information and stack unwinding are improved on Mac OS X.
+
+- Trash folder enumeration is supported on Mac OS X.
+
+- All mouse events are supported in the system tray with the Mac driver.
+
+- Window maximization is supported in the Mac driver.
+
+- The Cocoa-style full-screen mode is supported in the Mac driver.
+
+- Multiple keyboard layouts are supported in the Mac driver.
+
+
+*** X11 driver
+
+- X Drag & Drop protocol version 5 is supported.
+
+- Flashing a window caption is implemented in the X11 driver using the
+  NET_WM_STATE_DEMANDS_ATTENTION style.
+
+
+*** OLE / COM
+
+- OLE Storage files support file locking, and sizes larger than 4 GB.
+
+- Type libraries are registered correctly on 64-bit setups.
+
+- 32-bit type libraries can be loaded from 64-bit programs.
+
+- The OLE data cache supports DIB images.
+
+- The RPC interface to control Windows services is compatible with the
+  native version.
+
+- OLE Accessible Objects are implemented for better accessibility support.
+
+
+*** Internet and networking
+
+- The Gecko engine is updated to the version from Firefox 40. Many
+  more objects and properties are implemented in MSHTML.
+
+- Internet proxies can be configured automatically.
+
+- RPC over HTTP supports the NTLM and Negotiate authentication
+  schemes.
+
+- The Web Services API is partially implemented.
+
+- Download of Gecko and Mono add-ons can be canceled from the
+  progress dialog.
+
+- Conditional compilation is supported in JavaScript.
+
+- Arrays, math functions, and exception unwinding are implemented in
+  VBScript.
+
+- Remote network shares can be configured using Samba's NetAPI library.
+
+- The Packet Capture DLL is implemented.
+
+- Network interface change notifications are implemented.
+
+- IPv6 DNS addresses are supported in IphlpAPI.
+
+- The Deflate content encoding is supported in Wininet.
+
+- The TransmitFile API is implemented in Windows Sockets.
+
+- The BITS file transfer service is better supported.
+
+
+*** Printing
+
+- Vertical text is supported when printing through the PostScript driver.
+
+- The PostScript driver generates standard glyph names when possible.
+
+- Monochrome printers are better supported, in particular when
+  printing color images.
+
+- Collation is supported in the PostScript driver.
+
+
+*** Miscellaneous
+
+- Windows Management Instrumentation (WMI) implements several more
+  WBEM system classes.
+
+- Applying installation patches is better supported in MSI.
+
+- Hyperlink controls are supported in installers.
+
+- More recent versions of the C/C++ runtimes are supported, including
+  the new UCRTBASE library. The old MSVCIRT C++ runtime is also
+  partially implemented.
+
+- Version 9, 10, and 11 of ATL (Active Template Library) are
+  implemented.
+
+- The Windows Scripting Runtime supports many more classes, including
+  file and folder collections and dictionaries.
+
+- Writing XML files is implemented.
+
+- The Invariant locale is supported.
+
+
+*** Built-in applications
+
+- The 'taskmgr' application displays whether processes are running
+  under WoW64.
+
+- The 'regedit' tool better supports import/export of registry files.
+
+- The 'wineconsole' tool supports configuring the insert/overwrite
+  mode in the settings dialog.
+
+
+*** Platform-specific changes
+
+- System and hardware information is properly reported on ARM
+  platforms.
+
+- WoW64 mode is supported for the ARM64 platform.
+
+- The 64-bit architecture is supported on Android.
+
+- Binaries are built as PIE on Android, for compatibility with Android
+  version 5.
+
+
+*** Build environment
+
+- Source files can be shared across DLLs, to allow building multiple
+  versions of a DLL from the same source. This is more compatible than
+  forwarding calls to a single master DLL. It's used mainly for the
+  C/C++ runtime libraries.
+
+- #pragma directives are supported in various source files to specify
+  dependencies, for more accurate makefile generation.
+
+- The IDL compiler supports WinRT namespaces.
+
+- The message compiler uses mo files instead of po files for faster
+  processing.
+
+- Architecture-specific compile flags like -march= are supported in
+  Winegcc and passed along to the assembler.
+
+
+*** New external dependencies
+
+- liblcms2 is used instead of liblcms version 1.
+
+- libnetapi from Samba is used for configuring remote network shares.
+
+- libpcap is used to implement the Packet Capture DLL.
+
+- libpulse is used by the Pulse Audio driver.
+
+- The OpenAL Soft library is used to implement XAudio2.
+
+- The prelink tool is no longer necessary as long as the linker
+  supports the -Ttext-segment option.
+
+
+*** Known issues
+
+- Since the support for OpenGL core contexts in WineD3D is not
+  complete enough yet, Direct3D 10 and 11 need to be supported in a
+  legacy context / the compatibility profile, which means that they
+  currently don't work on Mesa.
+
+- Setting the PULSE_LATENCY_MSEC variable was sometimes necessary with
+  the Alsa audio driver, but it can cause trouble with the Pulse
+  driver. It is recommended to unset the variable.
 
 --
 Alexandre Julliard
diff --git a/AUTHORS b/AUTHORS
index e470662..724500a 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1332,6 +1332,7 @@
 Stephane Lussier
 Stephan Rose
 Stephen Crowley
+Stephen Kitt
 Stephen Langasek
 Stephen R. Veit
 Stephen Simmons
diff --git a/VERSION b/VERSION
index 6e35220..b22ac33 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Wine version 1.8-rc4
+Wine version 1.8
diff --git a/configure b/configure
index ceb2a3e..0db4d30 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Wine 1.8-rc4.
+# Generated by GNU Autoconf 2.69 for Wine 1.8.
 #
 # Report bugs to <wine-devel@winehq.org>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='Wine'
 PACKAGE_TARNAME='wine'
-PACKAGE_VERSION='1.8-rc4'
-PACKAGE_STRING='Wine 1.8-rc4'
+PACKAGE_VERSION='1.8'
+PACKAGE_STRING='Wine 1.8'
 PACKAGE_BUGREPORT='wine-devel@winehq.org'
 PACKAGE_URL='http://www.winehq.org'
 
@@ -2102,7 +2102,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.8-rc4 to adapt to many kinds of systems.
+\`configure' configures Wine 1.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2172,7 +2172,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Wine 1.8-rc4:";;
+     short | recursive ) echo "Configuration of Wine 1.8:";;
    esac
   cat <<\_ACEOF
 
@@ -2372,7 +2372,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Wine configure 1.8-rc4
+Wine configure 1.8
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2890,7 +2890,7 @@
 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.8-rc4, which was
+It was created by Wine $as_me 1.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -18818,7 +18818,7 @@
 # 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.8-rc4, which was
+This file was extended by Wine $as_me 1.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18889,7 +18889,7 @@
 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.8-rc4
+Wine config.status 1.8
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
