aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2016-11-26 01:07:27 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2016-11-26 22:07:05 +0300
commit0e2b7b99f9cc769cf4b094dca39b5d452f1de32b (patch)
tree530fb268bb9a1889e07f2bf46c9f2582f20cde6a
parent4e8da1a485edea20f065e1583511262fcf8c85b1 (diff)
Add support for VC15RC1
-rw-r--r--INSTALL94
-rw-r--r--buildfile39
-rwxr-xr-xcl-15rc1-3210
-rwxr-xr-xcl-15rc1-6410
-rwxr-xr-xlib-15rc1-3210
-rwxr-xr-xlib-15rc1-6410
-rwxr-xr-xlink-15rc1-3210
-rwxr-xr-xlink-15rc1-6410
-rwxr-xr-xmsvc-15/msvc-15rc1-3235
-rwxr-xr-xmsvc-15/msvc-15rc1-6435
-rwxr-xr-xmt-15rc1-3210
-rwxr-xr-xmt-15rc1-6410
-rwxr-xr-xrc-15rc1-3210
-rwxr-xr-xrc-15rc1-6410
14 files changed, 278 insertions, 25 deletions
diff --git a/INSTALL b/INSTALL
index 6031b47..7e0d035 100644
--- a/INSTALL
+++ b/INSTALL
@@ -188,8 +188,12 @@ Add overrides for msvcr120.dll and msvcp120.dll: run winecfg, select the
Copy and Setup Visual Studio 14
-------------------------------
-Note: 14 Update 2 requires Wine 1.9 or later (bug #34851).
-Note: 14 Update 2 is known to work with Wine 1.9.7, 1.9.8 but not 1.9.15.
+Note: 14 Update 2 (and presumably 3) requires Wine 1.9 or later (bug #34851).
+
+Note: 14 Update 2 (and presumably 3) is known to work with Wine 1.9.7, 1.9.8
+ but not 1.9.15.
+
+Note: SDK 8.1 is only used by 14 Update 0.
$ mkdir -p ".wine/drive_c/Program Files (x86)/Microsoft Visual Studio 14.0"
$ cp -r "/mnt/Program Files (x86)/Microsoft Visual Studio 14.0/VC" \
@@ -214,11 +218,22 @@ $ etc/lowercase-headers \
".wine/drive_c/Program Files (x86)/Windows Kits/8.1/Include" \
".wine/drive_c/Program Files (x86)/Windows Kits/10/Include"
-Installing via the redistributable DLLs still does not work as of Wine 1.7.55.
-Instead, we have to manually copy a bunch of DLLs from /mnt/Windows/{SysWoW64/
-System32/} to .wine/drive_c/windows/{syswow64/ system32/} and add Wine
-overrides (run winecfg, select the "Libraries" tab, then enter the DLL name
-and press "Add").
+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/{x86 x64}/Microsoft.VC140.CRT/
+
+And:
+
+.wine/.../Windows Kits/10/Redist/ucrt/DLLs/{x86 x64}/
+
+To:
+
+.wine/drive_c/windows/{syswow64 system32}/
+
+And add Wine overrides (run winecfg, select the "Libraries" tab, then enter
+the DLL name and press "Add").
+------------
To discover the list of DLLs, run cl-14 to compile and link an executable and
then run the executable itself (see Test below): any DLL that causes an error
@@ -241,6 +256,71 @@ The following overrides are necessary because of some unimplemented functions:
api-ms-win-crt-time-l1-1-0.dll
+Copy and Setup Visual Studio 15
+-------------------------------
+
+Note: based on 15RC1.
+
+Note: 15 uses the same CRT runtime DLL version (140) as 14. If using together,
+ then it makes sense to use versions from 15 which are claimed to be
+ backwards compatible. The same probably applies to the SDK tools.
+
+Copy VC files from Windows host. Note that the source path can look
+differently, for example:
+
+.../Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC.
+
+$ 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/"
+
+$ 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/"
+
+Add lower-case symlinks for upper-case named headers:
+
+$ etc/lowercase-headers \
+ ".wine/drive_c/Program Files (x86)/Windows Kits/10/Include"
+
+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.24629/{x86 x64}/Microsoft.VC150.CRT/
+
+And:
+
+.wine/.../Windows Kits/10/Redist/ucrt/DLLs/{x86 x64}/
+
+To:
+
+.wine/drive_c/windows/{syswow64 system32}/
+
+And add Wine overrides (run winecfg, select the "Libraries" tab, then enter
+the DLL name and press "Add").
+
+To discover the list of DLLs, run cl-15 to compile and link an executable and
+then run the executable itself (see Test below): any DLL that causes an error
+needs an override.
+
+For Wine 1.7.55-1.9.8 the list is:
+
+ api-ms-win-crt-runtime-l1-1-0.dll
+ api-ms-win-crt-locale-l1-1-0.dll
+ api-ms-win-crt-heap-l1-1-0.dll
+ api-ms-win-crt-stdio-l1-1-0.dll
+ api-ms-win-crt-conio-l1-1-0.dll
+ ucrtbase.dll
+ vcruntime140.dll
+ msvcp140.dll
+
+The following overrides are necessary because of some unimplemented functions:
+
+ api-ms-win-crt-string-l1-1-0.dll
+ api-ms-win-crt-time-l1-1-0.dll
+ api-ms-win-core-rtlsupport-l1-1-0.dll
+
+
Test
----
diff --git a/buildfile b/buildfile
index 84feff7..5165c16 100644
--- a/buildfile
+++ b/buildfile
@@ -6,24 +6,27 @@ define sh: file
sh{*}: extension =
sh{*}: install = bin/
-s = cl-11-32 lib-11-32 link-11-32 mt-11-32 rc-11-32 \
- cl-12-32 lib-12-32 link-12-32 mt-12-32 rc-12-32 \
- cl-14u0-32 lib-14u0-32 link-14u0-32 mt-14u0-32 rc-14u0-32 \
- cl-14u2-32 lib-14u2-32 link-14u2-32 mt-14u2-32 rc-14u2-32 \
- cl-14u2-64 lib-14u2-64 link-14u2-64 mt-14u2-64 rc-14u2-64 \
- cl-14u3-32 lib-14u3-32 link-14u3-32 mt-14u3-32 rc-14u3-32 \
- cl-14u3-64 lib-14u3-64 link-14u3-64 mt-14u3-64 rc-14u3-64 \
- \
- msvc-dispatch \
- \
- msvc-common/{msvc-cl-common msvc-common msvc-lib-common \
- msvc-link-common msvc-mt-common msvc-rc-common} \
- \
- msvc-11/{msvc-11-32} \
- msvc-12/{msvc-12-32} \
- msvc-14/{msvc-14u0-32 \
- msvc-14u2-32 msvc-14u2-64 \
- msvc-14u3-32 msvc-14u3-64}
+s = cl-11-32 lib-11-32 link-11-32 mt-11-32 rc-11-32 \
+ cl-12-32 lib-12-32 link-12-32 mt-12-32 rc-12-32 \
+ cl-14u0-32 lib-14u0-32 link-14u0-32 mt-14u0-32 rc-14u0-32 \
+ cl-14u2-32 lib-14u2-32 link-14u2-32 mt-14u2-32 rc-14u2-32 \
+ cl-14u2-64 lib-14u2-64 link-14u2-64 mt-14u2-64 rc-14u2-64 \
+ cl-14u3-32 lib-14u3-32 link-14u3-32 mt-14u3-32 rc-14u3-32 \
+ cl-14u3-64 lib-14u3-64 link-14u3-64 mt-14u3-64 rc-14u3-64 \
+ cl-15rc1-32 lib-15rc1-32 link-15rc1-32 mt-15rc1-32 rc-15rc1-32 \
+ cl-15rc1-64 lib-15rc1-64 link-15rc1-64 mt-15rc1-64 rc-15rc1-64 \
+ \
+ msvc-dispatch \
+ \
+ msvc-common/{msvc-cl-common msvc-common msvc-lib-common \
+ msvc-link-common msvc-mt-common msvc-rc-common} \
+ \
+ msvc-11/{msvc-11-32} \
+ msvc-12/{msvc-12-32} \
+ msvc-14/{msvc-14u0-32 \
+ msvc-14u2-32 msvc-14u2-64 \
+ msvc-14u3-32 msvc-14u3-64} \
+ msvc-15/{msvc-15rc1-32 msvc-15rc1-64}
./: msvc-common/exe{msvc-filter} sh{$s} \
diff --git a/cl-15rc1-32 b/cl-15rc1-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/cl-15rc1-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/cl-15rc1-64 b/cl-15rc1-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/cl-15rc1-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/lib-15rc1-32 b/lib-15rc1-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/lib-15rc1-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/lib-15rc1-64 b/lib-15rc1-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/lib-15rc1-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/link-15rc1-32 b/link-15rc1-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/link-15rc1-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/link-15rc1-64 b/link-15rc1-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/link-15rc1-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/msvc-15/msvc-15rc1-32 b/msvc-15/msvc-15rc1-32
new file mode 100755
index 0000000..774065a
--- /dev/null
+++ b/msvc-15/msvc-15rc1-32
@@ -0,0 +1,35 @@
+#! /usr/bin/env bash
+
+# MSVC 15RC1 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 15.0"
+fi
+
+# SDK
+#
+SDK="C:\\Program Files (x86)\\Windows Kits\\10"
+SDKBIN="$SDK\\bin\\x86"
+SDKVER="10.0.14393.0"
+
+INCLUDE="$SDK\\include\\$SDKVER\\shared;$SDK\\include\\$SDKVER\\um;$SDK\\include\\$SDKVER\\winrt"
+LIB="$SDK\\lib\\$SDKVER\\um\\x86"
+
+# CRT
+#
+CRT="C:\\Program Files (x86)\\Windows Kits\\10"
+CRTVER="10.0.14393.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.10.24629"
+VCBIN="$VC\\bin\\HostX64\\x86"
+VCDLL="$VC\\bin\\HostX64\\x64"
+
+INCLUDE="$VC\\include;$INCLUDE"
+LIB="$VC\\lib\\x86;$LIB"
diff --git a/msvc-15/msvc-15rc1-64 b/msvc-15/msvc-15rc1-64
new file mode 100755
index 0000000..60c03be
--- /dev/null
+++ b/msvc-15/msvc-15rc1-64
@@ -0,0 +1,35 @@
+#! /usr/bin/env bash
+
+# MSVC 15RC1 64-bit setup/configuration.
+#
+# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables.
+#
+if [ -z "$MSVC_INSTALLDIR" ]; then
+ MSVC_INSTALLDIR="Microsoft Visual Studio 15.0"
+fi
+
+# SDK
+#
+SDK="C:\\Program Files (x86)\\Windows Kits\\10"
+SDKBIN="$SDK\\bin\\x64"
+SDKVER="10.0.14393.0"
+
+INCLUDE="$SDK\\include\\$SDKVER\\shared;$SDK\\include\\$SDKVER\\um;$SDK\\include\\$SDKVER\\winrt"
+LIB="$SDK\\lib\\$SDKVER\\um\\x64"
+
+# CRT
+#
+CRT="C:\\Program Files (x86)\\Windows Kits\\10"
+CRTVER="10.0.14393.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.10.24629"
+VCBIN="$VC\\bin\\HostX64\\x64"
+VCDLL="$VC\\bin\\HostX64\\x64"
+
+INCLUDE="$VC\\include;$INCLUDE"
+LIB="$VC\\lib\\x64;$LIB"
diff --git a/mt-15rc1-32 b/mt-15rc1-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/mt-15rc1-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/mt-15rc1-64 b/mt-15rc1-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/mt-15rc1-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-15rc1-32 b/rc-15rc1-32
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15rc1-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-15rc1-64 b/rc-15rc1-64
new file mode 100755
index 0000000..0d34aea
--- /dev/null
+++ b/rc-15rc1-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"