Update installation instructions for Windows.
diff --git a/ChangeLog b/ChangeLog
index bb4db52..0cf0e94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2016-11-23  Bruno Haible  <bruno@clisp.org>
 
+	Update installation instructions for Windows.
+	* README.windows: Assume a 64-bit Windows. Explain both 32-bit and
+	64-bit builds. Add instructions for the MS Visual C/C++ tool chain.
+	Revamp instructions for Cygwin.
+
+2016-11-23  Bruno Haible  <bruno@clisp.org>
+
 	Drop the nickname "woe32".
 	* README.windows: Renamed from README.woe32.
 
diff --git a/README.windows b/README.windows
index ae8320b..7b8b508 100644
--- a/README.windows
+++ b/README.windows
@@ -1,37 +1,255 @@
-Installation on Woe32 (WinNT/2000/XP/Vista/7, Win95/98/ME):
+Installation on Microsoft Windows:
 
-Building requires the mingw or cygwin development environment (includes gcc).
-MS Visual C/C++ with "nmake" is no longer supported.
+There are three ways to create binaries of this package for Microsoft Windows:
+1) Native binaries, built using the mingw tool chain.
+2) Native binaries, built using the MS Visual C/C++ tool chain.
+3) Binaries for the Cygwin environment.
 
-This file explains how to create binaries for the mingw execution environment.
-For how to create binaries for the cygwin environment, please see the normal
-INSTALL file.  MS Visual C/C++ with "nmake" is no longer supported.
+===============================================================================
+1) Native binaries, built using the mingw tool chain.
 
-I recommend to use the cygwin environment as the development environment
-and mingw only as the target (runtime, deployment) environment.
-For this, you need to install
-  - cygwin,
-  - the mingw runtime package, also from the cygwin site.
+   I recommend to use the Cygwin environment as the development environment
+   and mingw only as the target (runtime, deployment) environment.
+   For this, you need to install
+     * Cygwin (from https://cygwin.com/),
+     * some packages available from the Cygwin package installer:
+         make
+     * the mingw cross-compilation tools and runtime package, available from
+       the Cygwin package installer (setup-x86_64.exe):
+       - for creating 32-bit binaries: packages
+           mingw64-i686-gcc-core,
+           mingw64-i686-headers,
+           mingw64-i686-runtime
+       - for creating 64-bit binaries: packages
+           mingw64-x86_64-gcc-core,
+           mingw64-x86_64-headers,
+           mingw64-x86_64-runtime
 
-You must not install cygwin programs directly under /usr/local -
-because the mingw compiler and linker would pick up the include files
-and libraries from there, thus introducing an undesired dependency to
-cygwin. You can for example achieve this by using the
-configure option --prefix=/usr/local/cygwin each time you build a
-program for cygwin.
+   Building 32-bit binaries for mingw is achieved through the following
+   preparation, configure, and build commands:
 
-Building for mingw is then achieved through the following preparation
-and configure commands:
+      PATH=/usr/local/mingw32/bin:$PATH
+      export PATH
+      ./configure --host=i686-w64-mingw32 --prefix=/usr/local/mingw32 \
+            CC=i686-w64-mingw32-gcc \
+            CPPFLAGS="-I/usr/local/mingw32/include -Wall" \
+            LDFLAGS="-L/usr/local/mingw32/lib"
+      make
+      make check
 
-   PATH=/usr/local/mingw/bin:$PATH
-   export PATH
-   ./configure --host=i586-pc-mingw32 --prefix=/usr/local/mingw \
-     CC="gcc-3 -mno-cygwin" \
-     CXX="g++-3 -mno-cygwin" \
-     CPPFLAGS="-Wall -I/usr/local/mingw/include" \
-     LDFLAGS="-L/usr/local/mingw/lib"
+   Building 64-bit binaries for mingw is achieved through the following
+   preparation, configure, and build commands:
 
-The -mno-cygwin tells the cygwin compiler and linker to build for mingw.
-The -I and -L option are so that packages previously built for the
-same environment are found. The --host option tells the various
-tools that you are building for mingw, not cygwin.
+      PATH=/usr/local/mingw64/bin:$PATH
+      export PATH
+      ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/mingw64 \
+            CC=x86_64-w64-mingw32-gcc \
+            CPPFLAGS="-I/usr/local/mingw64/include -Wall" \
+            LDFLAGS="-L/usr/local/mingw64/lib"
+      make
+      make check
+
+   Installation:
+
+      make install
+
+===============================================================================
+2) Native binaries, built using the MS Visual C/C++ tool chain.
+
+   Note that binaries created with MSVC have a distribution constraint: They
+   depend on a closed-source library ('msvcr90.dll' for MSVC 9.0,
+   'vcruntime140.dll' for MSVC 14.0, and so on) which is not normally part of
+   a Windows installation.
+   You cannot distribute 'vcruntime*.dll' with the binaries - this would be a
+   violation of the GPL and of the Microsoft EULA.
+   You can distribute the binaries without including 'vcruntime*.dll'. Users
+   who don't have this library on their system will require to pull some files
+   (api-ms-win*.dll) through the Windows Update mechanism, see
+   https://support.microsoft.com/en-us/kb/2999226 .
+
+   This recipe requires MS Visual C/C++ 9.0 or newer.
+   You don't need the Visual Studio IDE, just the C/C++ tool chain.
+   As of 2016, you can install the MS Visual C/C++ 14.0 tool chain from
+   http://landinghub.visualstudio.com/visual-cpp-build-tools (it's the file
+   visualcppbuildtools_full.exe).
+
+   This recipe requires also a Cygwin environment (with 'bash', the common POSIX
+   commands, and 'make') as a build environment. Building with 'nmake' is not
+   supported.
+   For this, you need to install
+     * Cygwin (from https://cygwin.com/),
+     * some packages available from the Cygwin package installer:
+         make
+
+   You also need the scripts 'ar-lib' and 'compile' from
+     http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/ar-lib;hb=HEAD
+     http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/compile;hb=HEAD
+   respectively.
+   They may also be included in this package, in directory 'build-aux/'.
+   Save them; the instructions below assume that you stored them in $HOME/msvc/.
+   Make them executable:
+      chmod a+x ar-lib compile
+
+   Start a bash (from Cygwin).
+
+   Make sure that the MSVC tools ("cl" etc.) are found in PATH and the
+   environment variables INCLUDE and LIB are set appropriately.
+   In a typical MSVC 9.0 installation, it can be achieved by running
+     C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
+   In a typical MSVC 14.0 installation on Windows 10, it can be achieved
+   - for creating 32-bit binaries: through the following bash commands:
+
+      # Set environment variables for using MSVC 14,
+      # for creating native 32-bit Windows executables.
+
+      # Windows C library headers and libraries.
+      WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
+      WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
+      INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
+      LIB="${WindowsCrtLibDir}x86;$LIB"
+
+      # Windows API headers and libraries.
+      WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
+      WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
+      INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
+      LIB="${WindowsSdkLibDir}x86;$LIB"
+
+      # Visual C++ tools, headers and libraries.
+      VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
+      VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
+      PATH=`cygpath -u "${VCINSTALLDIR}"`/bin:"$PATH"
+      INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
+      LIB="${VCINSTALLDIR}"'\lib;'"${LIB}"
+
+      export INCLUDE LIB
+
+   - for creating 64-bit binaries: through the following bash commands:
+
+     # Set environment variables for using MSVC 14,
+     # for creating native 64-bit Windows executables.
+
+     # Windows C library headers and libraries.
+     WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
+     WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
+     INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
+     LIB="${WindowsCrtLibDir}x64;$LIB"
+
+     # Windows API headers and libraries.
+     WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
+     WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
+     INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
+     LIB="${WindowsSdkLibDir}x64;$LIB"
+
+     # Visual C++ tools, headers and libraries.
+     VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
+     VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
+     PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/amd64:"$PATH"
+     INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
+     LIB="${VCINSTALLDIR}"'\lib\amd64;'"${LIB}"
+
+     export INCLUDE LIB
+
+   Building 32-bit binaries with MSVC is achieved through the following
+   preparation, configure, and build commands:
+
+      PATH=/usr/local/msvc32/bin:$PATH
+      export PATH
+
+      win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
+      win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
+      win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
+      win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0
+
+      ./configure --host=i686-w64-mingw32 --prefix=/usr/local/msvc32 \
+            CC="$HOME/msvc/compile cl -nologo" \
+            CFLAGS="-MD" \
+            CXX="$HOME/msvc/compile cl -nologo" \
+            CXXFLAGS="-MD" \
+            CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc32/include" \
+            LDFLAGS="-L/usr/local/msvc32/lib" \
+            LD="link" \
+            NM="dumpbin -symbols" \
+            STRIP=":" \
+            AR="$HOME/msvc/ar-lib lib" \
+            RANLIB=":"
+      make
+      make check
+
+   Building 64-bit binaries with MSVC is achieved through the following
+   preparation, configure, and build commands:
+
+      PATH=/usr/local/msvc64/bin:$PATH
+      export PATH
+
+      win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
+      win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
+      win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
+      win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0
+
+      ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \
+            CC="$HOME/msvc/compile cl -nologo" \
+            CFLAGS="-MD" \
+            CXX="$HOME/msvc/compile cl -nologo" \
+            CXXFLAGS="-MD" \
+            CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \
+            LDFLAGS="-L/usr/local/msvc64/lib" \
+            LD="link" \
+            NM="dumpbin -symbols" \
+            STRIP=":" \
+            AR="$HOME/msvc/ar-lib lib" \
+            RANLIB=":"
+      make
+      make check
+
+   Installation:
+
+      make install
+
+===============================================================================
+3) Binaries for the Cygwin environment.
+
+   The generic instructions in the INSTALL file apply. But here are more
+   specific ones.
+
+   You need to install
+     * Cygwin (from https://cygwin.com/),
+     * some packages available from the Cygwin package installer:
+         make
+     * the Cygwin [cross-]compilation tools package, available from
+       the Cygwin package installer (setup-x86_64.exe):
+       - for creating 32-bit binaries: packages
+           cygwin32-gcc-core,
+           cygwin32
+       - for creating 64-bit binaries: packages
+           gcc-core
+
+   Building 32-bit binaries for Cygwin must be done in a directory *outside*
+   the Cygwin /home and /usr hierarchies. It is achieved through the following
+   preparation, configure, and build commands:
+
+      PATH=/usr/local/cygwin32/bin:/usr/i686-pc-cygwin/sys-root/usr/bin:$PATH
+      export PATH
+      ./configure --host=i686-pc-cygwin --prefix=/usr/local/cygwin32 \
+            CC=i686-pc-cygwin-gcc \
+            CPPFLAGS="-I/usr/local/cygwin32/include -Wall" \
+            LDFLAGS="-L/usr/local/cygwin32/lib"
+      make
+      make check
+
+   Building 64-bit binaries for Cygwin is achieved through the following
+   preparation, configure, and build commands:
+
+      PATH=/usr/local/cygwin64/bin:$PATH
+      export PATH
+      ./configure --host=x86_64-pc-cygwin --prefix=/usr/local/cygwin64 \
+            CC=x86_64-pc-cygwin-gcc \
+            CPPFLAGS="-I/usr/local/cygwin64/include -Wall" \
+            LDFLAGS="-L/usr/local/cygwin64/lib"
+      make
+      make check
+
+   Installation:
+
+      make install
+
+===============================================================================
diff --git a/libcharset/ChangeLog b/libcharset/ChangeLog
index ee669e7..303e0dc 100644
--- a/libcharset/ChangeLog
+++ b/libcharset/ChangeLog
@@ -1,5 +1,10 @@
 2016-11-23  Bruno Haible  <bruno@clisp.org>
 
+	Update installation instructions for Windows.
+	* README.windows: Generic reference to top-level file.
+
+2016-11-23  Bruno Haible  <bruno@clisp.org>
+
 	Drop the nickname "woe32".
 	* README.windows: Renamed from README.woe32.
 
diff --git a/libcharset/README.windows b/libcharset/README.windows
index 4ac0c41..e50cbf6 100644
--- a/libcharset/README.windows
+++ b/libcharset/README.windows
@@ -1,4 +1,3 @@
-Installation on Woe32 (WinNT/2000/XP/Vista/7, Win95/98/ME):
+Installation on Microsoft Windows:
 
-Building requires the mingw or cygwin development environment (includes gcc).
-MS Visual C/C++ with "nmake" is no longer supported.
+See the file README.windows in the top-level directory of this package.