100 lines
2.9 KiB
Batchfile
100 lines
2.9 KiB
Batchfile
@echo off
|
|
setlocal ENABLEEXTENSIONS
|
|
setlocal enableDelayedExpansion
|
|
|
|
@rem set local scope for the variables with windows NT shell
|
|
if "%OS%"=="Windows_NT" setlocal
|
|
|
|
set "CMAKE_VERSION=3.13.0"
|
|
|
|
@rem extract semantic version codes
|
|
for /f "tokens=1,2,3 delims=." %%a in ("%CMAKE_VERSION%") do set CMAKE_VERSION_MAJOR=%%a&set CMAKE_VERSION_MINOR=%%b&set CMAKE_VERSION_PATCH=%%c
|
|
|
|
@rem get script directory name
|
|
set DIRNAME=%~dp0
|
|
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%
|
|
|
|
@rem get OS bitness
|
|
echo (ignore reg error, I don't know where it comes from)
|
|
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS_BITNESS=32BIT || set OS_BITNESS=64BIT
|
|
|
|
set UNZIP_EXE=%DIRNAME%\.cmakew\7zip\7z.exe
|
|
|
|
@rem require 7zip to unzip the cmake dist because windows sucks
|
|
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%\.cmakew\7zip\
|
|
del %TEMP%\7zInstall.exe
|
|
)
|
|
|
|
set CMAKE_DIR=%DIRNAME%\.cmakew\cmake-%CMAKE_VERSION%
|
|
set CMAKE_ZIP=%TEMP%\cmake-%CMAKE_VERSION%.zip
|
|
set CMAKE_EXE=%CMAKE_DIR%\bin\cmake.exe
|
|
|
|
@rem require correct cmake version
|
|
if not exist %CMAKE_EXE% (
|
|
echo Downloading cmake version %CMAKE_VERSION%...
|
|
|
|
if %OS_BITNESS%==64BIT (
|
|
call :downloadFile https://cmake.org/files/v%CMAKE_VERSION_MAJOR%.%CMAKE_VERSION_MINOR%/cmake-%CMAKE_VERSION%-win64-x64.zip %CMAKE_ZIP%
|
|
) else (
|
|
call :downloadFile https://cmake.org/files/v%CMAKE_VERSION_MAJOR%.%CMAKE_VERSION_MINOR%/cmake-%CMAKE_VERSION%-win32-x86.zip %CMAKE_ZIP%
|
|
)
|
|
|
|
echo Installing cmake
|
|
|
|
%UNZIP_EXE% x %CMAKE_ZIP% -o%DIRNAME%\.cmakew -y
|
|
del %CMAKE_ZIP%
|
|
|
|
if %OS_BITNESS%==64BIT (
|
|
ren %DIRNAME%\.cmakew\cmake-%CMAKE_VERSION%-win64-x64 cmake-%CMAKE_VERSION%
|
|
) else (
|
|
ren %DIRNAME%\.cmakew\cmake-%CMAKE_VERSION%-win32-x86 cmake-%CMAKE_VERSION%
|
|
)
|
|
)
|
|
|
|
@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 runCmake
|
|
|
|
set CMD_LINE_ARGS=%*
|
|
goto runCmake
|
|
|
|
:4NT_args
|
|
@rem Get arguments from the 4NT Shell from JP Software
|
|
set CMD_LINE_ARGS=%$
|
|
|
|
:runCmake
|
|
%CMAKE_EXE% %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 |