bootstrap: single make.bat, default msvc option for forcing gcc
parent
b17bf5843c
commit
7fc899dfd6
|
@ -46,8 +46,8 @@ script:
|
||||||
./v.exe test v
|
./v.exe test v
|
||||||
##echo "Running only the repl tests directly"
|
##echo "Running only the repl tests directly"
|
||||||
##./v.exe ./compiler/tests/repl/repl_test.v
|
##./v.exe ./compiler/tests/repl/repl_test.v
|
||||||
echo "Testing msvc bootstrapping"
|
echo "Testing gcc bootstrapping"
|
||||||
./make_msvc.bat
|
./make.bat -gcc
|
||||||
fi
|
fi
|
||||||
- |
|
- |
|
||||||
if [[ "${TRAVIS_OS_NAME}" != "windows" ]]; then
|
if [[ "${TRAVIS_OS_NAME}" != "windows" ]]; then
|
||||||
|
|
|
@ -228,7 +228,7 @@ pub fn (v mut V) cc_msvc() {
|
||||||
// -w: no warnings
|
// -w: no warnings
|
||||||
// 2 unicode defines
|
// 2 unicode defines
|
||||||
// /Fo sets the object file name - needed so we can clean up after ourselves properly
|
// /Fo sets the object file name - needed so we can clean up after ourselves properly
|
||||||
mut a := ['-w', '/volatile:ms', '/D_UNICODE', '/DUNICODE', '/Fo$out_name_obj']
|
mut a := ['-w', '/we4013', '/volatile:ms', '/D_UNICODE', '/DUNICODE', '/Fo$out_name_obj']
|
||||||
|
|
||||||
if v.pref.is_prod {
|
if v.pref.is_prod {
|
||||||
a << '/O2'
|
a << '/O2'
|
||||||
|
|
91
make.bat
91
make.bat
|
@ -1,35 +1,106 @@
|
||||||
set exiterror=0
|
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
echo Building V for Windows...
|
echo Building V
|
||||||
|
|
||||||
if exist "vc" (
|
if exist "vc" (
|
||||||
rd /s /q vc
|
rd /s /q vc
|
||||||
)
|
)
|
||||||
|
|
||||||
git version
|
git version
|
||||||
git clone --depth 1 --quiet https://github.com/vlang/vc
|
git clone --depth 1 --quiet https://github.com/vlang/vc
|
||||||
|
|
||||||
echo Building v.c...
|
REM option to force msvc or gcc
|
||||||
gcc -std=gnu11 -DUNICODE -D_UNICODE -w -o v2.exe vc/v_win.c 2>&1
|
if "%~1"=="-gcc" goto :gccstrap
|
||||||
|
if "%~1"=="-msvc" goto :gccstrap
|
||||||
|
|
||||||
|
goto :msvcstrap
|
||||||
|
|
||||||
|
:gccstrap
|
||||||
|
|
||||||
|
echo attempting to bootstrap with GCC
|
||||||
|
|
||||||
|
for /f "usebackq tokens=*" %%i in (`where gcc`) do (
|
||||||
|
set gccpath=%%i
|
||||||
|
)
|
||||||
|
|
||||||
|
if not exist "%gccpath%" (
|
||||||
|
goto:msvcstrap
|
||||||
|
)
|
||||||
|
|
||||||
|
gcc -std=gnu11 -DUNICODE -D_UNICODE -w -o v2.exe vc\v_win.c
|
||||||
if %ERRORLEVEL% GEQ 1 (
|
if %ERRORLEVEL% GEQ 1 (
|
||||||
echo gcc failed to compile - Create an issue at 'https://github.com/vlang'
|
echo gcc failed to compile - Create an issue at 'https://github.com/vlang'
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
echo Building v.v...
|
echo Building v.v...
|
||||||
v2.exe -o v.exe compiler
|
v2.exe -o v.exe compiler
|
||||||
if %ERRORLEVEL% GEQ 1 (
|
if %ERRORLEVEL% GEQ 1 (
|
||||||
echo v.exe failed to compile itself - Create an issue at 'https://github.com/vlang'
|
echo v.exe failed to compile itself - Create an issue at 'https://github.com/vlang'
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
echo Cleaning up...
|
del v2.exe
|
||||||
rem del v2.exe
|
|
||||||
rd /s /q vc
|
rd /s /q vc
|
||||||
|
|
||||||
|
goto :success
|
||||||
|
|
||||||
|
|
||||||
|
:msvcstrap
|
||||||
|
echo Attempting to bootstrap with MSVC
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "%InstallDir%\Common7\Tools\vsdevcmd.bat" (
|
||||||
|
call "%InstallDir%\Common7\Tools\vsdevcmd.bat" -arch=x64 -host_arch=x64
|
||||||
|
) else (
|
||||||
|
goto :nocompiler
|
||||||
|
)
|
||||||
|
|
||||||
|
cl.exe /w /volatile:ms /D_UNICODE /DUNICODE /Fo.v.c.obj /O2 /MD vc\v_win.c user32.lib kernel32.lib advapi32.lib shell32.lib /link /NOLOGO /OUT:v2.exe /INCREMENTAL:NO
|
||||||
|
|
||||||
|
if %ERRORLEVEL% GEQ 1 (
|
||||||
|
echo cl.exe failed to build V
|
||||||
|
goto :compileerror
|
||||||
|
)
|
||||||
|
|
||||||
|
echo rebuild from source
|
||||||
|
v2.exe -o v.exe compiler
|
||||||
|
if %ERRORLEVEL% GEQ 1 (
|
||||||
|
echo V failed to build itself
|
||||||
|
goto :compileerror
|
||||||
|
)
|
||||||
|
|
||||||
|
del v2.exe
|
||||||
|
rd /s /q vc
|
||||||
|
|
||||||
|
goto :success
|
||||||
|
|
||||||
|
:nocompiler
|
||||||
|
echo You do not appear to have a GCC installation on your PATH and also do not have an MSVC installation
|
||||||
|
echo - this means that you cannot bootstrap a V installation at this time...
|
||||||
|
echo.
|
||||||
|
echo Head to 'https://github.com/vlang/v/releases/download/v0.1.10/mingw-w64-install.exe' to download and install GCC
|
||||||
|
echo or head to 'https://visualstudio.microsoft.com/downloads/' to download and install MSVC
|
||||||
|
echo (look for the Build Tools if you don't want to install the Visual Studio IDE)
|
||||||
|
echo.
|
||||||
|
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
|
||||||
|
|
||||||
|
:success
|
||||||
|
dir
|
||||||
if exist "v.exe" (
|
if exist "v.exe" (
|
||||||
echo V has been successfully built
|
echo V has been successfully built
|
||||||
|
exit
|
||||||
) else (
|
) else (
|
||||||
echo v.exe was not generated - Create an issue at 'https://github.com/vlang'
|
echo v.exe was not generated - Create an issue at 'https://github.com/vlang'
|
||||||
exit /b 1
|
exit /b 1
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
@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
|
|
Loading…
Reference in New Issue