Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlateralusX <lateralusx.github@gmail.com>2019-05-01 01:40:22 +0300
committerlateralusX <lateralusx.github@gmail.com>2019-05-03 16:14:21 +0300
commitf83d9f3575776a5c7edad336f21f5c70ce519bc4 (patch)
tree542e8bda3344cd2529943d862c38a2364719740f /msvc/setup-windows-env.bat
parent231da41c789ccc8810452de516ffec0f9e5c34cf (diff)
Add LLVM SDK build/package support for Windows msvc build LLVM.
Diffstat (limited to 'msvc/setup-windows-env.bat')
-rw-r--r--msvc/setup-windows-env.bat64
1 files changed, 64 insertions, 0 deletions
diff --git a/msvc/setup-windows-env.bat b/msvc/setup-windows-env.bat
new file mode 100644
index 00000000000..7b47754e0b1
--- /dev/null
+++ b/msvc/setup-windows-env.bat
@@ -0,0 +1,64 @@
+:: Script will setup environment variables directly in callers environment.
+
+:: If we are running from none Windows shell we will need to restore a clean PATH
+:: before setting up VS MSVC build environment. If not there is a risk we will pick up
+:: for example cygwin binaries when running toolchain commands not explicitly setup by
+:: VS MSVC build environment.
+set HKCU_ENV_PATH=
+set HKLM_ENV_PATH=
+if "%SHELL%" == "/bin/bash" (
+ for /f "tokens=2,*" %%a in ('%WINDIR%\System32\reg.exe query "HKCU\Environment" /v "Path" ^| %WINDIR%\System32\find.exe /i "REG_"') do (
+ SET HKCU_ENV_PATH=%%b
+ )
+ for /f "tokens=2,*" %%a in ('%WINDIR%\System32\reg.exe query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path" ^| %WINDIR%\System32\find.exe /i "REG_"') do (
+ SET HKLM_ENV_PATH=%%b
+ )
+)
+
+:: Restore default path, if we are running from none Windows shell.
+if "%SHELL%" == "/bin/bash" (
+ call :restore_default_path "%HKCU_ENV_PATH%" "%HKLM_ENV_PATH%"
+)
+
+:: There is still a scenario where the default path can include cygwin\bin folder. If that's the case
+:: there is still a big risk that build tools will be incorrectly resolved towards cygwin bin folder.
+:: Make sure to adjust path and drop all cygwin paths.
+set NEW_PATH=
+call where /Q "cygpath.exe" && (
+ echo Warning, PATH includes cygwin bin folders. This can cause build errors due to incorrectly
+ echo located build tools. Build script will drop all cygwin folders from used PATH.
+ for %%a in ("%PATH:;=";"%") do (
+ if not exist "%%~a\cygpath.exe" (
+ call :add_to_new_path "%%~a"
+ )
+ )
+)
+
+if not "%NEW_PATH%" == "" (
+ set "PATH=%NEW_PATH%"
+)
+
+exit /b 0
+
+:restore_default_path
+
+:: Restore default PATH.
+if not "%~2" == "" (
+ if not "%~1" == "" (
+ set "PATH=%~2;%~1"
+ ) else (
+ set "PATH=%~2"
+ )
+)
+
+goto :EOF
+
+:add_to_new_path
+
+if "%NEW_PATH%" == "" (
+ set "NEW_PATH=%~1"
+) else (
+ SET "NEW_PATH=%NEW_PATH%;%~1"
+)
+
+goto :EOF \ No newline at end of file