aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2019-03-13 00:53:19 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2019-03-25 16:21:26 +0300
commitba83f41d5d899e2e6f3e521b5b489123aa24b720 (patch)
treefa92b790fdb85b90431c492fc536da823f6cb6b5
parentbea2cd6f5817e41f3ddb7d1a795648e52f9b7d05 (diff)
Add support for 16.0
-rw-r--r--INSTALL49
-rwxr-xr-xcl-14.0-32 (renamed from cl-14u0-32)0
-rwxr-xr-xcl-14.2-32 (renamed from cl-14u2-32)0
-rwxr-xr-xcl-14.2-64 (renamed from cl-14u2-64)0
-rwxr-xr-xcl-14.3-32 (renamed from cl-14u3-32)0
-rwxr-xr-xcl-14.3-64 (renamed from cl-14u3-64)0
-rwxr-xr-xcl-15.0-32 (renamed from cl-15u0-32)0
-rwxr-xr-xcl-15.0-64 (renamed from cl-15u0-64)0
-rwxr-xr-xcl-15.3-32 (renamed from cl-15u3-32)0
-rwxr-xr-xcl-15.3-64 (renamed from cl-15u3-64)0
-rwxr-xr-xcl-15.5-32 (renamed from cl-15u5-32)0
-rwxr-xr-xcl-15.5-64 (renamed from cl-15u5-64)0
-rwxr-xr-xcl-15.6-32 (renamed from cl-15u6-32)0
-rwxr-xr-xcl-15.6-64 (renamed from cl-15u6-64)0
-rwxr-xr-xcl-15.7-32 (renamed from cl-15u7-32)0
-rwxr-xr-xcl-15.7-64 (renamed from cl-15u7-64)0
-rwxr-xr-xcl-16.0-32 (renamed from lib-14u0-32)0
-rwxr-xr-xcl-16.0-64 (renamed from lib-14u2-32)0
-rwxr-xr-xlib-14.0-32 (renamed from lib-14u2-64)0
-rwxr-xr-xlib-14.2-32 (renamed from lib-14u3-32)0
-rwxr-xr-xlib-14.2-64 (renamed from lib-14u3-64)0
-rwxr-xr-xlib-14.3-32 (renamed from lib-15u0-32)0
-rwxr-xr-xlib-14.3-64 (renamed from lib-15u0-64)0
-rwxr-xr-xlib-15.0-32 (renamed from lib-15u3-32)0
-rwxr-xr-xlib-15.0-64 (renamed from lib-15u3-64)0
-rwxr-xr-xlib-15.3-32 (renamed from lib-15u5-32)0
-rwxr-xr-xlib-15.3-64 (renamed from lib-15u5-64)0
-rwxr-xr-xlib-15.5-32 (renamed from lib-15u6-32)0
-rwxr-xr-xlib-15.5-64 (renamed from lib-15u6-64)0
-rwxr-xr-xlib-15.6-32 (renamed from lib-15u7-32)0
-rwxr-xr-xlib-15.6-64 (renamed from lib-15u7-64)0
-rwxr-xr-xlib-15.7-32 (renamed from link-14u0-32)0
-rwxr-xr-xlib-15.7-64 (renamed from link-14u2-32)0
-rwxr-xr-xlib-16.0-32 (renamed from link-14u2-64)0
-rwxr-xr-xlib-16.0-64 (renamed from link-14u3-32)0
-rwxr-xr-xlink-14.0-32 (renamed from link-14u3-64)0
-rwxr-xr-xlink-14.2-32 (renamed from link-15u0-32)0
-rwxr-xr-xlink-14.2-64 (renamed from link-15u0-64)0
-rwxr-xr-xlink-14.3-32 (renamed from link-15u3-32)0
-rwxr-xr-xlink-14.3-64 (renamed from link-15u3-64)0
-rwxr-xr-xlink-15.0-32 (renamed from link-15u5-32)0
-rwxr-xr-xlink-15.0-64 (renamed from link-15u5-64)0
-rwxr-xr-xlink-15.3-32 (renamed from link-15u6-32)0
-rwxr-xr-xlink-15.3-64 (renamed from link-15u6-64)0
-rwxr-xr-xlink-15.5-32 (renamed from link-15u7-32)0
-rwxr-xr-xlink-15.5-64 (renamed from link-15u7-64)0
-rwxr-xr-xlink-15.6-32 (renamed from mt-14u0-32)0
-rwxr-xr-xlink-15.6-64 (renamed from mt-14u2-32)0
-rwxr-xr-xlink-15.7-32 (renamed from mt-14u2-64)0
-rwxr-xr-xlink-15.7-64 (renamed from mt-14u3-32)0
-rwxr-xr-xlink-16.0-32 (renamed from mt-14u3-64)0
-rwxr-xr-xlink-16.0-64 (renamed from mt-15u0-32)0
-rwxr-xr-xmsvc-14/msvc-14.0-32 (renamed from msvc-14/msvc-14u0-32)2
-rwxr-xr-xmsvc-14/msvc-14.2-32 (renamed from msvc-14/msvc-14u2-32)2
-rwxr-xr-xmsvc-14/msvc-14.2-64 (renamed from msvc-14/msvc-14u2-64)2
-rwxr-xr-xmsvc-14/msvc-14.3-32 (renamed from msvc-14/msvc-14u3-32)6
-rwxr-xr-xmsvc-14/msvc-14.3-64 (renamed from msvc-14/msvc-14u3-64)6
-rwxr-xr-xmsvc-15/msvc-15.0-32 (renamed from msvc-15/msvc-15u0-32)2
-rwxr-xr-xmsvc-15/msvc-15.0-64 (renamed from msvc-15/msvc-15u0-64)2
-rwxr-xr-xmsvc-15/msvc-15.3-32 (renamed from msvc-15/msvc-15u3-32)2
-rwxr-xr-xmsvc-15/msvc-15.3-64 (renamed from msvc-15/msvc-15u3-64)2
-rwxr-xr-xmsvc-15/msvc-15.5-32 (renamed from msvc-15/msvc-15u5-32)2
-rwxr-xr-xmsvc-15/msvc-15.5-64 (renamed from msvc-15/msvc-15u5-64)2
-rwxr-xr-xmsvc-15/msvc-15.6-32 (renamed from msvc-15/msvc-15u6-32)2
-rwxr-xr-xmsvc-15/msvc-15.6-64 (renamed from msvc-15/msvc-15u6-64)2
-rwxr-xr-xmsvc-15/msvc-15.7-32 (renamed from msvc-15/msvc-15u7-32)2
-rwxr-xr-xmsvc-15/msvc-15.7-64 (renamed from msvc-15/msvc-15u7-64)2
-rwxr-xr-xmsvc-16/msvc-16.0-3254
-rwxr-xr-xmsvc-16/msvc-16.0-6445
-rwxr-xr-xmsvc-common/msvc-link-common7
-rwxr-xr-xmsvc-dispatch13
-rwxr-xr-xmt-14.0-32 (renamed from mt-15u0-64)0
-rwxr-xr-xmt-14.2-32 (renamed from mt-15u3-32)0
-rwxr-xr-xmt-14.2-64 (renamed from mt-15u3-64)0
-rwxr-xr-xmt-14.3-32 (renamed from mt-15u5-32)0
-rwxr-xr-xmt-14.3-64 (renamed from mt-15u5-64)0
-rwxr-xr-xmt-15.0-32 (renamed from mt-15u6-32)0
-rwxr-xr-xmt-15.0-64 (renamed from mt-15u6-64)0
-rwxr-xr-xmt-15.3-32 (renamed from mt-15u7-32)0
-rwxr-xr-xmt-15.3-64 (renamed from mt-15u7-64)0
-rwxr-xr-xmt-15.5-32 (renamed from rc-14u0-32)0
-rwxr-xr-xmt-15.5-64 (renamed from rc-14u2-32)0
-rwxr-xr-xmt-15.6-32 (renamed from rc-14u2-64)0
-rwxr-xr-xmt-15.6-64 (renamed from rc-14u3-32)0
-rwxr-xr-xmt-15.7-32 (renamed from rc-14u3-64)0
-rwxr-xr-xmt-15.7-64 (renamed from rc-15u0-32)0
-rwxr-xr-xmt-16.0-32 (renamed from rc-15u0-64)0
-rwxr-xr-xmt-16.0-64 (renamed from rc-15u3-32)0
-rwxr-xr-xrc-14.0-32 (renamed from rc-15u3-64)0
-rwxr-xr-xrc-14.2-32 (renamed from rc-15u5-32)0
-rwxr-xr-xrc-14.2-64 (renamed from rc-15u5-64)0
-rwxr-xr-xrc-14.3-32 (renamed from rc-15u6-32)0
-rwxr-xr-xrc-14.3-64 (renamed from rc-15u6-64)0
-rwxr-xr-xrc-15.0-32 (renamed from rc-15u7-32)0
-rwxr-xr-xrc-15.0-64 (renamed from rc-15u7-64)0
-rwxr-xr-xrc-15.3-3210
-rwxr-xr-xrc-15.3-6410
-rwxr-xr-xrc-15.5-3210
-rwxr-xr-xrc-15.5-6410
-rwxr-xr-xrc-15.6-3210
-rwxr-xr-xrc-15.6-6410
-rwxr-xr-xrc-15.7-3210
-rwxr-xr-xrc-15.7-6410
-rwxr-xr-xrc-16.0-3210
-rwxr-xr-xrc-16.0-6410
105 files changed, 266 insertions, 40 deletions
diff --git a/INSTALL b/INSTALL
index 4b93b9f..e6b7ef7 100644
--- a/INSTALL
+++ b/INSTALL
@@ -18,7 +18,7 @@ form:
Where:
<tool> is one of 'cl' 'link' 'lib' 'mt' 'rc'
-<version> is the Visual Studio version, for example, 11, 12, 14u3, 15rc1
+<version> is the Visual Studio version, for example, 11, 12, 14.3, 15.0
<target> is the compiler target, for example, 32 (x86), 64 (x86_64).
There are also the "configuration" scripts, msvc-NN/msvc-<version>-<target>,
@@ -44,7 +44,7 @@ you can simply add symlinks to the scripts there. This way you can also choose
shorter tool names, for example:
for t in cl link lib mt rc; do \
- ln -s .../msvc-linux/$t-14u2-64 ~/bin/$t-14; done
+ ln -s .../msvc-linux/$t-14.2-64 ~/bin/$t-14; done
While you can modify the configuration scripts, retaining such modifications
over updates will be tedious. As a result, there are several environment
@@ -54,14 +54,14 @@ common configuration values.
Currently you can override WINEPREFIX, INSTALLDIR, and SDKVERSION via the
following environment variable hierarchy (from highest to lowest precedence):
-MSVC_<MAJOR><MINOR>_* # MSVC_14U2_INSTALLDIR
-MSVC_<MAJOR>_* # MSVC_14_INSTALLDIR
-MSVC_* # MSVC_INSTALLDIR
+MSVC_<MAJOR>_<MINOR>_* # MSVC_14_2_INSTALLDIR
+MSVC_<MAJOR>_* # MSVC_14_INSTALLDIR
+MSVC_* # MSVC_INSTALLDIR
The WINEPREFIX value corresponds to the WINEPREFIX Wine environment variable
that allows one to use an alternative (to ~/.wine) root directory. You can
-use it, for example, to maintain multiple Visual Studio updates (e.g., 14u1,
-14u2, 14u3) which otherwise cannot coexist in a single installation.
+use it, for example, to maintain multiple Visual Studio updates (e.g., 14.1,
+14.2, 14.3) which otherwise cannot coexist in a single installation.
The INSTALLDIR directory can be used to alter the Visual Studio installation
directory name (not path; the default is "Microsoft Visual Studio NN.0").
@@ -75,7 +75,7 @@ It should be in the 10.0.NNNNN form. If it is not specified, then the latest
installed is used. Note that this value does not apply to Windows 8.1 and
earlier SDKs; those versions are hardcoded in the confguration scripts.
-Note also the the below instructions include a call to a script that adds
+Note also that the below instructions include a call to a script that adds
lower-case symlinks for upper-case named headers. This normally fixes the
bulk of the issues associated #include directives that spell header names
differently compared to the actual file names. There are, however, rare
@@ -214,7 +214,7 @@ $ cp -r "/mnt/Program Files (x86)/Microsoft Visual Studio 14.0/VC" \
$ cp "/mnt/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x86/Microsoft.VC140.CRT/msvcp140.dll" \
".wine/drive_c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/"
-Remove Microsoft's "experience improvement data uploade" which crashes:
+Remove Microsoft's "experience improvement data uploader" which crashes:
$ find ".wine/drive_c/Program Files (x86)/Microsoft Visual Studio 14.0/" \
-name vctip.exe -exec rm -f '{}' ';'
@@ -284,6 +284,11 @@ $ mkdir -p ".wine/drive_c/Program Files (x86)/Microsoft Visual Studio 15.0"
$ cp -r "/mnt/Program Files (x86)/Microsoft Visual Studio 15.0/VC" \
".wine/drive_c/Program Files (x86)/Microsoft Visual Studio 15.0/"
+Remove Microsoft's "experience improvement data uploader" which crashes:
+
+$ find ".wine/drive_c/Program Files (x86)/Microsoft Visual Studio 15.0/" \
+ -name vctip.exe -exec rm -f '{}' ';'
+
$ mkdir -p ".wine/drive_c/Program Files (x86)/Windows Kits"
$ cp -r "/mnt/Program Files (x86)/Windows Kits/10" \
".wine/drive_c/Program Files (x86)/Windows Kits/"
@@ -296,7 +301,7 @@ $ etc/lowercase-headers \
Installing via the redistributable DLLs still does not work as of Wine 1.9.8.
Instead, we have to manually copy a bunch of DLLs from:
-.wine/.../VC/Redist/MSVC/14.10.NNNNN/{x86 x64}/Microsoft.VC150.CRT/
+.wine/.../VC/Redist/MSVC/14.10.NNNNN/{x86 x64}/Microsoft.VC141.CRT/
And:
@@ -335,6 +340,24 @@ Note also that if you plan to run tests built against the debug runtime, then
also copy ucrtbased.dll, vcruntime140d.dll, and msvcp140d.dll from Windows
Kits/10/bin/.../ucrt/ and VC/Redist/.../debug_noredist/.
+
+Copy and Setup Visual Studio 16
+-------------------------------
+
+The setup for 16 is similar to that of 15. Follow instructions in "Copy and
+Setup Visual Studio 15", replacing year 2017 and version 15 with 2019 and 16,
+respectively.
+
+Regarding the redistributable DLLs, note that for Wine 4.0 (Staging) only the
+following overrides appear to be necessary:
+
+ vcruntime140.dll
+ msvcp140.dll
+
+Also note that linking for 32-bit builds may fail (see msvc-16/msvc-16.0-32
+for details).
+
+
Test
----
@@ -371,9 +394,9 @@ Note also that we use the 64-to-32-bit cross-compiler for 32-bit builds.
Come up with Configuration(s)
-----------------------------
-By examining the INCLUDE and LIB environment variables in the corresponding
-Visual Studio Command Prompts, determine which SDK/CRT versions are used,
-executable paths for the tools (use the where command), etc.
+By examining the INCLUDE, IFCPATH and LIB environment variables in the
+corresponding Visual Studio Command Prompts, determine which SDK/CRT versions
+are used, executable paths for the tools (use the where command), etc.
Based on this information create the corresponding configuration file(s) in
msvc-NN/ subdirectory. Use the existing configuration from the closest version
diff --git a/cl-14u0-32 b/cl-14.0-32
index 0d34aea..0d34aea 100755
--- a/cl-14u0-32
+++ b/cl-14.0-32
diff --git a/cl-14u2-32 b/cl-14.2-32
index 0d34aea..0d34aea 100755
--- a/cl-14u2-32
+++ b/cl-14.2-32
diff --git a/cl-14u2-64 b/cl-14.2-64
index 0d34aea..0d34aea 100755
--- a/cl-14u2-64
+++ b/cl-14.2-64
diff --git a/cl-14u3-32 b/cl-14.3-32
index 0d34aea..0d34aea 100755
--- a/cl-14u3-32
+++ b/cl-14.3-32
diff --git a/cl-14u3-64 b/cl-14.3-64
index 0d34aea..0d34aea 100755
--- a/cl-14u3-64
+++ b/cl-14.3-64
diff --git a/cl-15u0-32 b/cl-15.0-32
index 0d34aea..0d34aea 100755
--- a/cl-15u0-32
+++ b/cl-15.0-32
diff --git a/cl-15u0-64 b/cl-15.0-64
index 0d34aea..0d34aea 100755
--- a/cl-15u0-64
+++ b/cl-15.0-64
diff --git a/cl-15u3-32 b/cl-15.3-32
index 0d34aea..0d34aea 100755
--- a/cl-15u3-32
+++ b/cl-15.3-32
diff --git a/cl-15u3-64 b/cl-15.3-64
index 0d34aea..0d34aea 100755
--- a/cl-15u3-64
+++ b/cl-15.3-64
diff --git a/cl-15u5-32 b/cl-15.5-32
index 0d34aea..0d34aea 100755
--- a/cl-15u5-32
+++ b/cl-15.5-32
diff --git a/cl-15u5-64 b/cl-15.5-64
index 0d34aea..0d34aea 100755
--- a/cl-15u5-64
+++ b/cl-15.5-64
diff --git a/cl-15u6-32 b/cl-15.6-32
index 0d34aea..0d34aea 100755
--- a/cl-15u6-32
+++ b/cl-15.6-32
diff --git a/cl-15u6-64 b/cl-15.6-64
index 0d34aea..0d34aea 100755
--- a/cl-15u6-64
+++ b/cl-15.6-64
diff --git a/cl-15u7-32 b/cl-15.7-32
index 0d34aea..0d34aea 100755
--- a/cl-15u7-32
+++ b/cl-15.7-32
diff --git a/cl-15u7-64 b/cl-15.7-64
index 0d34aea..0d34aea 100755
--- a/cl-15u7-64
+++ b/cl-15.7-64
diff --git a/lib-14u0-32 b/cl-16.0-32
index 0d34aea..0d34aea 100755
--- a/lib-14u0-32
+++ b/cl-16.0-32
diff --git a/lib-14u2-32 b/cl-16.0-64
index 0d34aea..0d34aea 100755
--- a/lib-14u2-32
+++ b/cl-16.0-64
diff --git a/lib-14u2-64 b/lib-14.0-32
index 0d34aea..0d34aea 100755
--- a/lib-14u2-64
+++ b/lib-14.0-32
diff --git a/lib-14u3-32 b/lib-14.2-32
index 0d34aea..0d34aea 100755
--- a/lib-14u3-32
+++ b/lib-14.2-32
diff --git a/lib-14u3-64 b/lib-14.2-64
index 0d34aea..0d34aea 100755
--- a/lib-14u3-64
+++ b/lib-14.2-64
diff --git a/lib-15u0-32 b/lib-14.3-32
index 0d34aea..0d34aea 100755
--- a/lib-15u0-32
+++ b/lib-14.3-32
diff --git a/lib-15u0-64 b/lib-14.3-64
index 0d34aea..0d34aea 100755
--- a/lib-15u0-64
+++ b/lib-14.3-64
diff --git a/lib-15u3-32 b/lib-15.0-32
index 0d34aea..0d34aea 100755
--- a/lib-15u3-32
+++ b/lib-15.0-32
diff --git a/lib-15u3-64 b/lib-15.0-64
index 0d34aea..0d34aea 100755
--- a/lib-15u3-64
+++ b/lib-15.0-64
diff --git a/lib-15u5-32 b/lib-15.3-32
index 0d34aea..0d34aea 100755
--- a/lib-15u5-32
+++ b/lib-15.3-32
diff --git a/lib-15u5-64 b/lib-15.3-64
index 0d34aea..0d34aea 100755
--- a/lib-15u5-64
+++ b/lib-15.3-64
diff --git a/lib-15u6-32 b/lib-15.5-32
index 0d34aea..0d34aea 100755
--- a/lib-15u6-32
+++ b/lib-15.5-32
diff --git a/lib-15u6-64 b/lib-15.5-64
index 0d34aea..0d34aea 100755
--- a/lib-15u6-64
+++ b/lib-15.5-64
diff --git a/lib-15u7-32 b/lib-15.6-32
index 0d34aea..0d34aea 100755
--- a/lib-15u7-32
+++ b/lib-15.6-32
diff --git a/lib-15u7-64 b/lib-15.6-64
index 0d34aea..0d34aea 100755
--- a/lib-15u7-64
+++ b/lib-15.6-64
diff --git a/link-14u0-32 b/lib-15.7-32
index 0d34aea..0d34aea 100755
--- a/link-14u0-32
+++ b/lib-15.7-32
diff --git a/link-14u2-32 b/lib-15.7-64
index 0d34aea..0d34aea 100755
--- a/link-14u2-32
+++ b/lib-15.7-64
diff --git a/link-14u2-64 b/lib-16.0-32
index 0d34aea..0d34aea 100755
--- a/link-14u2-64
+++ b/lib-16.0-32
diff --git a/link-14u3-32 b/lib-16.0-64
index 0d34aea..0d34aea 100755
--- a/link-14u3-32
+++ b/lib-16.0-64
diff --git a/link-14u3-64 b/link-14.0-32
index 0d34aea..0d34aea 100755
--- a/link-14u3-64
+++ b/link-14.0-32
diff --git a/link-15u0-32 b/link-14.2-32
index 0d34aea..0d34aea 100755
--- a/link-15u0-32
+++ b/link-14.2-32
diff --git a/link-15u0-64 b/link-14.2-64
index 0d34aea..0d34aea 100755
--- a/link-15u0-64
+++ b/link-14.2-64
diff --git a/link-15u3-32 b/link-14.3-32
index 0d34aea..0d34aea 100755
--- a/link-15u3-32
+++ b/link-14.3-32
diff --git a/link-15u3-64 b/link-14.3-64
index 0d34aea..0d34aea 100755
--- a/link-15u3-64
+++ b/link-14.3-64
diff --git a/link-15u5-32 b/link-15.0-32
index 0d34aea..0d34aea 100755
--- a/link-15u5-32
+++ b/link-15.0-32
diff --git a/link-15u5-64 b/link-15.0-64
index 0d34aea..0d34aea 100755
--- a/link-15u5-64
+++ b/link-15.0-64
diff --git a/link-15u6-32 b/link-15.3-32
index 0d34aea..0d34aea 100755
--- a/link-15u6-32
+++ b/link-15.3-32
diff --git a/link-15u6-64 b/link-15.3-64
index 0d34aea..0d34aea 100755
--- a/link-15u6-64
+++ b/link-15.3-64
diff --git a/link-15u7-32 b/link-15.5-32
index 0d34aea..0d34aea 100755
--- a/link-15u7-32
+++ b/link-15.5-32
diff --git a/link-15u7-64 b/link-15.5-64
index 0d34aea..0d34aea 100755
--- a/link-15u7-64
+++ b/link-15.5-64
diff --git a/mt-14u0-32 b/link-15.6-32
index 0d34aea..0d34aea 100755
--- a/mt-14u0-32
+++ b/link-15.6-32
diff --git a/mt-14u2-32 b/link-15.6-64
index 0d34aea..0d34aea 100755
--- a/mt-14u2-32
+++ b/link-15.6-64
diff --git a/mt-14u2-64 b/link-15.7-32
index 0d34aea..0d34aea 100755
--- a/mt-14u2-64
+++ b/link-15.7-32
diff --git a/mt-14u3-32 b/link-15.7-64
index 0d34aea..0d34aea 100755
--- a/mt-14u3-32
+++ b/link-15.7-64
diff --git a/mt-14u3-64 b/link-16.0-32
index 0d34aea..0d34aea 100755
--- a/mt-14u3-64
+++ b/link-16.0-32
diff --git a/mt-15u0-32 b/link-16.0-64
index 0d34aea..0d34aea 100755
--- a/mt-15u0-32
+++ b/link-16.0-64
diff --git a/msvc-14/msvc-14u0-32 b/msvc-14/msvc-14.0-32
index 5900bba..74de769 100755
--- a/msvc-14/msvc-14u0-32
+++ b/msvc-14/msvc-14.0-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-14/msvc-14u0-32
+# file : msvc-14/msvc-14.0-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-14/msvc-14u2-32 b/msvc-14/msvc-14.2-32
index 0286b5a..5a01648 100755
--- a/msvc-14/msvc-14u2-32
+++ b/msvc-14/msvc-14.2-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-14/msvc-14u2-32
+# file : msvc-14/msvc-14.2-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-14/msvc-14u2-64 b/msvc-14/msvc-14.2-64
index efd977b..669a1eb 100755
--- a/msvc-14/msvc-14u2-64
+++ b/msvc-14/msvc-14.2-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-14/msvc-14u2-64
+# file : msvc-14/msvc-14.2-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-14/msvc-14u3-32 b/msvc-14/msvc-14.3-32
index 36d6037..4905d2c 100755
--- a/msvc-14/msvc-14u3-32
+++ b/msvc-14/msvc-14.3-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-14/msvc-14u3-32
+# file : msvc-14/msvc-14.3-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
@@ -22,7 +22,7 @@ fi
SDK="C:\\Program Files (x86)\\Windows Kits\\10"
SDKBIN="$SDK\\bin\\x86"
-# Originally "10.0.14393" (if upgrade 14u2) or "10.0.10240" (if clean install).
+# Originally "10.0.14393" (if upgrade 14.2) or "10.0.10240" (if clean install).
#
SDKVER="$MSVC_SDKVERSION.0"
@@ -33,7 +33,7 @@ LIB="$SDK\\lib\\$SDKVER\\um\\x86"
#
CRT="C:\\Program Files (x86)\\Windows Kits\\10"
-# Originally "10.0.14393" (if upgrade 14u2) or "10.0.10240" (if clean install).
+# Originally "10.0.14393" (if upgrade 14.2) or "10.0.10240" (if clean install).
#
CRTVER="$MSVC_SDKVERSION.0"
diff --git a/msvc-14/msvc-14u3-64 b/msvc-14/msvc-14.3-64
index 3d775d6..64e4c12 100755
--- a/msvc-14/msvc-14u3-64
+++ b/msvc-14/msvc-14.3-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-14/msvc-14u3-64
+# file : msvc-14/msvc-14.3-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
@@ -22,7 +22,7 @@ fi
SDK="C:\\Program Files (x86)\\Windows Kits\\10"
SDKBIN="$SDK\\bin\\x64"
-# Originally "10.0.14393" (if upgrade 14u2) or "10.0.10240" (if clean install).
+# Originally "10.0.14393" (if upgrade 14.2) or "10.0.10240" (if clean install).
#
SDKVER="$MSVC_SDKVERSION.0"
@@ -33,7 +33,7 @@ LIB="$SDK\\lib\\$SDKVER\\um\\x64"
#
CRT="C:\\Program Files (x86)\\Windows Kits\\10"
-# Originally "10.0.14393" (if upgrade 14u2) or "10.0.10240" (if clean install).
+# Originally "10.0.14393" (if upgrade 14.2) or "10.0.10240" (if clean install).
#
CRTVER="$MSVC_SDKVERSION.0"
diff --git a/msvc-15/msvc-15u0-32 b/msvc-15/msvc-15.0-32
index 7ebe072..1ac12b8 100755
--- a/msvc-15/msvc-15u0-32
+++ b/msvc-15/msvc-15.0-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u0-32
+# file : msvc-15/msvc-15.0-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u0-64 b/msvc-15/msvc-15.0-64
index 28cec73..34db54f 100755
--- a/msvc-15/msvc-15u0-64
+++ b/msvc-15/msvc-15.0-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u0-64
+# file : msvc-15/msvc-15.0-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u3-32 b/msvc-15/msvc-15.3-32
index bfca048..42ee2e5 100755
--- a/msvc-15/msvc-15u3-32
+++ b/msvc-15/msvc-15.3-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u3-32
+# file : msvc-15/msvc-15.3-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u3-64 b/msvc-15/msvc-15.3-64
index 085c03c..342f871 100755
--- a/msvc-15/msvc-15u3-64
+++ b/msvc-15/msvc-15.3-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u3-64
+# file : msvc-15/msvc-15.3-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u5-32 b/msvc-15/msvc-15.5-32
index e9524ec..482e764 100755
--- a/msvc-15/msvc-15u5-32
+++ b/msvc-15/msvc-15.5-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u5-32
+# file : msvc-15/msvc-15.5-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u5-64 b/msvc-15/msvc-15.5-64
index dbcbcb8..71672ab 100755
--- a/msvc-15/msvc-15u5-64
+++ b/msvc-15/msvc-15.5-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u5-64
+# file : msvc-15/msvc-15.5-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u6-32 b/msvc-15/msvc-15.6-32
index 08e6e98..e687e1f 100755
--- a/msvc-15/msvc-15u6-32
+++ b/msvc-15/msvc-15.6-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u6-32
+# file : msvc-15/msvc-15.6-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u6-64 b/msvc-15/msvc-15.6-64
index 272a682..7aa5544 100755
--- a/msvc-15/msvc-15u6-64
+++ b/msvc-15/msvc-15.6-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u6-64
+# file : msvc-15/msvc-15.6-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u7-32 b/msvc-15/msvc-15.7-32
index 133fc51..46d8bab 100755
--- a/msvc-15/msvc-15u7-32
+++ b/msvc-15/msvc-15.7-32
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u7-32
+# file : msvc-15/msvc-15.7-32
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-15/msvc-15u7-64 b/msvc-15/msvc-15.7-64
index 7586250..f2fd607 100755
--- a/msvc-15/msvc-15u7-64
+++ b/msvc-15/msvc-15.7-64
@@ -1,6 +1,6 @@
#! /usr/bin/env bash
-# file : msvc-15/msvc-15u7-64
+# file : msvc-15/msvc-15.7-64
# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
# license : MIT; see accompanying LICENSE file
diff --git a/msvc-16/msvc-16.0-32 b/msvc-16/msvc-16.0-32
new file mode 100755
index 0000000..022c4b4
--- /dev/null
+++ b/msvc-16/msvc-16.0-32
@@ -0,0 +1,54 @@
+#! /usr/bin/env bash
+
+# file : msvc-16/msvc-16.0-32
+# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+# MSVC 16 32-bit setup/configuration (note: using 64-to-32 cross-compiler).
+#
+# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables.
+#
+if [ -z "$MSVC_INSTALLDIR" ]; then
+ MSVC_INSTALLDIR="Microsoft Visual Studio 16.0"
+fi
+
+if [ -z "$MSVC_SDKVERSION" ]; then
+ source "$src_dir/msvc-common/msvc-sdk-common"
+ MSVC_SDKVERSION="$(windows10_sdkversion)"
+fi
+
+# SDK
+#
+SDK="C:\\Program Files (x86)\\Windows Kits\\10"
+SDKVER="$MSVC_SDKVERSION.0"
+SDKBIN="$SDK\\bin\\$SDKVER\\x86"
+
+INCLUDE="$SDK\\include\\$SDKVER\\shared;$SDK\\include\\$SDKVER\\um;$SDK\\include\\$SDKVER\\winrt;$SDK\\include\\$SDKVER\\cppwinrt"
+LIB="$SDK\\lib\\$SDKVER\\um\\x86"
+
+# CRT
+#
+CRT="C:\\Program Files (x86)\\Windows Kits\\10"
+CRTVER="$MSVC_SDKVERSION.0"
+
+INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE"
+LIB="$CRT\\lib\\$CRTVER\\ucrt\\x86;$LIB"
+
+# VC
+#
+VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC\\Tools\\MSVC\\14.20.27404"
+
+# Note that running cross-linker may end up with the following error:
+#
+# LINK : fatal error LNK1158: cannot run 'cvtres.exe'
+#
+# The native linker doesn't fail but may run out of memory in some cases. One
+# workaround for the above error is to symlinking HostX64/x64/cvtres.exe into
+# HostX64/x86/. However, let's postpone it until really necessary.
+#
+VCBIN="$VC\\bin\\HostX64\\x86"
+VCDLL="$VC\\bin\\HostX64\\x64"
+
+INCLUDE="$VC\\include;$INCLUDE"
+IFCPATH="$VC\\ifc\\x86"
+LIB="$VC\\lib\\x86;$LIB"
diff --git a/msvc-16/msvc-16.0-64 b/msvc-16/msvc-16.0-64
new file mode 100755
index 0000000..4f8a70f
--- /dev/null
+++ b/msvc-16/msvc-16.0-64
@@ -0,0 +1,45 @@
+#! /usr/bin/env bash
+
+# file : msvc-16/msvc-16.0-64
+# copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+# MSVC 64-bit setup/configuration.
+#
+# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables.
+#
+if [ -z "$MSVC_INSTALLDIR" ]; then
+ MSVC_INSTALLDIR="Microsoft Visual Studio 16.0"
+fi
+
+if [ -z "$MSVC_SDKVERSION" ]; then
+ source "$src_dir/msvc-common/msvc-sdk-common"
+ MSVC_SDKVERSION="$(windows10_sdkversion)"
+fi
+
+# SDK
+#
+SDK="C:\\Program Files (x86)\\Windows Kits\\10"
+SDKVER="$MSVC_SDKVERSION.0"
+SDKBIN="$SDK\\bin\\$SDKVER\\x64"
+
+INCLUDE="$SDK\\include\\$SDKVER\\shared;$SDK\\include\\$SDKVER\\um;$SDK\\include\\$SDKVER\\winrt;$SDK\\include\\$SDKVER\\cppwinrt"
+LIB="$SDK\\lib\\$SDKVER\\um\\x64"
+
+# CRT
+#
+CRT="C:\\Program Files (x86)\\Windows Kits\\10"
+CRTVER="$MSVC_SDKVERSION.0"
+
+INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE"
+LIB="$CRT\\lib\\$CRTVER\\ucrt\\x64;$LIB"
+
+# VC
+#
+VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC\\Tools\\MSVC\\14.20.27404"
+VCBIN="$VC\\bin\\HostX64\\x64"
+VCDLL="$VC\\bin\\HostX64\\x64"
+
+INCLUDE="$VC\\include;$INCLUDE"
+IFCPATH="$VC\\ifc\\x64"
+LIB="$VC\\lib\\x64;$LIB"
diff --git a/msvc-common/msvc-link-common b/msvc-common/msvc-link-common
index d0c2186..fdddf61 100755
--- a/msvc-common/msvc-link-common
+++ b/msvc-common/msvc-link-common
@@ -104,7 +104,8 @@ while [ $# -gt 0 ]; do
;;
[/-]DEFAULTLIB:* | \
- [/-]PDBALTPATH:*)
+ [/-]PDBALTPATH:* | \
+ [/-]SOURCELINK:*)
args=("${args[@]}" "$(split_translate 12 $1)")
shift
;;
@@ -166,9 +167,9 @@ while [ $# -gt 0 ]; do
# If contains at least two slashes, treat it as a path.
#
if [[ "$1" == /*/* ]]; then
- args=("${args[@]}" "$(translate $1)")
+ args=("${args[@]}" "$(translate $1)")
else
- args=("${args[@]}" "$1")
+ args=("${args[@]}" "$1")
fi
shift
;;
diff --git a/msvc-dispatch b/msvc-dispatch
index 5180487..984a1a5 100755
--- a/msvc-dispatch
+++ b/msvc-dispatch
@@ -13,24 +13,27 @@ function info () { echo "$*" 1>&2; }
function error () { info "$*"; exit 1; }
# Split the argument. The <version> itself should be <major>[minor] where
-# <major> is digit-dot-only and minor should start with a non-digit-dot (e.g.,
-# u1, rc1, etc).
+# <major> is digit-only and minor should start with the dot (e.g., .0).
#
arg=($(echo "$(basename "$src_exe")" | \
- sed -n -e 's/^\([^-]*\)-\([0-9.]*\)\([^-]*\)-\([^-]*\)$/\1 \4 \2 \3/p'))
+ sed -n -e 's/^\([^-]*\)-\([0-9]*\)\(\.[^-]\{1,\}\)\{0,1\}-\([^-]*\)$/\1 \4 \2 \3/p'))
tool="${arg[0]}"
target="${arg[1]}"
major="${arg[2]}"
minor="${arg[3]}"
-MAJOR="${arg[2]^^}"
-MINOR="${arg[3]^^}"
+MAJOR="${major^^}"
+MINOR="${minor^^}"
if [ -z "$tool" -o -z "$major" -o -z "$target" ]; then
error "invalid top-level script name"
fi
+# For the minor version used in variable names replace dots with underscores.
+#
+MINOR="$(echo "$MINOR" | sed -e 's/\./_/g')"
+
# Calculate MSVC_{WINEPREFIX,INSTALLDIR,SDKVERSION}.
#
# We have the following environment variable name hierarchy:
diff --git a/mt-15u0-64 b/mt-14.0-32
index 0d34aea..0d34aea 100755
--- a/mt-15u0-64
+++ b/mt-14.0-32
diff --git a/mt-15u3-32 b/mt-14.2-32
index 0d34aea..0d34aea 100755
--- a/mt-15u3-32
+++ b/mt-14.2-32
diff --git a/mt-15u3-64 b/mt-14.2-64
index 0d34aea..0d34aea 100755
--- a/mt-15u3-64
+++ b/mt-14.2-64
diff --git a/mt-15u5-32 b/mt-14.3-32
index 0d34aea..0d34aea 100755
--- a/mt-15u5-32
+++ b/mt-14.3-32
diff --git a/mt-15u5-64 b/mt-14.3-64
index 0d34aea..0d34aea 100755
--- a/mt-15u5-64
+++ b/mt-14.3-64
diff --git a/mt-15u6-32 b/mt-15.0-32
index 0d34aea..0d34aea 100755
--- a/mt-15u6-32
+++ b/mt-15.0-32
diff --git a/mt-15u6-64 b/mt-15.0-64
index 0d34aea..0d34aea 100755
--- a/mt-15u6-64
+++ b/mt-15.0-64
diff --git a/mt-15u7-32 b/mt-15.3-32
index 0d34aea..0d34aea 100755
--- a/mt-15u7-32
+++ b/mt-15.3-32
diff --git a/mt-15u7-64 b/mt-15.3-64
index 0d34aea..0d34aea 100755
--- a/mt-15u7-64
+++ b/mt-15.3-64
diff --git a/rc-14u0-32 b/mt-15.5-32
index 0d34aea..0d34aea 100755
--- a/rc-14u0-32
+++ b/mt-15.5-32
diff --git a/rc-14u2-32 b/mt-15.5-64
index 0d34aea..0d34aea 100755
--- a/rc-14u2-32
+++ b/mt-15.5-64
diff --git a/rc-14u2-64 b/mt-15.6-32
index 0d34aea..0d34aea 100755
--- a/rc-14u2-64
+++ b/mt-15.6-32
diff --git a/rc-14u3-32 b/mt-15.6-64
index 0d34aea..0d34aea 100755
--- a/rc-14u3-32
+++ b/mt-15.6-64
diff --git a/rc-14u3-64 b/mt-15.7-32
index 0d34aea..0d34aea 100755
--- a/rc-14u3-64
+++ b/mt-15.7-32
diff --git a/rc-15u0-32 b/mt-15.7-64
index 0d34aea..0d34aea 100755
--- a/rc-15u0-32
+++ b/mt-15.7-64
diff --git a/rc-15u0-64 b/mt-16.0-32
index 0d34aea..0d34aea 100755
--- a/rc-15u0-64
+++ b/mt-16.0-32
diff --git a/rc-15u3-32 b/mt-16.0-64
index 0d34aea..0d34aea 100755
--- a/rc-15u3-32
+++ b/mt-16.0-64
diff --git a/rc-15u3-64 b/rc-14.0-32
index 0d34aea..0d34aea 100755
--- a/rc-15u3-64
+++ b/rc-14.0-32
diff --git a/rc-15u5-32 b/rc-14.2-32
index 0d34aea..0d34aea 100755
--- a/rc-15u5-32
+++ b/rc-14.2-32
diff --git a/rc-15u5-64 b/rc-14.2-64
index 0d34aea..0d34aea 100755
--- a/rc-15u5-64
+++ b/rc-14.2-64
diff --git a/rc-15u6-32 b/rc-14.3-32
index 0d34aea..0d34aea 100755
--- a/rc-15u6-32
+++ b/rc-14.3-32
diff --git a/rc-15u6-64 b/rc-14.3-64
index 0d34aea..0d34aea 100755
--- a/rc-15u6-64
+++ b/rc-14.3-64
diff --git a/rc-15u7-32 b/rc-15.0-32
index 0d34aea..0d34aea 100755
--- a/rc-15u7-32
+++ b/rc-15.0-32
diff --git a/rc-15u7-64 b/rc-15.0-64
index 0d34aea..0d34aea 100755
--- a/rc-15u7-64
+++ b/rc-15.0-64
diff --git a/rc-15.3-32 b/rc-15.3-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.3-32
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.3-64 b/rc-15.3-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.3-64
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.5-32 b/rc-15.5-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.5-32
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.5-64 b/rc-15.5-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.5-64
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.6-32 b/rc-15.6-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.6-32
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.6-64 b/rc-15.6-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.6-64
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.7-32 b/rc-15.7-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.7-32
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-15.7-64 b/rc-15.7-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15.7-64
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-16.0-32 b/rc-16.0-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-16.0-32
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"
diff --git a/rc-16.0-64 b/rc-16.0-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-16.0-64
@@ -0,0 +1,10 @@
+#! /usr/bin/env bash
+
+# The contents of these files are all identical; the information is carries by
+# the file name which should be in the form <tool>-<version>-<target>. See
+# msvc-dispatch for details.
+#
+src_exe="$(realpath ${BASH_SOURCE[0]})"
+src_dir="$(dirname "$src_exe")"
+
+source "$src_dir/msvc-dispatch"