fix stupid msys2 and windows cmd path handling

This commit is contained in:
cheezwiz7899
2026-04-18 14:40:08 +10:00
parent 694425740e
commit 3fe8693844
+14 -9
View File
@@ -59,25 +59,30 @@ exit /b 1
:found_msys2 :found_msys2
echo Found MSYS2 at: %MSYS2_PATH% echo Found MSYS2 at: %MSYS2_PATH%
REM ---------- resolve script directory as MSYS2 path ---------- REM ---------- resolve script directory ----------
REM Strip trailing backslash left by %%~dp0
set "SCRIPT_DIR=%~dp0" set "SCRIPT_DIR=%~dp0"
if "%SCRIPT_DIR:~-1%"=="\" set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%" if "%SCRIPT_DIR:~-1%"=="\" set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%"
REM C:\foo\bar -> /c/foo/bar REM Use cygpath (always present in MSYS2) to convert the Windows path to a
set "MSYS_SOURCE=%SCRIPT_DIR:\=/%" REM POSIX path. The manual letter-by-letter loop it replaces was inserting
set "DRIVE=%MSYS_SOURCE:~1,1%" REM extra slashes into every path component (e.g. /citron -> /c/itron).
set "MSYS_SOURCE=/%DRIVE%%MSYS_SOURCE:~2%" for /f "delims=" %%P in ('^""%MSYS2_PATH%\usr\bin\cygpath.exe" "%SCRIPT_DIR%"^"') do set "MSYS_SOURCE=%%P"
REM Lowercase the drive letter (MSYS2 paths are lowercase) if "%MSYS_SOURCE%"=="" (
for %%L in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do ( echo.
set "MSYS_SOURCE=!MSYS_SOURCE:/%%L=/%%L/!" echo ERROR: cygpath failed to convert path: %SCRIPT_DIR%
echo Ensure MSYS2 is installed correctly.
echo.
pause
exit /b 1
) )
REM ---------- open CLANG64 shell, print help, leave prompt open ---------- REM ---------- open CLANG64 shell, print help, leave prompt open ----------
echo. echo.
echo Opening MSYS2 CLANG64 shell. echo Opening MSYS2 CLANG64 shell.
echo The build script help will be printed above the prompt. echo The build script help will be printed above the prompt.
echo Run stages manually see docs/BUILDING-CLANG-MINGW.md for guidance. echo Run stages manually -- see docs/BUILDING-CLANG-MINGW.md for guidance.
echo. echo.
"%MSYS2_PATH%\usr\bin\env.exe" MSYSTEM=CLANG64 ^ "%MSYS2_PATH%\usr\bin\env.exe" MSYSTEM=CLANG64 ^