From 0e2b7b99f9cc769cf4b094dca39b5d452f1de32b Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sat, 26 Nov 2016 01:07:27 +0300 Subject: Add support for VC15RC1 --- INSTALL | 94 +++++++++++++++++++++++++++++++++++++++++++++++---- buildfile | 39 +++++++++++---------- cl-15rc1-32 | 10 ++++++ cl-15rc1-64 | 10 ++++++ lib-15rc1-32 | 10 ++++++ lib-15rc1-64 | 10 ++++++ link-15rc1-32 | 10 ++++++ link-15rc1-64 | 10 ++++++ msvc-15/msvc-15rc1-32 | 35 +++++++++++++++++++ msvc-15/msvc-15rc1-64 | 35 +++++++++++++++++++ mt-15rc1-32 | 10 ++++++ mt-15rc1-64 | 10 ++++++ rc-15rc1-32 | 10 ++++++ rc-15rc1-64 | 10 ++++++ 14 files changed, 278 insertions(+), 25 deletions(-) create mode 100755 cl-15rc1-32 create mode 100755 cl-15rc1-64 create mode 100755 lib-15rc1-32 create mode 100755 lib-15rc1-64 create mode 100755 link-15rc1-32 create mode 100755 link-15rc1-64 create mode 100755 msvc-15/msvc-15rc1-32 create mode 100755 msvc-15/msvc-15rc1-64 create mode 100755 mt-15rc1-32 create mode 100755 mt-15rc1-64 create mode 100755 rc-15rc1-32 create mode 100755 rc-15rc1-64 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 --. 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 --. 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 --. 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 --. 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 --. 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 --. 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 --. 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 --. 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 --. 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 --. See +# msvc-dispatch for details. +# +src_exe="$(realpath ${BASH_SOURCE[0]})" +src_dir="$(dirname "$src_exe")" + +source "$src_dir/msvc-dispatch" -- cgit v1.1