2019-08-29 00:18:30 +03:00
|
|
|
@echo off
|
|
|
|
|
2019-08-30 00:13:53 +03:00
|
|
|
echo Building V
|
2019-08-29 00:18:30 +03:00
|
|
|
|
2020-03-20 18:40:49 +03:00
|
|
|
pushd %~dp0
|
|
|
|
|
2019-08-29 00:18:30 +03:00
|
|
|
if exist "vc" (
|
2020-03-18 20:15:33 +03:00
|
|
|
rd /s /q vc
|
2019-08-29 00:18:30 +03:00
|
|
|
)
|
|
|
|
|
2019-08-27 21:08:54 +03:00
|
|
|
git version
|
2019-09-01 16:43:40 +03:00
|
|
|
|
|
|
|
echo Downloading v.c...
|
2019-08-17 19:24:22 +03:00
|
|
|
git clone --depth 1 --quiet https://github.com/vlang/vc
|
2019-08-29 00:18:30 +03:00
|
|
|
|
2019-08-30 00:13:53 +03:00
|
|
|
REM option to force msvc or gcc
|
2020-03-18 20:15:33 +03:00
|
|
|
if "%~1"=="-gcc" goto :gcc_strap
|
|
|
|
if "%~1"=="-msvc" goto :msvc_strap
|
2019-08-30 00:13:53 +03:00
|
|
|
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
:gcc_strap
|
2019-09-01 16:43:40 +03:00
|
|
|
echo Attempting to build v.c with GCC...
|
2019-08-30 00:13:53 +03:00
|
|
|
|
|
|
|
for /f "usebackq tokens=*" %%i in (`where gcc`) do (
|
2020-03-18 20:15:33 +03:00
|
|
|
set gcc_path=%%i
|
2019-08-30 00:13:53 +03:00
|
|
|
)
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
if not exist "%gcc_path%" (
|
|
|
|
goto :msvc_strap
|
2019-08-30 00:13:53 +03:00
|
|
|
)
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
gcc -std=c99 -municode -w -o v.exe vc\v_win.c
|
2019-09-17 14:56:32 +03:00
|
|
|
if %ERRORLEVEL% NEQ 0 (
|
2020-03-18 20:15:33 +03:00
|
|
|
echo gcc failed to compile - Create an issue at 'https://github.com/vlang'
|
|
|
|
rd /s /q vc
|
|
|
|
goto :error
|
2019-08-29 00:18:30 +03:00
|
|
|
)
|
|
|
|
|
2019-10-12 04:19:28 +03:00
|
|
|
echo Now using V to build V...
|
2020-03-18 20:15:33 +03:00
|
|
|
v self -prod
|
2019-09-17 14:56:32 +03:00
|
|
|
if %ERRORLEVEL% NEQ 0 (
|
2020-03-18 20:15:33 +03:00
|
|
|
echo v.exe failed to compile itself - Create an issue at 'https://github.com/vlang'
|
|
|
|
rd /s /q vc
|
|
|
|
goto :error
|
2019-08-30 00:13:53 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
rd /s /q vc
|
|
|
|
goto :success
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
:msvc_strap
|
2019-09-01 16:43:40 +03:00
|
|
|
echo Attempting to build v.c with MSVC...
|
2019-10-16 02:54:35 +03:00
|
|
|
set VsWhereDir=%ProgramFiles(x86)%
|
|
|
|
set HostArch=x64
|
|
|
|
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
|
2020-03-18 20:15:33 +03:00
|
|
|
echo Using x86 Build Tools...
|
|
|
|
set VsWhereDir=%ProgramFiles%
|
|
|
|
set HostArch=x86
|
2019-10-16 02:54:35 +03:00
|
|
|
)
|
|
|
|
for /f "usebackq tokens=*" %%i in (`"%VsWhereDir%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -prerelease -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
|
2020-03-18 20:15:33 +03:00
|
|
|
set InstallDir=%%i
|
2019-08-29 00:38:09 +03:00
|
|
|
)
|
2019-08-29 00:18:30 +03:00
|
|
|
|
2019-08-30 00:13:53 +03:00
|
|
|
if exist "%InstallDir%\Common7\Tools\vsdevcmd.bat" (
|
2020-03-18 20:15:33 +03:00
|
|
|
call "%InstallDir%\Common7\Tools\vsdevcmd.bat" -arch=%HostArch% -host_arch=%HostArch% -no_logo
|
2019-08-30 00:13:53 +03:00
|
|
|
) else (
|
2020-03-18 20:15:33 +03:00
|
|
|
goto :no_compiler
|
2019-08-30 00:13:53 +03:00
|
|
|
)
|
|
|
|
|
2019-12-22 22:59:51 +03:00
|
|
|
set ObjFile=.v.c.obj
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
cl.exe /nologo /w /volatile:ms /Fo%ObjFile% /O2 /MD /D_VBOOTSTRAP vc\v_win.c user32.lib kernel32.lib advapi32.lib shell32.lib /link /NOLOGO /OUT:v.exe /INCREMENTAL:NO
|
2019-09-17 14:56:32 +03:00
|
|
|
if %ERRORLEVEL% NEQ 0 (
|
2020-03-18 20:15:33 +03:00
|
|
|
echo cl.exe failed to build V
|
|
|
|
goto :compile_error
|
2019-08-30 00:13:53 +03:00
|
|
|
)
|
|
|
|
|
2019-09-20 17:03:13 +03:00
|
|
|
echo rebuild from source (twice, in case of C definitions changes)
|
2020-03-18 20:15:33 +03:00
|
|
|
v self -prod
|
2019-09-17 14:56:32 +03:00
|
|
|
if %ERRORLEVEL% NEQ 0 (
|
2020-03-18 20:15:33 +03:00
|
|
|
echo V failed to build itself with error %ERRORLEVEL%
|
|
|
|
rd /s /q vc
|
|
|
|
del v.pdb
|
|
|
|
del v3.ilk
|
|
|
|
del v3.pdb
|
|
|
|
del vc140.pdb
|
|
|
|
del %ObjFile%
|
|
|
|
goto :compile_error
|
2019-08-30 00:13:53 +03:00
|
|
|
)
|
|
|
|
|
2019-08-29 00:38:09 +03:00
|
|
|
rd /s /q vc
|
2019-12-05 14:41:57 +03:00
|
|
|
del v.pdb
|
|
|
|
del v3.ilk
|
|
|
|
del v3.pdb
|
|
|
|
del vc140.pdb
|
2019-12-22 22:59:51 +03:00
|
|
|
del %ObjFile%
|
2019-08-29 00:18:30 +03:00
|
|
|
|
2019-08-30 00:13:53 +03:00
|
|
|
goto :success
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
:no_compiler
|
2019-08-30 00:13:53 +03:00
|
|
|
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
|
|
|
|
|
2020-03-18 20:15:33 +03:00
|
|
|
:compile_error
|
2019-08-30 00:13:53 +03:00
|
|
|
echo Failed to compile - Create an issue at 'https://github.com/vlang' and tag '@emily33901'!
|
|
|
|
goto :error
|
|
|
|
|
|
|
|
:error
|
|
|
|
echo Exiting from error
|
2020-03-20 18:40:49 +03:00
|
|
|
popd
|
2019-08-30 00:13:53 +03:00
|
|
|
exit /b 1
|
|
|
|
|
|
|
|
:success
|
2019-12-05 14:41:57 +03:00
|
|
|
echo V build OK!
|
2020-03-06 20:53:29 +03:00
|
|
|
v -version
|
2020-03-20 18:40:49 +03:00
|
|
|
popd
|