From 265bbf04645fcdf4adce5db2e9fabfe5aacdc19a Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 12 Jul 2016 11:18:07 +0200 Subject: Add script for adding lower-case symlinks for upper-case headers --- INSTALL | 20 ++++++++++++++++++++ TODO | 4 ++++ etc/lowercase-headers | 24 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100755 etc/lowercase-headers diff --git a/INSTALL b/INSTALL index f91e2d9..c8da45b 100644 --- a/INSTALL +++ b/INSTALL @@ -55,6 +55,10 @@ Prepare to Copy Visual Studio Note that below we assume that you have installed Visual Studio in the default location. +The following instructions are for mounting the VM parition on Linux host. +However, simply archiving the required directories on the running VM and +copying them to the Linux host should work as well. + Mount the VM disk (make sure it is not running) where you installed Visual Studio. First get the second partition offset () and sector size (normally 512, as below). @@ -85,6 +89,11 @@ $ mkdir -p ".wine/drive_c/Program Files (x86)/Windows Kits" $ cp -r "/mnt/Program Files (x86)/Windows Kits/8.0" \ ".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/8.0/Include" + Run the VC11 redistributable DLLs installer for x86 from .../VC/redist/1033/. Add override for msvcr110.dll: run winecfg, select the "Libraries" tab, then @@ -102,6 +111,11 @@ $ mkdir -p ".wine/drive_c/Program Files (x86)/Windows Kits" $ cp -r "/mnt/Program Files (x86)/Windows Kits/8.1" \ ".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/8.1/Include" + Run the VC12 redistributable DLLs installer for x86 from .../VC/redist/1033/. Add override for msvcr120.dll: run winecfg, select the "Libraries" tab, then @@ -130,6 +144,12 @@ $ cp -r "/mnt/Program Files (x86)/Windows Kits/8.1" \ $ 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/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/ to VC/bin/ and add Wine overrides (run winecfg, select the "Libraries" tab, diff --git a/TODO b/TODO index d451bc7..cab7a67 100644 --- a/TODO +++ b/TODO @@ -8,3 +8,7 @@ @@ What about 64-bit? cl-64 or some such? @@ There is link POSIX command. link.exe? cl-14.exe? + +@@ The /showIncludes run is very slow most likely due to the sed-based path + processing (but verify). Perhaps we should rewrite it in C++ with + translated path caching, etc. diff --git a/etc/lowercase-headers b/etc/lowercase-headers new file mode 100755 index 0000000..3a217db --- /dev/null +++ b/etc/lowercase-headers @@ -0,0 +1,24 @@ +#! /usr/bin/env bash + +# Create all-lowercase symlinks for .h headers in (recursively) that +# contain capital letters in their names. +# +usage="usage: $0 " + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function error () { echo "$*" 1>&2; exit 1; } + +if [ $# -eq 0 ]; then + error "$usage" +fi + +for d in "$@"; do + find $d -type f -name '*[[:upper:]]*.h' | + while read f; do + b="$(basename "$f")" + d="$(dirname "$f")" + ln -s "$b" "$d/${b,,}" + done +done -- cgit v1.1