compiler: bootstrap with MSVC

Add make_msvc.bat to bootstrap with msvc and test it with travis
pull/1606/head
Emily Hudson 2019-08-13 20:04:20 +00:00 committed by Alexander Medvednikov
parent a0c8fa5bbc
commit f52c68a510
3 changed files with 64 additions and 5 deletions

View File

@ -39,6 +39,8 @@ script:
- | - |
if [[ "${TRAVIS_OS_NAME}" == "windows" ]]; then if [[ "${TRAVIS_OS_NAME}" == "windows" ]]; then
choco install openssl.light choco install openssl.light
echo "Testing msvc bootstrapping"
./make_msvc.bat
echo "Running make_tests.bat..." echo "Running make_tests.bat..."
./make_tests.bat ./make_tests.bat
fi fi

48
make_msvc.bat 100644
View File

@ -0,0 +1,48 @@
@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.c
curl -O https://raw.githubusercontent.com/vlang/vc/master/v.c
echo build v.c with msvc
cl.exe /w /volatile:ms /D_UNICODE /DUNICODE /Fo.v.c.obj /O2 /MD v.c user32.lib kernel32.lib advapi32.lib shell32.lib /link /NOLOGO /OUT:v2.exe /INCREMENTAL:NO
if %ERRORLEVEL% GEQ 1 (
goto :compileerror
)
echo rebuild from source
v2.exe -o v.exe compiler
del .v.c.obj
del v.c
del v2.exe
exit
: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 Exiting from error
exit /b 1

View File

@ -1,5 +1,10 @@
@echo off @echo off
echo Cleanup
del v.exe
del v.c
del v2.exe
echo fetch v.c echo fetch v.c
curl -O https://raw.githubusercontent.com/vlang/vc/master/v.c curl -O https://raw.githubusercontent.com/vlang/vc/master/v.c
if %ERRORLEVEL% NEQ 0 goto :fail if %ERRORLEVEL% NEQ 0 goto :fail
@ -13,12 +18,16 @@ echo build v using vc
vc.exe -o v.exe compiler vc.exe -o v.exe compiler
if %ERRORLEVEL% NEQ 0 goto :fail if %ERRORLEVEL% NEQ 0 goto :fail
echo build v.msvc using v echo build vc.msvc using vc
v.exe -os msvc -o v.msvc.exe compiler vc.exe -os msvc -o v.msvc.exe compiler
if %ERRORLEVEL% NEQ 0 goto :fail if %ERRORLEVEL% NEQ 0 goto :fail
echo build v.msvc.2 using v.msvc echo build v.msvc.3 using v
v.msvc.exe -os msvc -o v.msvc.2.exe compiler v.exe -os msvc -o v.msvc.2.exe compiler
if %ERRORLEVEL% NEQ 0 goto :fail
echo build v.msvc.3 using v.msvc
v.msvc.exe -os msvc -o v.msvc.3.exe compiler
if %ERRORLEVEL% NEQ 0 goto :fail if %ERRORLEVEL% NEQ 0 goto :fail
echo build v.gcc using v.msvc echo build v.gcc using v.msvc