Xamarin Public Jenkins (auto-signing) 468663ddbb Imported Upstream version 6.10.0.49
Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
2020-01-16 16:38:04 +00:00

64 lines
2.0 KiB
Batchfile
Executable File

:: 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