From 3209a9fa6e87ad4d2f9d1087a1206347df4c6214 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 24 Nov 2016 11:38:44 +0200 Subject: Reorganize the script structure --- INSTALL | 6 +- cl-11 | 6 -- cl-11-32 | 10 +++ cl-12 | 6 -- cl-12-32 | 10 +++ cl-14 | 6 -- cl-14u0-32 | 10 +++ cl-14u2 | 6 -- cl-14u2-32 | 10 +++ cl-14u2-64 | 10 +++ lib-11 | 6 -- lib-11-32 | 10 +++ lib-12 | 6 -- lib-12-32 | 10 +++ lib-14 | 6 -- lib-14u0-32 | 10 +++ lib-14u2 | 6 -- lib-14u2-32 | 10 +++ lib-14u2-64 | 10 +++ link-11 | 6 -- link-11-32 | 10 +++ link-12 | 6 -- link-12-32 | 10 +++ link-14 | 6 -- link-14u0-32 | 10 +++ link-14u2 | 6 -- link-14u2-32 | 10 +++ link-14u2-64 | 10 +++ msvc-11 | 23 ------ msvc-11/msvc-11-32 | 26 ++++++ msvc-12 | 23 ------ msvc-12/msvc-12-32 | 26 ++++++ msvc-14 | 31 ------- msvc-14/msvc-14u0-32 | 34 ++++++++ msvc-14/msvc-14u2-32 | 35 ++++++++ msvc-14/msvc-14u2-64 | 35 ++++++++ msvc-14u2 | 32 -------- msvc-14u2-64 | 32 -------- msvc-cl-common | 152 ---------------------------------- msvc-common | 50 ------------ msvc-common/msvc-cl-common | 154 +++++++++++++++++++++++++++++++++++ msvc-common/msvc-common | 56 +++++++++++++ msvc-common/msvc-lib-common | 100 +++++++++++++++++++++++ msvc-common/msvc-link-common | 188 +++++++++++++++++++++++++++++++++++++++++++ msvc-common/msvc-mt-common | 111 +++++++++++++++++++++++++ msvc-common/msvc-rc-common | 123 ++++++++++++++++++++++++++++ msvc-dispatch | 71 ++++++++++++++++ msvc-lib-common | 99 ----------------------- msvc-link-common | 186 ------------------------------------------ msvc-mt-common | 109 ------------------------- msvc-rc-common | 121 ---------------------------- mt-11 | 6 -- mt-11-32 | 10 +++ mt-12 | 6 -- mt-12-32 | 10 +++ mt-14 | 6 -- mt-14u0-32 | 10 +++ mt-14u2 | 6 -- mt-14u2-32 | 10 +++ mt-14u2-64 | 10 +++ rc-11 | 6 -- rc-11-32 | 10 +++ rc-12 | 6 -- rc-12-32 | 10 +++ rc-14 | 6 -- rc-14u0-32 | 10 +++ rc-14u2 | 6 -- rc-14u2-32 | 10 +++ rc-14u2-64 | 10 +++ 69 files changed, 1214 insertions(+), 979 deletions(-) delete mode 100755 cl-11 create mode 100755 cl-11-32 delete mode 100755 cl-12 create mode 100755 cl-12-32 delete mode 100755 cl-14 create mode 100755 cl-14u0-32 delete mode 100755 cl-14u2 create mode 100755 cl-14u2-32 create mode 100755 cl-14u2-64 delete mode 100755 lib-11 create mode 100755 lib-11-32 delete mode 100755 lib-12 create mode 100755 lib-12-32 delete mode 100755 lib-14 create mode 100755 lib-14u0-32 delete mode 100755 lib-14u2 create mode 100755 lib-14u2-32 create mode 100755 lib-14u2-64 delete mode 100755 link-11 create mode 100755 link-11-32 delete mode 100755 link-12 create mode 100755 link-12-32 delete mode 100755 link-14 create mode 100755 link-14u0-32 delete mode 100755 link-14u2 create mode 100755 link-14u2-32 create mode 100755 link-14u2-64 delete mode 100755 msvc-11 create mode 100755 msvc-11/msvc-11-32 delete mode 100755 msvc-12 create mode 100755 msvc-12/msvc-12-32 delete mode 100755 msvc-14 create mode 100755 msvc-14/msvc-14u0-32 create mode 100755 msvc-14/msvc-14u2-32 create mode 100755 msvc-14/msvc-14u2-64 delete mode 100755 msvc-14u2 delete mode 100755 msvc-14u2-64 delete mode 100755 msvc-cl-common delete mode 100755 msvc-common create mode 100755 msvc-common/msvc-cl-common create mode 100755 msvc-common/msvc-common create mode 100755 msvc-common/msvc-lib-common create mode 100755 msvc-common/msvc-link-common create mode 100755 msvc-common/msvc-mt-common create mode 100755 msvc-common/msvc-rc-common create mode 100755 msvc-dispatch delete mode 100755 msvc-lib-common delete mode 100755 msvc-link-common delete mode 100755 msvc-mt-common delete mode 100755 msvc-rc-common delete mode 100755 mt-11 create mode 100755 mt-11-32 delete mode 100755 mt-12 create mode 100755 mt-12-32 delete mode 100755 mt-14 create mode 100755 mt-14u0-32 delete mode 100755 mt-14u2 create mode 100755 mt-14u2-32 create mode 100755 mt-14u2-64 delete mode 100755 rc-11 create mode 100755 rc-11-32 delete mode 100755 rc-12 create mode 100755 rc-12-32 delete mode 100755 rc-14 create mode 100755 rc-14u0-32 delete mode 100755 rc-14u2 create mode 100755 rc-14u2-32 create mode 100755 rc-14u2-64 diff --git a/INSTALL b/INSTALL index b51a1d8..7b8cadd 100644 --- a/INSTALL +++ b/INSTALL @@ -31,7 +31,11 @@ example: export PATH=$HOME/msvc-linux:$PATH Alternatively, if you have something like ~/bin/ that is already in PATH, then -you can simply add symlinks to the scripts. +you can simply add symlinks to the scripts. This way you can also choose +shorter tool names, for example: + +for t in cl link lib mt rc; do \ + ln -s .../msvc-linux/$t-14u2-64 ~/bin/$t-14; done Install Wine diff --git a/cl-11 b/cl-11 deleted file mode 100755 index 7f6b85e..0000000 --- a/cl-11 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-11" -source "$src/msvc-cl-common" diff --git a/cl-11-32 b/cl-11-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/cl-11-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-12 b/cl-12 deleted file mode 100755 index 29490fc..0000000 --- a/cl-12 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-12" -source "$src/msvc-cl-common" diff --git a/cl-12-32 b/cl-12-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/cl-12-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-14 b/cl-14 deleted file mode 100755 index 9190b9a..0000000 --- a/cl-14 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14" -source "$src/msvc-cl-common" diff --git a/cl-14u0-32 b/cl-14u0-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/cl-14u0-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-14u2 b/cl-14u2 deleted file mode 100755 index 5896edc..0000000 --- a/cl-14u2 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14u2" -source "$src/msvc-cl-common" diff --git a/cl-14u2-32 b/cl-14u2-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/cl-14u2-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-14u2-64 b/cl-14u2-64 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/cl-14u2-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-11 b/lib-11 deleted file mode 100755 index 87d3625..0000000 --- a/lib-11 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-11" -source "$src/msvc-lib-common" diff --git a/lib-11-32 b/lib-11-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/lib-11-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-12 b/lib-12 deleted file mode 100755 index f047635..0000000 --- a/lib-12 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-12" -source "$src/msvc-lib-common" diff --git a/lib-12-32 b/lib-12-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/lib-12-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-14 b/lib-14 deleted file mode 100755 index 050a9bc..0000000 --- a/lib-14 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14" -source "$src/msvc-lib-common" diff --git a/lib-14u0-32 b/lib-14u0-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/lib-14u0-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-14u2 b/lib-14u2 deleted file mode 100755 index 2d1c5c3..0000000 --- a/lib-14u2 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14u2" -source "$src/msvc-lib-common" diff --git a/lib-14u2-32 b/lib-14u2-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/lib-14u2-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-14u2-64 b/lib-14u2-64 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/lib-14u2-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-11 b/link-11 deleted file mode 100755 index 14267fc..0000000 --- a/link-11 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-11" -source "$src/msvc-link-common" diff --git a/link-11-32 b/link-11-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/link-11-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-12 b/link-12 deleted file mode 100755 index d901cd3..0000000 --- a/link-12 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-12" -source "$src/msvc-link-common" diff --git a/link-12-32 b/link-12-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/link-12-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-14 b/link-14 deleted file mode 100755 index 07e24db..0000000 --- a/link-14 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14" -source "$src/msvc-link-common" diff --git a/link-14u0-32 b/link-14u0-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/link-14u0-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-14u2 b/link-14u2 deleted file mode 100755 index 38f8cde..0000000 --- a/link-14u2 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14u2" -source "$src/msvc-link-common" diff --git a/link-14u2-32 b/link-14u2-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/link-14u2-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-14u2-64 b/link-14u2-64 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/link-14u2-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-11 b/msvc-11 deleted file mode 100755 index e226f5c..0000000 --- a/msvc-11 +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/bin/env bash - -# MSVC 11 32-bit setup/configuration. -# -# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. -# - -# SDK -# -SDK="C:\\Program Files (x86)\\Windows Kits\\8.0" -SDKBIN="$SDK\\bin\\x86" - -INCLUDE="$SDK\\include\\shared;$SDK\\include\\um;$SDK\\include\\winrt" -LIB="$SDK\\lib\\win8\\um\\x86" - -# VC -# -VC="C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC" -VCBIN="$VC\\bin" -VCDLL="$VC\\bin" - -INCLUDE="$VC\\include;$INCLUDE" -LIB="$VC\\lib;$LIB" diff --git a/msvc-11/msvc-11-32 b/msvc-11/msvc-11-32 new file mode 100755 index 0000000..6db77cc --- /dev/null +++ b/msvc-11/msvc-11-32 @@ -0,0 +1,26 @@ +#! /usr/bin/env bash + +# MSVC 11 32-bit setup/configuration. +# +# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. +# +if [ -z "$MSVC_INSTALLDIR" ]; then + MSVC_INSTALLDIR="Microsoft Visual Studio 11.0" +fi + +# SDK +# +SDK="C:\\Program Files (x86)\\Windows Kits\\8.0" +SDKBIN="$SDK\\bin\\x86" + +INCLUDE="$SDK\\include\\shared;$SDK\\include\\um;$SDK\\include\\winrt" +LIB="$SDK\\lib\\win8\\um\\x86" + +# VC +# +VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC" +VCBIN="$VC\\bin" +VCDLL="$VC\\bin" + +INCLUDE="$VC\\include;$INCLUDE" +LIB="$VC\\lib;$LIB" diff --git a/msvc-12 b/msvc-12 deleted file mode 100755 index e4d9500..0000000 --- a/msvc-12 +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/bin/env bash - -# MSVC 12 32-bit setup/configuration (note: using 64-to-32 cross-compiler). -# -# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. -# - -# SDK -# -SDK="C:\\Program Files (x86)\\Windows Kits\\8.1" -SDKBIN="$SDK\\bin\\x86" - -INCLUDE="$SDK\\include\\shared;$SDK\\include\\um;$SDK\\include\\winrt" -LIB="$SDK\\lib\\winv6.3\\um\\x86" - -# VC -# -VC="C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC" -VCBIN="$VC\\bin\\amd64_x86" -VCDLL="$VC\\bin\\amd64" - -INCLUDE="$VC\\include;$INCLUDE" -LIB="$VC\\lib;$LIB" diff --git a/msvc-12/msvc-12-32 b/msvc-12/msvc-12-32 new file mode 100755 index 0000000..6d77ff6 --- /dev/null +++ b/msvc-12/msvc-12-32 @@ -0,0 +1,26 @@ +#! /usr/bin/env bash + +# MSVC 12 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 12.0" +fi + +# SDK +# +SDK="C:\\Program Files (x86)\\Windows Kits\\8.1" +SDKBIN="$SDK\\bin\\x86" + +INCLUDE="$SDK\\include\\shared;$SDK\\include\\um;$SDK\\include\\winrt" +LIB="$SDK\\lib\\winv6.3\\um\\x86" + +# VC +# +VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC" +VCBIN="$VC\\bin\\amd64_x86" +VCDLL="$VC\\bin\\amd64" + +INCLUDE="$VC\\include;$INCLUDE" +LIB="$VC\\lib;$LIB" diff --git a/msvc-14 b/msvc-14 deleted file mode 100755 index 77e2259..0000000 --- a/msvc-14 +++ /dev/null @@ -1,31 +0,0 @@ -#! /usr/bin/env bash - -# MSVC 14 32-bit setup/configuration (note: using 64-to-32 cross-compiler). -# -# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. -# - -# SDK -# -SDK="C:\\Program Files (x86)\\Windows Kits\\8.1" -SDKBIN="$SDK\\bin\\x86" - -INCLUDE="$SDK\\include\\shared;$SDK\\include\\um;$SDK\\include\\winrt" -LIB="$SDK\\lib\\winv6.3\\um\\x86" - -# CRT -# -CRT="C:\\Program Files (x86)\\Windows Kits\\10" -CRTVER="10.0.10150.0" - -INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE" -LIB="$CRT\\lib\\$CRTVER\\ucrt\\x86;$LIB" - -# VC -# -VC="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC" -VCBIN="$VC\\bin\\amd64_x86" -VCDLL="$VC\\bin\\amd64" - -INCLUDE="$VC\\include;$INCLUDE" -LIB="$VC\\lib;$LIB" diff --git a/msvc-14/msvc-14u0-32 b/msvc-14/msvc-14u0-32 new file mode 100755 index 0000000..ec7b82b --- /dev/null +++ b/msvc-14/msvc-14u0-32 @@ -0,0 +1,34 @@ +#! /usr/bin/env bash + +# MSVC 14 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 14.0" +fi + +# SDK +# +SDK="C:\\Program Files (x86)\\Windows Kits\\8.1" +SDKBIN="$SDK\\bin\\x86" + +INCLUDE="$SDK\\include\\shared;$SDK\\include\\um;$SDK\\include\\winrt" +LIB="$SDK\\lib\\winv6.3\\um\\x86" + +# CRT +# +CRT="C:\\Program Files (x86)\\Windows Kits\\10" +CRTVER="10.0.10150.0" + +INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE" +LIB="$CRT\\lib\\$CRTVER\\ucrt\\x86;$LIB" + +# VC +# +VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC" +VCBIN="$VC\\bin\\amd64_x86" +VCDLL="$VC\\bin\\amd64" + +INCLUDE="$VC\\include;$INCLUDE" +LIB="$VC\\lib;$LIB" diff --git a/msvc-14/msvc-14u2-32 b/msvc-14/msvc-14u2-32 new file mode 100755 index 0000000..0d54bb7 --- /dev/null +++ b/msvc-14/msvc-14u2-32 @@ -0,0 +1,35 @@ +#! /usr/bin/env bash + +# MSVC 14U2 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 14.0" +fi + +# SDK +# +SDK="C:\\Program Files (x86)\\Windows Kits\\10" +SDKBIN="$SDK\\bin\\x86" +SDKVER="10.0.10586.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.10586.0" + +INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE" +LIB="$CRT\\lib\\$CRTVER\\ucrt\\x86;$LIB" + +# VC +# +VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC" +VCBIN="$VC\\bin\\amd64_x86" +VCDLL="$VC\\bin\\amd64" + +INCLUDE="$VC\\include;$INCLUDE" +LIB="$VC\\lib;$LIB" diff --git a/msvc-14/msvc-14u2-64 b/msvc-14/msvc-14u2-64 new file mode 100755 index 0000000..5ac895b --- /dev/null +++ b/msvc-14/msvc-14u2-64 @@ -0,0 +1,35 @@ +#! /usr/bin/env bash + +# MSVC 14U2 64-bit setup/configuration. +# +# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. +# +if [ -z "$MSVC_INSTALLDIR" ]; then + MSVC_INSTALLDIR="Microsoft Visual Studio 14.0" +fi + +# SDK +# +SDK="C:\\Program Files (x86)\\Windows Kits\\10" +SDKBIN="$SDK\\bin\\x64" +SDKVER="10.0.10586.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.10586.0" + +INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE" +LIB="$CRT\\lib\\$CRTVER\\ucrt\\x64;$LIB" + +# VC +# +VC="C:\\Program Files (x86)\\$MSVC_INSTALLDIR\\VC" +VCBIN="$VC\\bin\\amd64" +VCDLL="$VC\\bin\\amd64" + +INCLUDE="$VC\\include;$INCLUDE" +LIB="$VC\\lib\\amd64;$LIB" diff --git a/msvc-14u2 b/msvc-14u2 deleted file mode 100755 index 8792e5d..0000000 --- a/msvc-14u2 +++ /dev/null @@ -1,32 +0,0 @@ -#! /usr/bin/env bash - -# MSVC 14U2 32-bit setup/configuration (note: using 64-to-32 cross-compiler). -# -# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. -# - -# SDK -# -SDK="C:\\Program Files (x86)\\Windows Kits\\10" -SDKBIN="$SDK\\bin\\x86" -SDKVER="10.0.10586.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.10586.0" - -INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE" -LIB="$CRT\\lib\\$CRTVER\\ucrt\\x86;$LIB" - -# VC -# -VC="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC" -VCBIN="$VC\\bin\\amd64_x86" -VCDLL="$VC\\bin\\amd64" - -INCLUDE="$VC\\include;$INCLUDE" -LIB="$VC\\lib;$LIB" diff --git a/msvc-14u2-64 b/msvc-14u2-64 deleted file mode 100755 index 20b3405..0000000 --- a/msvc-14u2-64 +++ /dev/null @@ -1,32 +0,0 @@ -#! /usr/bin/env bash - -# MSVC 14U2 64-bit setup/configuration. -# -# Should set the SDKBIN, VCBIN, VCDLL, INCLUDE, and LIB variables. -# - -# SDK -# -SDK="C:\\Program Files (x86)\\Windows Kits\\10" -SDKBIN="$SDK\\bin\\x64" -SDKVER="10.0.10586.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.10586.0" - -INCLUDE="$CRT\\include\\$CRTVER\\ucrt;$INCLUDE" -LIB="$CRT\\lib\\$CRTVER\\ucrt\\x64;$LIB" - -# VC -# -VC="C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC" -VCBIN="$VC\\bin\\amd64" -VCDLL="$VC\\bin\\amd64" - -INCLUDE="$VC\\include;$INCLUDE" -LIB="$VC\\lib\\amd64;$LIB" diff --git a/msvc-cl-common b/msvc-cl-common deleted file mode 100755 index 597b0e5..0000000 --- a/msvc-cl-common +++ /dev/null @@ -1,152 +0,0 @@ -#! /usr/bin/env bash - -# Common cl.exe driver that expects the VCBIN, INCLUDE, and, if running as a -# linker, SDKBIN, LIB variables to be set for the specific MSVC -# version/configuration. - -trap "{ exit 1; }" ERR -set -o errtrace # Trap in functions. - -function info () { echo "$*" 1>&2; } -function error () { info "$*"; exit 1; } - -source $(dirname $(realpath ${BASH_SOURCE[0]}))/msvc-common - -# File descriptor where the diagnostics will be sent. Unless STDOUT is used -# for something else (e.g., /E), cl.exe sends the diagnostics there. -# Otherwise it goes to STDERR. -# -diag=1 - -# Translate absolute paths from POSIX to Windows. Use bash array to store -# arguments in case they contain spaces. -# -# This needs to be done for both certain option values and arguments. -# Arguments are tricky in that unless we recognize every option, and option -# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics -# that we are going to use here is that if the argument starts with / and -# contains at least one more /, then we consider it an argument. Otherwise -- -# an options. We will also explicitly recognize certain options, like /D, -# which may not fit this scheme well. -# -# Note that the order of the cases is important. Specifically, we want, e.g., -# /D before /D*. -# -# Note also that cl.exe options are case-sensitive. -# -args=() - -while [ $# -gt 0 ]; do - case $1 in - - # /I , /AI - # - [/-]I | \ - [/-]AI) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$(translate $1)") - shift - ;; - - # /I - # - [/-]I*) - args=("${args[@]}" "$(split_translate 2 $1)") - shift - ;; - - # /AI - # - [/-]AI*) - args=("${args[@]}" "$(split_translate 3 $1)") - shift - ;; - - # /F*: - # - [/-]F[adeimoprR]:) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$(translate $1)") - shift - ;; - - # /F*, /T{p,c}, /Yu. - # - [/-]F[adeimoprRUI]* | \ - [/-]Tp* | \ - [/-]Tc* | \ - [/-]Yu*) - args=("${args[@]}" "$(split_translate 3 $1)") - shift - ;; - - # /doc - # - [/-]doc*) - args=("${args[@]}" "$(split_translate 4 $1)") - shift - ;; - - # @ - # - @*) - args=("${args[@]}" "$(split_translate 1 $1)") - shift - ;; - - # Handle other options with separate values. This makes sure we don't try - # to path-translate them. - # - [/-]D | \ - [/-]U | \ - [/-]link) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$1") - shift - ;; - - # Handle other options with combined values that could possibly be - # interpreted as paths, for example /DFOO=foo/bar. - # - [/-]D* | \ - [/-]V* | \ - [/-]Yl*) - args=("${args[@]}" "$1") - shift - ;; - - # Detect /E and /EP -- they change where the diagnostics is sent. - # - [/-]E | \ - [/-]EP) - diag=2 - args=("${args[@]}" "$1") - shift - ;; - - # Option or argument. - # - *) - # If contains at least two slashes, treat it as a path. - # - if [[ "$1" == /*/* ]]; then - args=("${args[@]}" "$(translate $1)") - else - args=("${args[@]}" "$1") - fi - shift - ;; - esac -done - -export INCLUDE -export LIB - -# The linker may need to run mt.exe which is in the SDK. -# -export WINEPATH="$VCBIN;$VCDLL;$SDKBIN" - -msvc_exec $diag "$VCBIN\\cl.exe" "${args[@]}" diff --git a/msvc-common b/msvc-common deleted file mode 100755 index 479ec3f..0000000 --- a/msvc-common +++ /dev/null @@ -1,50 +0,0 @@ -#! /usr/bin/env bash - -# Note: shouldn't be executed directly. - -# Translate absolute POSIX path to a Windows path with winepath. -# -function translate () # -{ - if [[ "$1" == /* ]]; then - winepath -w "$1" - else - echo "$1" - fi -} - -# Split the combined option and path value, translate the path component -# to a Windows path if absolute, then recombine the option and path. -# -function split_translate () # -{ - local o="${2:0:$1}" # First characters from $1. - local v="${2:$1}" # The rest. - - # If the path is absolute, map it with winepath. - # - if [[ "$v" == /* ]]; then - v="$(winepath -w "$v")" - fi - - echo "$o$v" -} - -# The argument should be 1 or 2. It indicates whether the diagnostics -# is sent to stdout (1) or stderr (2). -# -function msvc_exec () # ... -{ - local diag="$1" - shift - - # Suppress Wine noise. - # - export WINEDEBUG=fixme-all - - # Filter diagnostics output replacing absolute Windows paths with their - # POSIX mapping. If is 1 then both stdout and stderr output are read - # and filtered. - # - "$(dirname $(realpath ${BASH_SOURCE[0]}))/msvc-filter" "$diag" wine "$@" -} diff --git a/msvc-common/msvc-cl-common b/msvc-common/msvc-cl-common new file mode 100755 index 0000000..57d389e --- /dev/null +++ b/msvc-common/msvc-cl-common @@ -0,0 +1,154 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_dir must be set. + +# Common cl.exe driver that expects the VCBIN, INCLUDE, and, if running as a +# linker, SDKBIN, LIB variables to be set for the specific MSVC +# version/configuration. + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + +source "$src_dir/msvc-common/msvc-common" + +# File descriptor where the diagnostics will be sent. Unless STDOUT is used +# for something else (e.g., /E), cl.exe sends the diagnostics there. +# Otherwise it goes to STDERR. +# +diag=1 + +# Translate absolute paths from POSIX to Windows. Use bash array to store +# arguments in case they contain spaces. +# +# This needs to be done for both certain option values and arguments. +# Arguments are tricky in that unless we recognize every option, and option +# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics +# that we are going to use here is that if the argument starts with / and +# contains at least one more /, then we consider it an argument. Otherwise -- +# an options. We will also explicitly recognize certain options, like /D, +# which may not fit this scheme well. +# +# Note that the order of the cases is important. Specifically, we want, e.g., +# /D before /D*. +# +# Note also that cl.exe options are case-sensitive. +# +args=() + +while [ $# -gt 0 ]; do + case $1 in + + # /I , /AI + # + [/-]I | \ + [/-]AI) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$(translate $1)") + shift + ;; + + # /I + # + [/-]I*) + args=("${args[@]}" "$(split_translate 2 $1)") + shift + ;; + + # /AI + # + [/-]AI*) + args=("${args[@]}" "$(split_translate 3 $1)") + shift + ;; + + # /F*: + # + [/-]F[adeimoprR]:) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$(translate $1)") + shift + ;; + + # /F*, /T{p,c}, /Yu. + # + [/-]F[adeimoprRUI]* | \ + [/-]Tp* | \ + [/-]Tc* | \ + [/-]Yu*) + args=("${args[@]}" "$(split_translate 3 $1)") + shift + ;; + + # /doc + # + [/-]doc*) + args=("${args[@]}" "$(split_translate 4 $1)") + shift + ;; + + # @ + # + @*) + args=("${args[@]}" "$(split_translate 1 $1)") + shift + ;; + + # Handle other options with separate values. This makes sure we don't try + # to path-translate them. + # + [/-]D | \ + [/-]U | \ + [/-]link) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$1") + shift + ;; + + # Handle other options with combined values that could possibly be + # interpreted as paths, for example /DFOO=foo/bar. + # + [/-]D* | \ + [/-]V* | \ + [/-]Yl*) + args=("${args[@]}" "$1") + shift + ;; + + # Detect /E and /EP -- they change where the diagnostics is sent. + # + [/-]E | \ + [/-]EP) + diag=2 + args=("${args[@]}" "$1") + shift + ;; + + # Option or argument. + # + *) + # If contains at least two slashes, treat it as a path. + # + if [[ "$1" == /*/* ]]; then + args=("${args[@]}" "$(translate $1)") + else + args=("${args[@]}" "$1") + fi + shift + ;; + esac +done + +export INCLUDE +export LIB + +# The linker may need to run mt.exe which is in the SDK. +# +export WINEPATH="$VCBIN;$VCDLL;$SDKBIN" + +msvc_exec $diag "$VCBIN\\cl.exe" "${args[@]}" diff --git a/msvc-common/msvc-common b/msvc-common/msvc-common new file mode 100755 index 0000000..d571f87 --- /dev/null +++ b/msvc-common/msvc-common @@ -0,0 +1,56 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_dir must be set. + +# Translate absolute POSIX path to a Windows path with winepath. +# +function translate () # +{ + if [[ "$1" == /* ]]; then + winepath -w "$1" + else + echo "$1" + fi +} + +# Split the combined option and path value, translate the path component +# to a Windows path if absolute, then recombine the option and path. +# +function split_translate () # +{ + local o="${2:0:$1}" # First characters from $1. + local v="${2:$1}" # The rest. + + # If the path is absolute, map it with winepath. + # + if [[ "$v" == /* ]]; then + v="$(winepath -w "$v")" + fi + + echo "$o$v" +} + +# The argument should be 1 or 2. It indicates whether the diagnostics +# is sent to stdout (1) or stderr (2). +# +function msvc_exec () # ... +{ + local diag="$1" + shift + + # Suppress Wine noise. + # + export WINEDEBUG=fixme-all + + # Set an alternative .wine directory if requested. + # + if [ -n "$MSVC_WINEPREFIX" ]; then + export WINEPREFIX="$MSVC_WINEPREFIX" + fi + + # Filter diagnostics output replacing absolute Windows paths with their + # POSIX mapping. If is 1 then both stdout and stderr output are read + # and filtered. + # + "$src_dir/msvc-filter" "$diag" wine "$@" +} diff --git a/msvc-common/msvc-lib-common b/msvc-common/msvc-lib-common new file mode 100755 index 0000000..a38bcd3 --- /dev/null +++ b/msvc-common/msvc-lib-common @@ -0,0 +1,100 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_dir must be set. + +# Common lib.exe driver that expects the VCBIN and LIB variables to be set for +# the specific MSVC version/configuration. +# +# It's not clear/documented why we need LIB or what the /LIBPATH option is +# for. Perhaps for link-time code generation (/LTCG). + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + +source "$src_dir/msvc-common/msvc-common" + +# Translate absolute paths from POSIX to Windows. Use bash array to store +# arguments in case they contain spaces. +# +# This needs to be done for both certain option values and arguments. +# Arguments are tricky in that unless we recognize every option, and option +# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics +# that we are going to use here is that if the argument starts with / and +# contains at least one more /, then we consider it an argument. Otherwise -- +# an options. We will also explicitly recognize certain options which may +# not fit this scheme well. +# +args=() + +while [ $# -gt 0 ]; do + case ${1^^} in # Uppercase for case-insensitive comparison. + + # /DEF[:filename] + # /OUT:filename + # + [/-]DEF:* | \ + [/-]OUT:*) + args=("${args[@]}" "$(split_translate 5 $1)") + shift + ;; + + # /LIST[:filename] + # /NAME:filename + # + [/-]LIST:* | \ + [/-]NAME:*) + args=("${args[@]}" "$(split_translate 6 $1)") + shift + ;; + + # /LIBPATH:dir + # + [/-]LIBPATH:*) + args=("${args[@]}" "$(split_translate 9 $1)") + shift + ;; + + # Handle other options with separate values. This makes sure we don't try + # to path-translate them. + # + + # Aren't any. + + # Handle other options with combined values that could possibly be + # interpreted as paths, for example /EXTRACT:foo/bar.obj. + # + [/-]EXPORT:* | \ + [/-]EXTRACT:* | \ + [/-]INCLUDE:* | \ + [/-]REMOVE:*) + args=("${args[@]}" "$1") + shift + ;; + + # Option or argument. + # + *) + # If contains at least two slashes, treat it as a path. + # + if [[ "$1" == /*/* ]]; then + args=("${args[@]}" "$(translate $1)") + else + args=("${args[@]}" "$1") + fi + shift + ;; + esac +done + +export LIB + +# link.exe may need to run other tools (/LTCG). +# +export WINEPATH="$VCBIN;$VCDLL;$SDKBIN" + +# lib.exe always sends diagnostics to stdout. +# +msvc_exec 1 "$VCBIN\\lib.exe" "${args[@]}" diff --git a/msvc-common/msvc-link-common b/msvc-common/msvc-link-common new file mode 100755 index 0000000..931a251 --- /dev/null +++ b/msvc-common/msvc-link-common @@ -0,0 +1,188 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_exe and src_dir must be set. + +# Common link.exe driver that expects the VCBIN, SDKBIN, and LIB variables to +# be set for the specific MSVC version/configuration. + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + +source "$src_dir/msvc-common/msvc-common" + +# Translate absolute paths from POSIX to Windows. Use bash array to store +# arguments in case they contain spaces. +# +# This needs to be done for both certain option values and arguments. +# Arguments are tricky in that unless we recognize every option, and option +# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics +# that we are going to use here is that if the argument starts with / and +# contains at least one more /, then we consider it an argument. Otherwise -- +# an options. We will also explicitly recognize certain options which may +# not fit this scheme well. +# +# Note that link.exe /? is missing some options that are documented in MSDN. +# +args=() + +while [ $# -gt 0 ]; do + case ${1^^} in # Uppercase for case-insensitive comparison. + + # @@ TODO: handle the rest/obscure options. + # + # @file + # /ASSEMBLYLINKRESOURCE:filename + # /ASSEMBLYMODULE:filename + # /ASSEMBLYRESOURCE:filename[,[name][,PRIVATE]] + # /BASE:{address[,size]|@filename,key} + #+ /DEF:filename + #+ /DEFAULTLIB:library + #+ /DELAYLOAD:dll + # /FASTGENPROFILE:PGD=filename|... + # /GENPROFILE:PGD=filename|... + #+ /IDLOUT:filename + #+ /IMPLIB:filename + #+ /KEYFILE:filename + #+ /LIBPATH:dir + #+ /MANIFESTFILE:filename + #+ /MANIFESTINPUT:filename + #+ /MAP:filename + #+ /MIDL:@commandfile + #+ /NODEFAULTLIB:library + #+ /ORDER:@filename + #+ /OUT:filename + #+ /PDB:filename + #+ /PDBALTPATH:filename + #+ /PDBSTRIPPED:filename + #+ /PGD:filename + #+ /STUB:filename + #+ /TLBOUT:filename + # /USEPROFILE:PGD=filename + #+ /WHOLEARCHIVE:library + #+ /WINMDFILE:filename + # /WINMDKEYCONTAINER:name + #+ /WINMDKEYFILE:filename + + [/-]DEF:* | \ + [/-]MAP:* | \ + [/-]OUT:* | \ + [/-]PDB:* | \ + [/-]PGD:*) + args=("${args[@]}" "$(split_translate 5 $1)") + shift + ;; + + [/-]STUB:*) + args=("${args[@]}" "$(split_translate 6 $1)") + shift + ;; + + [/-]MIDL:@*) + args=("${args[@]}" "$(split_translate 7 $1)") + shift + ;; + + [/-]IMPLIB:* | \ + [/-]IDLOUT:* | \ + [/-]TLBOUT:* | \ + [/-]ORDER:@*) + args=("${args[@]}" "$(split_translate 8 $1)") + shift + ;; + + [/-]KEYFILE:* | \ + [/-]LIBPATH:*) + args=("${args[@]}" "$(split_translate 9 $1)") + shift + ;; + + [/-]DELAYLOAD:* | \ + [/-]WINMDFILE:*) + args=("${args[@]}" "$(split_translate 11 $1)") + shift + ;; + + [/-]DEFAULTLIB:* | \ + [/-]PDBALTPATH:*) + args=("${args[@]}" "$(split_translate 12 $1)") + shift + ;; + + [/-]PDBSTRIPPED:*) + args=("${args[@]}" "$(split_translate 13 $1)") + shift + ;; + + [/-]NODEFAULTLIB:* | \ + [/-]MANIFESTFILE:* | \ + [/-]WHOLEARCHIVE:* | \ + [/-]WINMDKEYFILE:*) + args=("${args[@]}" "$(split_translate 14 $1)") + shift + ;; + + [/-]MANIFESTINPUT:*) + args=("${args[@]}" "$(split_translate 15 $1)") + shift + ;; + + # Handle other options with separate values. This makes sure we don't try + # to path-translate them. + # + + # Aren't any. + + # Handle other options with combined values that could possibly be + # interpreted as paths. + # + # /ENTRY:symbol + # /EXPORT:symbol + # /INCLUDE:symbol + # /KEYCONTAINER:name + # /MANIFESTDEPENDENCY:manifest dependency + # /MANIFESTUAC[:{NO|UAC fragment}] + # /MAPINFO:{EXPORTS} + # /MERGE:from=to + # /SECTION:name,[[!]{DEKPRSW}][,ALIGN=#] + # + [/-]ENTRY:* | \ + [/-]EXPORT:* | \ + [/-]INCLUDE:* | \ + [/-]KEYCONTAINER:* | \ + [/-]MANIFESTDEPENDENCY:* | \ + [/-]MANIFESTUAC:* | \ + [/-]MAPINFO:* | \ + [/-]MERGE:* | \ + [/-]SECTION:* | \ + [/-]REMOVE:*) + args=("${args[@]}" "$1") + shift + ;; + + # Option or argument. + # + *) + # If contains at least two slashes, treat it as a path. + # + if [[ "$1" == /*/* ]]; then + args=("${args[@]}" "$(translate $1)") + else + args=("${args[@]}" "$1") + fi + shift + ;; + esac +done + +export LIB + +# link.exe may need to run mt.exe which is in the SDK. +# +export WINEPATH="$VCBIN;$VCDLL;$SDKBIN" + +# link.exe always sends diagnostics to stdout. +# +msvc_exec 1 "$VCBIN\\link.exe" "${args[@]}" diff --git a/msvc-common/msvc-mt-common b/msvc-common/msvc-mt-common new file mode 100755 index 0000000..305d98e --- /dev/null +++ b/msvc-common/msvc-mt-common @@ -0,0 +1,111 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_dir must be set. + +# Common mt.exe driver that expects the SDKBIN variable to be set for the +# specific MSVC version/configuration. + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + +source "$src_dir/msvc-common/msvc-common" + +# Translate absolute paths from POSIX to Windows. Use bash array to store +# arguments in case they contain spaces. This needs to be done for both +# certain option values and arguments. +# +# Note that we assume mt.exe options start with '-' and are case-sensitive. +# +args=() + +while [ $# -gt 0 ]; do + case $1 in + + # @@ TODO: handle for [;[#]] + # + # -rgs: + # -tlb: + # -dll: + # -replacements: + # -managedassemblyname: + # -out: + # -inputresource:[;[#]] + # -outputresource:[;[#]] + # -updateresource:[;[#]] + # -hashupdate[:] + # -validate_file_hashes: + + -rgs:* | \ + -tlb:* | \ + -dll:* | \ + -out:*) + args=("${args[@]}" "$(split_translate 5 $1)") + shift + ;; + + -hashupdate:*) + args=("${args[@]}" "$(split_translate 12 $1)") + shift + ;; + + -replacements:*) + args=("${args[@]}" "$(split_translate 14 $1)") + shift + ;; + + -inputresource:*) + args=("${args[@]}" "$(split_translate 15 $1)") + shift + ;; + + -outputresource:* | \ + -updateresource:*) + args=("${args[@]}" "$(split_translate 16 $1)") + shift + ;; + + -managedassemblyname:*) + args=("${args[@]}" "$(split_translate 21 $1)") + shift + ;; + + -validate_file_hashes:*) + args=("${args[@]}" "$(split_translate 22 $1)") + shift + ;; + + # Handle other options with separate values. This makes sure we don't try + # to path-translate them. + # + + # None. + + # Handle other options with combined values that could possibly be + # interpreted as paths. + # + -identity:*) + args=("${args[@]}" "$1") + shift + ;; + + # Option or argument. + # + *) + # If starts with a slash, treat it as a path (options start with dash). + # + if [[ "$1" == /* ]]; then + args=("${args[@]}" "$(translate $1)") + else + args=("${args[@]}" "$1") + fi + shift + ;; + esac +done + +# mt.exe always sends diagnostics to stdout. +# +msvc_exec 1 "$SDKBIN\\mt.exe" "${args[@]}" diff --git a/msvc-common/msvc-rc-common b/msvc-common/msvc-rc-common new file mode 100755 index 0000000..ca986b4 --- /dev/null +++ b/msvc-common/msvc-rc-common @@ -0,0 +1,123 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_dir must be set. + +# Common rc.exe driver that expects the SDKBIN and INCLUDE variables to be set +# for the specific MSVC version/configuration. + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + +source "$src_dir/msvc-common/msvc-common" + +# Translate absolute paths from POSIX to Windows. Use bash array to store +# arguments in case they contain spaces. +# +# This needs to be done for both certain option values and arguments. +# Arguments are tricky in that unless we recognize every option, and option +# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics +# that we are going to use here is that if the argument starts with / and +# contains at least one more /, then we consider it an argument. Otherwise -- +# an options. We will also explicitly recognize certain options which may not +# fit this scheme well. +# +# Note that the order of the cases is important. Specifically, we want, e.g., +# /D before /D*. +# +# Note that rc.exe /? is missing some options that are documented in MSDN. +# +args=() + +while [ $# -gt 0 ]; do + case ${1^^} in # Uppercase for case-insensitive comparison. + + # /I + # + [/-]I) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$(translate $1)") + shift + ;; + + # /I + # + [/-]I*) + args=("${args[@]}" "$(split_translate 2 $1)") + shift + ;; + + # /f[om] + # + [/-]F[OM]) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$(translate $1)") + shift + ;; + + # /f[om] + # + [/-]F[OM]*) + args=("${args[@]}" "$(split_translate 3 $1)") + shift + ;; + + # /q + # + [/-]Q) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$(translate $1)") + shift + ;; + + # /q + # + [/-]Q*) + args=("${args[@]}" "$(split_translate 2 $1)") + shift + ;; + + # Handle other options with separate values. This makes sure we don't try + # to path-translate them. + # + [/-]D | \ + [/-]U) + args=("${args[@]}" "$1") + shift + args=("${args[@]}" "$1") + shift + ;; + + # Handle other options with combined values that could possibly be + # interpreted as paths, for example /DFOO=foo/bar. + # + [/-]D*) + args=("${args[@]}" "$1") + shift + ;; + + # Option or argument. + # + *) + # If contains at least two slashes, treat it as a path. + # + if [[ "$1" == /*/* ]]; then + args=("${args[@]}" "$(translate $1)") + else + args=("${args[@]}" "$1") + fi + shift + ;; + esac +done + +export INCLUDE + +# rc.exe always sends diagnostics to stdout. +# +msvc_exec 1 "$SDKBIN\\rc.exe" "${args[@]}" diff --git a/msvc-dispatch b/msvc-dispatch new file mode 100755 index 0000000..945710b --- /dev/null +++ b/msvc-dispatch @@ -0,0 +1,71 @@ +#! /usr/bin/env bash + +# Note: shouldn't be executed directly, src_exe and src_dir must be set. + +# The filename in src_exe should be in the -- form. +# Based on that set some defaults, load the corresponding config file, and +# then continue with one of the msvc--common scripts. + +trap "{ exit 1; }" ERR +set -o errtrace # Trap in functions. + +function info () { echo "$*" 1>&2; } +function error () { info "$*"; exit 1; } + +# Split the argument. The itself should be [minor] where +# is digit-dot-only and minor should start with a non-digit-dot (e.g., +# u1, rc1, etc). +# +arg=($(echo "$(basename "$src_exe")" | \ + sed -n -e 's/^\([^-]*\)-\([0-9.]*\)\([^-]*\)-\([^-]*\)$/\1 \4 \2 \3/p')) +tool="${arg[0]}" +target="${arg[1]}" + +major="${arg[2]}" +minor="${arg[3]}" + +MAJOR="${arg[2]^^}" +MINOR="${arg[3]^^}" + +if [ -z "$tool" -o -z "$major" -o -z "$target" ]; then + error "invalid top-level script name" +fi + +# Calculate MSVC_WINEPREFIX and MSVC_INSTALLDIR. +# +# We have the following environment variable name hierarchy: +# +# MSVC__* +# MSVC__* +# MSVC_* +# +# And we always reduce these to just MSVC_* which are used further down. +# +function lookup_value() # +{ + local n="MSVC_${MAJOR}${MINOR}_$1" + local v="${!n}" + + if [ -z "$v" ]; then + n="MSVC_${MAJOR}_$1" + v="${!n}" + + if [ -z "$v" ]; then + n="MSVC_$1" + v="${!n}" + fi + fi + + echo "$v" +} + +MSVC_WINEPREFIX="$(lookup_value "WINEPREFIX")" +MSVC_INSTALLDIR="$(lookup_value "INSTALLDIR")" + +# Load the configuration. +# +source "$src_dir/msvc-$major/msvc-$major$minor-$target" + +# Dispatch to the tool. +# +source "$src_dir/msvc-common/msvc-$tool-common" diff --git a/msvc-lib-common b/msvc-lib-common deleted file mode 100755 index e533829..0000000 --- a/msvc-lib-common +++ /dev/null @@ -1,99 +0,0 @@ -#! /usr/bin/env bash - -# Common lib.exe driver that expects the VCBIN and LIB variables to be set for -# the specific MSVC version/configuration. -# -# It's not clear/documented why we need LIB or what the /LIBPATH option is -# for. Perhaps for link-time code generation (/LTCG). -# - -trap "{ exit 1; }" ERR -set -o errtrace # Trap in functions. - -function info () { echo "$*" 1>&2; } -function error () { info "$*"; exit 1; } - -source $(dirname $(realpath ${BASH_SOURCE[0]}))/msvc-common - -# Translate absolute paths from POSIX to Windows. Use bash array to store -# arguments in case they contain spaces. -# -# This needs to be done for both certain option values and arguments. -# Arguments are tricky in that unless we recognize every option, and option -# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics -# that we are going to use here is that if the argument starts with / and -# contains at least one more /, then we consider it an argument. Otherwise -- -# an options. We will also explicitly recognize certain options which may -# not fit this scheme well. -# -args=() - -while [ $# -gt 0 ]; do - case ${1^^} in # Uppercase for case-insensitive comparison. - - # /DEF[:filename] - # /OUT:filename - # - [/-]DEF:* | \ - [/-]OUT:*) - args=("${args[@]}" "$(split_translate 5 $1)") - shift - ;; - - # /LIST[:filename] - # /NAME:filename - # - [/-]LIST:* | \ - [/-]NAME:*) - args=("${args[@]}" "$(split_translate 6 $1)") - shift - ;; - - # /LIBPATH:dir - # - [/-]LIBPATH:*) - args=("${args[@]}" "$(split_translate 9 $1)") - shift - ;; - - # Handle other options with separate values. This makes sure we don't try - # to path-translate them. - # - - # Aren't any. - - # Handle other options with combined values that could possibly be - # interpreted as paths, for example /EXTRACT:foo/bar.obj. - # - [/-]EXPORT:* | \ - [/-]EXTRACT:* | \ - [/-]INCLUDE:* | \ - [/-]REMOVE:*) - args=("${args[@]}" "$1") - shift - ;; - - # Option or argument. - # - *) - # If contains at least two slashes, treat it as a path. - # - if [[ "$1" == /*/* ]]; then - args=("${args[@]}" "$(translate $1)") - else - args=("${args[@]}" "$1") - fi - shift - ;; - esac -done - -export LIB - -# link.exe may need to run other tools (/LTCG). -# -export WINEPATH="$VCBIN;$VCDLL;$SDKBIN" - -# lib.exe always sends diagnostics to stdout. -# -msvc_exec 1 "$VCBIN\\lib.exe" "${args[@]}" diff --git a/msvc-link-common b/msvc-link-common deleted file mode 100755 index 7cd121b..0000000 --- a/msvc-link-common +++ /dev/null @@ -1,186 +0,0 @@ -#! /usr/bin/env bash - -# Common link.exe driver that expects the VCBIN, SDKBIN, and LIB variables to -# be set for the specific MSVC version/configuration. - -trap "{ exit 1; }" ERR -set -o errtrace # Trap in functions. - -function info () { echo "$*" 1>&2; } -function error () { info "$*"; exit 1; } - -source $(dirname $(realpath ${BASH_SOURCE[0]}))/msvc-common - -# Translate absolute paths from POSIX to Windows. Use bash array to store -# arguments in case they contain spaces. -# -# This needs to be done for both certain option values and arguments. -# Arguments are tricky in that unless we recognize every option, and option -# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics -# that we are going to use here is that if the argument starts with / and -# contains at least one more /, then we consider it an argument. Otherwise -- -# an options. We will also explicitly recognize certain options which may -# not fit this scheme well. -# -# Note that link.exe /? is missing some options that are documented in MSDN. -# -args=() - -while [ $# -gt 0 ]; do - case ${1^^} in # Uppercase for case-insensitive comparison. - - # @@ TODO: handle the rest/obscure options. - # - # @file - # /ASSEMBLYLINKRESOURCE:filename - # /ASSEMBLYMODULE:filename - # /ASSEMBLYRESOURCE:filename[,[name][,PRIVATE]] - # /BASE:{address[,size]|@filename,key} - #+ /DEF:filename - #+ /DEFAULTLIB:library - #+ /DELAYLOAD:dll - # /FASTGENPROFILE:PGD=filename|... - # /GENPROFILE:PGD=filename|... - #+ /IDLOUT:filename - #+ /IMPLIB:filename - #+ /KEYFILE:filename - #+ /LIBPATH:dir - #+ /MANIFESTFILE:filename - #+ /MANIFESTINPUT:filename - #+ /MAP:filename - #+ /MIDL:@commandfile - #+ /NODEFAULTLIB:library - #+ /ORDER:@filename - #+ /OUT:filename - #+ /PDB:filename - #+ /PDBALTPATH:filename - #+ /PDBSTRIPPED:filename - #+ /PGD:filename - #+ /STUB:filename - #+ /TLBOUT:filename - # /USEPROFILE:PGD=filename - #+ /WHOLEARCHIVE:library - #+ /WINMDFILE:filename - # /WINMDKEYCONTAINER:name - #+ /WINMDKEYFILE:filename - - [/-]DEF:* | \ - [/-]MAP:* | \ - [/-]OUT:* | \ - [/-]PDB:* | \ - [/-]PGD:*) - args=("${args[@]}" "$(split_translate 5 $1)") - shift - ;; - - [/-]STUB:*) - args=("${args[@]}" "$(split_translate 6 $1)") - shift - ;; - - [/-]MIDL:@*) - args=("${args[@]}" "$(split_translate 7 $1)") - shift - ;; - - [/-]IMPLIB:* | \ - [/-]IDLOUT:* | \ - [/-]TLBOUT:* | \ - [/-]ORDER:@*) - args=("${args[@]}" "$(split_translate 8 $1)") - shift - ;; - - [/-]KEYFILE:* | \ - [/-]LIBPATH:*) - args=("${args[@]}" "$(split_translate 9 $1)") - shift - ;; - - [/-]DELAYLOAD:* | \ - [/-]WINMDFILE:*) - args=("${args[@]}" "$(split_translate 11 $1)") - shift - ;; - - [/-]DEFAULTLIB:* | \ - [/-]PDBALTPATH:*) - args=("${args[@]}" "$(split_translate 12 $1)") - shift - ;; - - [/-]PDBSTRIPPED:*) - args=("${args[@]}" "$(split_translate 13 $1)") - shift - ;; - - [/-]NODEFAULTLIB:* | \ - [/-]MANIFESTFILE:* | \ - [/-]WHOLEARCHIVE:* | \ - [/-]WINMDKEYFILE:*) - args=("${args[@]}" "$(split_translate 14 $1)") - shift - ;; - - [/-]MANIFESTINPUT:*) - args=("${args[@]}" "$(split_translate 15 $1)") - shift - ;; - - # Handle other options with separate values. This makes sure we don't try - # to path-translate them. - # - - # Aren't any. - - # Handle other options with combined values that could possibly be - # interpreted as paths. - # - # /ENTRY:symbol - # /EXPORT:symbol - # /INCLUDE:symbol - # /KEYCONTAINER:name - # /MANIFESTDEPENDENCY:manifest dependency - # /MANIFESTUAC[:{NO|UAC fragment}] - # /MAPINFO:{EXPORTS} - # /MERGE:from=to - # /SECTION:name,[[!]{DEKPRSW}][,ALIGN=#] - # - [/-]ENTRY:* | \ - [/-]EXPORT:* | \ - [/-]INCLUDE:* | \ - [/-]KEYCONTAINER:* | \ - [/-]MANIFESTDEPENDENCY:* | \ - [/-]MANIFESTUAC:* | \ - [/-]MAPINFO:* | \ - [/-]MERGE:* | \ - [/-]SECTION:* | \ - [/-]REMOVE:*) - args=("${args[@]}" "$1") - shift - ;; - - # Option or argument. - # - *) - # If contains at least two slashes, treat it as a path. - # - if [[ "$1" == /*/* ]]; then - args=("${args[@]}" "$(translate $1)") - else - args=("${args[@]}" "$1") - fi - shift - ;; - esac -done - -export LIB - -# link.exe may need to run mt.exe which is in the SDK. -# -export WINEPATH="$VCBIN;$VCDLL;$SDKBIN" - -# link.exe always sends diagnostics to stdout. -# -msvc_exec 1 "$VCBIN\\link.exe" "${args[@]}" diff --git a/msvc-mt-common b/msvc-mt-common deleted file mode 100755 index 25c9c8e..0000000 --- a/msvc-mt-common +++ /dev/null @@ -1,109 +0,0 @@ -#! /usr/bin/env bash - -# Common mt.exe driver that expects the SDKBIN variable to be set for the -# specific MSVC version/configuration. - -trap "{ exit 1; }" ERR -set -o errtrace # Trap in functions. - -function info () { echo "$*" 1>&2; } -function error () { info "$*"; exit 1; } - -source $(dirname $(realpath ${BASH_SOURCE[0]}))/msvc-common - -# Translate absolute paths from POSIX to Windows. Use bash array to store -# arguments in case they contain spaces. This needs to be done for both -# certain option values and arguments. -# -# Note that we assume mt.exe options start with '-' and are case-sensitive. -# -args=() - -while [ $# -gt 0 ]; do - case $1 in - - # @@ TODO: handle for [;[#]] - # - # -rgs: - # -tlb: - # -dll: - # -replacements: - # -managedassemblyname: - # -out: - # -inputresource:[;[#]] - # -outputresource:[;[#]] - # -updateresource:[;[#]] - # -hashupdate[:] - # -validate_file_hashes: - - -rgs:* | \ - -tlb:* | \ - -dll:* | \ - -out:*) - args=("${args[@]}" "$(split_translate 5 $1)") - shift - ;; - - -hashupdate:*) - args=("${args[@]}" "$(split_translate 12 $1)") - shift - ;; - - -replacements:*) - args=("${args[@]}" "$(split_translate 14 $1)") - shift - ;; - - -inputresource:*) - args=("${args[@]}" "$(split_translate 15 $1)") - shift - ;; - - -outputresource:* | \ - -updateresource:*) - args=("${args[@]}" "$(split_translate 16 $1)") - shift - ;; - - -managedassemblyname:*) - args=("${args[@]}" "$(split_translate 21 $1)") - shift - ;; - - -validate_file_hashes:*) - args=("${args[@]}" "$(split_translate 22 $1)") - shift - ;; - - # Handle other options with separate values. This makes sure we don't try - # to path-translate them. - # - - # None. - - # Handle other options with combined values that could possibly be - # interpreted as paths. - # - -identity:*) - args=("${args[@]}" "$1") - shift - ;; - - # Option or argument. - # - *) - # If starts with a slash, treat it as a path (options start with dash). - # - if [[ "$1" == /* ]]; then - args=("${args[@]}" "$(translate $1)") - else - args=("${args[@]}" "$1") - fi - shift - ;; - esac -done - -# mt.exe always sends diagnostics to stdout. -# -msvc_exec 1 "$SDKBIN\\mt.exe" "${args[@]}" diff --git a/msvc-rc-common b/msvc-rc-common deleted file mode 100755 index 17c9333..0000000 --- a/msvc-rc-common +++ /dev/null @@ -1,121 +0,0 @@ -#! /usr/bin/env bash - -# Common rc.exe driver that expects the SDKBIN and INCLUDE variables to be set -# for the specific MSVC version/configuration. - -trap "{ exit 1; }" ERR -set -o errtrace # Trap in functions. - -function info () { echo "$*" 1>&2; } -function error () { info "$*"; exit 1; } - -source $(dirname $(realpath ${BASH_SOURCE[0]}))/msvc-common - -# Translate absolute paths from POSIX to Windows. Use bash array to store -# arguments in case they contain spaces. -# -# This needs to be done for both certain option values and arguments. -# Arguments are tricky in that unless we recognize every option, and option -# may look a lot like an absolute POSIX path (e.g., /nologo). The heuristics -# that we are going to use here is that if the argument starts with / and -# contains at least one more /, then we consider it an argument. Otherwise -- -# an options. We will also explicitly recognize certain options which may not -# fit this scheme well. -# -# Note that the order of the cases is important. Specifically, we want, e.g., -# /D before /D*. -# -# Note that rc.exe /? is missing some options that are documented in MSDN. -# -args=() - -while [ $# -gt 0 ]; do - case ${1^^} in # Uppercase for case-insensitive comparison. - - # /I - # - [/-]I) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$(translate $1)") - shift - ;; - - # /I - # - [/-]I*) - args=("${args[@]}" "$(split_translate 2 $1)") - shift - ;; - - # /f[om] - # - [/-]F[OM]) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$(translate $1)") - shift - ;; - - # /f[om] - # - [/-]F[OM]*) - args=("${args[@]}" "$(split_translate 3 $1)") - shift - ;; - - # /q - # - [/-]Q) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$(translate $1)") - shift - ;; - - # /q - # - [/-]Q*) - args=("${args[@]}" "$(split_translate 2 $1)") - shift - ;; - - # Handle other options with separate values. This makes sure we don't try - # to path-translate them. - # - [/-]D | \ - [/-]U) - args=("${args[@]}" "$1") - shift - args=("${args[@]}" "$1") - shift - ;; - - # Handle other options with combined values that could possibly be - # interpreted as paths, for example /DFOO=foo/bar. - # - [/-]D*) - args=("${args[@]}" "$1") - shift - ;; - - # Option or argument. - # - *) - # If contains at least two slashes, treat it as a path. - # - if [[ "$1" == /*/* ]]; then - args=("${args[@]}" "$(translate $1)") - else - args=("${args[@]}" "$1") - fi - shift - ;; - esac -done - -export INCLUDE - -# rc.exe always sends diagnostics to stdout. -# -msvc_exec 1 "$SDKBIN\\rc.exe" "${args[@]}" diff --git a/mt-11 b/mt-11 deleted file mode 100755 index 9a0456a..0000000 --- a/mt-11 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-11" -source "$src/msvc-mt-common" diff --git a/mt-11-32 b/mt-11-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/mt-11-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-12 b/mt-12 deleted file mode 100755 index 6a912dd..0000000 --- a/mt-12 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-12" -source "$src/msvc-mt-common" diff --git a/mt-12-32 b/mt-12-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/mt-12-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-14 b/mt-14 deleted file mode 100755 index 6b5fb29..0000000 --- a/mt-14 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14" -source "$src/msvc-mt-common" diff --git a/mt-14u0-32 b/mt-14u0-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/mt-14u0-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-14u2 b/mt-14u2 deleted file mode 100755 index c8c6499..0000000 --- a/mt-14u2 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14u2" -source "$src/msvc-mt-common" diff --git a/mt-14u2-32 b/mt-14u2-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/mt-14u2-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-14u2-64 b/mt-14u2-64 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/mt-14u2-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-11 b/rc-11 deleted file mode 100755 index 64ba949..0000000 --- a/rc-11 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-11" -source "$src/msvc-rc-common" diff --git a/rc-11-32 b/rc-11-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/rc-11-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-12 b/rc-12 deleted file mode 100755 index 5215106..0000000 --- a/rc-12 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-12" -source "$src/msvc-rc-common" diff --git a/rc-12-32 b/rc-12-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/rc-12-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-14 b/rc-14 deleted file mode 100755 index 01cc0a3..0000000 --- a/rc-14 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14" -source "$src/msvc-rc-common" diff --git a/rc-14u0-32 b/rc-14u0-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/rc-14u0-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-14u2 b/rc-14u2 deleted file mode 100755 index ce9a5ea..0000000 --- a/rc-14u2 +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env bash - -src="$(dirname $(realpath ${BASH_SOURCE[0]}))" - -source "$src/msvc-14u2" -source "$src/msvc-rc-common" diff --git a/rc-14u2-32 b/rc-14u2-32 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/rc-14u2-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-14u2-64 b/rc-14u2-64 new file mode 100755 index 0000000..0d34aea --- /dev/null +++ b/rc-14u2-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