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

setup-windows-env.bat « msvc - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 7b47754e0b1c95d7e500d99c56a4767e9892f0aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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