diff options
| author | David Lönnhager <david.l@mullvad.net> | 2024-11-14 13:45:01 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-11-20 08:49:17 +0100 |
| commit | c51f2ae757db6b36f4467bb7f8a8d742e8ab8cc3 (patch) | |
| tree | a70a064ffb4e00e28ce69d51d421168cdbfb150f /scripts | |
| parent | 22d50da42cbbe973924ff39c5c5f8de134f60117 (diff) | |
| download | mullvadvpn-c51f2ae757db6b36f4467bb7f8a8d742e8ab8cc3.tar.xz mullvadvpn-c51f2ae757db6b36f4467bb7f8a8d742e8ab8cc3.zip | |
Add helper script for vcvarsall
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/vcvars.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/vcvars.sh b/scripts/vcvars.sh new file mode 100644 index 0000000000..eb91d520a5 --- /dev/null +++ b/scripts/vcvars.sh @@ -0,0 +1,57 @@ +# shellcheck shell=bash +# +# Sourcing this file should set up the appropriate environment for Visual Studio using vcvarsall.bat +# +# Currently, this script runs vcvarsall.bat and exports the following (after appropriate +# conversions): +# * PATH +# * INCLUDE + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# shellcheck source=/dev/null +source "$SCRIPT_DIR/utils/host" + +case $HOST in + x86_64-pc-windows-msvc) HOST_TARGET=x64;; + aarch64-pc-windows-msvc) HOST_TARGET=arm64;; + *) + log_error "Unexpected architecture: $HOST" + exit 1 + ;; +esac + +# Target architecture. Use the host architecture if unspecified. +TARGET=${TARGET:-"$HOST_TARGET"} + +# Path to vcvarsall. This assumes that VS 2022 Community is available +VCVARSPATH="C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat" + +if [[ ! -f "$VCVARSPATH" ]]; then + echo -e "vcvarsall.bat not found. Please update the path in the script (${BASH_SOURCE[0]})" + exit 1 +fi + +VCVARSENV=$(MSYS_NO_PATHCONV=1 MSYS2_ARG_CONV_EXCL='*' cmd.exe /c "$VCVARSPATH" "$TARGET" \>nul \& set) + +declare -A vcenvmap + +function populate_vcenvmap { + while IFS='=' read -r key value; do + vcenvmap[$key]=$value + done <<< "$VCVARSENV" +} + +function to_unix_path { + # Converts a Windows-style PATH to a UNIX-style PATH + # eg from "C:\1\2\3;C:\4\5\6" to "/c/1/2/3:/c/4/5/6" + echo "$1" | sed -e 's|\([a-zA-Z]\):|\/\1|g' -e 's|\\|/|g' -e 's|;|:|g' +} + +populate_vcenvmap + +export INCLUDE="${vcenvmap["INCLUDE"]}" +PATH="$(to_unix_path "${vcenvmap["PATH"]}")" +export PATH + +echo "Initialized VS environment for $TARGET" |
