aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-07-12 11:18:07 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-07-12 11:18:07 +0200
commit265bbf04645fcdf4adce5db2e9fabfe5aacdc19a (patch)
treeec58a429a3c11f1b41685ba7bbfc68ed2ffe0073
parented7104094b14109ab5cbf8b696e01eebadb764dd (diff)
Add script for adding lower-case symlinks for upper-case headers
-rw-r--r--INSTALL20
-rw-r--r--TODO4
-rwxr-xr-xetc/lowercase-headers24
3 files changed, 48 insertions, 0 deletions
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 (<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,
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 <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