v/make_msvc.bat

61 lines
1.3 KiB
Batchfile

@echo off
set exiterror=0
echo finding an MSVC installation
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
set InstallDir=%%i
)
REM set up a devcmd
if exist "%InstallDir%\Common7\Tools\vsdevcmd.bat" (
call "%InstallDir%\Common7\Tools\vsdevcmd.bat" -arch=x64 -host_arch=x64
) else (
goto :nomsvc
)
echo fetch v_win.c
curl -O https://raw.githubusercontent.com/vlang/vc/master/v_win.c
echo build v_win.c with msvc
cl.exe /w /volatile:ms /D_UNICODE /DUNICODE /D_BOOTSTRAP_NO_UNICODE_STREAM /Fo.v_win.c.obj /O2 /MD v_win.c user32.lib kernel32.lib advapi32.lib shell32.lib /link /DEBUG:NONE /NOLOGO /OUT:v2.exe /INCREMENTAL:NO
if %ERRORLEVEL% GEQ 1 (
goto :compileerror
)
echo rebuild from source
v2.exe -os msvc -o v.exe compiler
if %ERRORLEVEL% GEQ 1 (
goto :compileerror
)
dir v_win.c v2.exe v.exe
del .v_win.c.obj
del v_win.c
del v2.exe
echo Success
goto :done
:nomsvc
echo Cannot find an msvc installation
goto :error
:compileerror
echo Failed to compile - Create an issue at 'https://github.com/vlang' and tag '@emily33901'!
goto :error
:error
echo fail
exit /b 1
:done
echo pass