@echo off setlocal ENABLEEXTENSIONS setlocal enableDelayedExpansion @rem set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal @rem get script directory name set DIRNAME=%~dp0\..\.cache if "%DIRNAME%" == "" set DIRNAME=. @rem strip trailing backslash from DIRNAME path to make it easier to work with IF %DIRNAME:~-1%==\ SET DIRNAME=%DIRNAME:~0,-1% reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS_BITNESS=32BIT || set OS_BITNESS=64BIT set UNZIP_EXE=%DIRNAME%\.6.0g-mingw64\7zip\7z.exe if not exist %UNZIP_EXE% ( echo Downloading 7zip... if %OS_BITNESS%==64BIT ( call :downloadFile https://www.7-zip.org/a/7z1801-x64.exe %TEMP%\7zInstall.exe ) else ( call :downloadFile https://www.7-zip.org/a/7z1801.exe %TEMP%\7zInstall.exe ) echo Installing 7zip @rem don't forget the trailing backslash here because 7zip is too stupid to deal with paths and just removes the last char %TEMP%\7zInstall.exe /S /D=%DIRNAME%\.6.0g-mingw64\7zip\ del %TEMP%\7zInstall.exe ) set MINGW64_DIR=%DIRNAME%\.6.0g-mingw64\mingw64 set MINGW64_TAR=%DIRNAME%\.6.0g-mingw64\devcpp-mingw64-1.0.0.tar set MINGW64_ZIP=%TEMP%\devcpp-mingw64-1.0.0.tgz set MINGW64_BIN=%MINGW64_DIR%\package\bin @rem require correct MINGW64 version if not exist %MINGW64_BIN%\gcc.exe ( echo Downloading MINGW64 version %MINGW64_VERSION%... call :downloadFile https://registry.npmmirror.com/devcpp-mingw64/-/devcpp-mingw64-1.0.0.tgz %MINGW64_ZIP% echo Installing MINGW64 %UNZIP_EXE% x %MINGW64_ZIP% -o%DIRNAME%\.6.0g-mingw64 -y %UNZIP_EXE% x %MINGW64_TAR% -o%DIRNAME%\.6.0g-mingw64\mingw64 -y del %MINGW64_ZIP% del %MINGW64_TAR% ) @rem parse cli args to pass them to cmWake if not "%OS%" == "Windows_NT" goto win9xME_args if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto runMINGW64 set CMD_LINE_ARGS=%* goto runMINGW64 :4NT_args @rem Get arguments from the 4NT Shell from JP Software set CMD_LINE_ARGS=%$ :runMINGW64 %MINGW64_BIN%\%CMD_LINE_ARGS% goto end @rem args: fileUrl, filePath :downloadFile powershell -Command "(New-Object Net.WebClient).DownloadFile('%~1', '%~2')" EXIT /B 0 :end if "%OS%"=="Windows_NT" endlocal