diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-07-12 11:18:07 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-07-12 11:18:07 +0200 |
commit | 265bbf04645fcdf4adce5db2e9fabfe5aacdc19a (patch) | |
tree | ec58a429a3c11f1b41685ba7bbfc68ed2ffe0073 | |
parent | ed7104094b14109ab5cbf8b696e01eebadb764dd (diff) |
Add script for adding lower-case symlinks for upper-case headers
-rw-r--r-- | INSTALL | 20 | ||||
-rw-r--r-- | TODO | 4 | ||||
-rwxr-xr-x | etc/lowercase-headers | 24 |
3 files changed, 48 insertions, 0 deletions
@@ -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 (<O>) 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, @@ -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 <dir> (recursively) that +# contain capital letters in their names. +# +usage="usage: $0 <dir>" + +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 |