Blame vcbuild.bat

Packit b5b901
@echo off
Packit b5b901
Packit b5b901
cd %~dp0
Packit b5b901
Packit b5b901
if /i "%1"=="help" goto help
Packit b5b901
if /i "%1"=="--help" goto help
Packit b5b901
if /i "%1"=="-help" goto help
Packit b5b901
if /i "%1"=="/help" goto help
Packit b5b901
if /i "%1"=="?" goto help
Packit b5b901
if /i "%1"=="-?" goto help
Packit b5b901
if /i "%1"=="--?" goto help
Packit b5b901
if /i "%1"=="/?" goto help
Packit b5b901
Packit b5b901
@rem Process arguments.
Packit b5b901
set config=
Packit b5b901
set target=Build
Packit b5b901
set target_arch=ia32
Packit b5b901
set target_env=
Packit b5b901
set noprojgen=
Packit b5b901
set nobuild=
Packit b5b901
set run=
Packit b5b901
set vs_toolset=x86
Packit b5b901
set msbuild_platform=WIN32
Packit b5b901
set library=static_library
Packit b5b901
Packit b5b901
:next-arg
Packit b5b901
if "%1"=="" goto args-done
Packit b5b901
if /i "%1"=="debug"        set config=Debug&goto arg-ok
Packit b5b901
if /i "%1"=="release"      set config=Release&goto arg-ok
Packit b5b901
if /i "%1"=="test"         set run=run-tests.exe&goto arg-ok
Packit b5b901
if /i "%1"=="bench"        set run=run-benchmarks.exe&goto arg-ok
Packit b5b901
if /i "%1"=="clean"        set target=Clean&goto arg-ok
Packit b5b901
if /i "%1"=="vs2017"       set target_env=vs2017&goto arg-ok
Packit b5b901
if /i "%1"=="noprojgen"    set noprojgen=1&goto arg-ok
Packit b5b901
if /i "%1"=="nobuild"      set nobuild=1&goto arg-ok
Packit b5b901
if /i "%1"=="x86"          set target_arch=ia32&set msbuild_platform=WIN32&set vs_toolset=x86&goto arg-ok
Packit b5b901
if /i "%1"=="ia32"         set target_arch=ia32&set msbuild_platform=WIN32&set vs_toolset=x86&goto arg-ok
Packit b5b901
if /i "%1"=="x64"          set target_arch=x64&set msbuild_platform=x64&set vs_toolset=x64&goto arg-ok
Packit b5b901
if /i "%1"=="shared"       set library=shared_library&goto arg-ok
Packit b5b901
if /i "%1"=="static"       set library=static_library&goto arg-ok
Packit b5b901
:arg-ok
Packit b5b901
shift
Packit b5b901
goto next-arg
Packit b5b901
:args-done
Packit b5b901
Packit b5b901
if defined WindowsSDKDir goto select-target
Packit b5b901
if defined VCINSTALLDIR goto select-target
Packit b5b901
Packit b5b901
@rem Look for Visual Studio 2017 only if explicitly requested.
Packit b5b901
if "%target_env%" NEQ "vs2017" goto vs-set-2015
Packit b5b901
echo Looking for Visual Studio 2017
Packit b5b901
@rem Check if VS2017 is already setup, and for the requested arch.
Packit b5b901
if "_%VisualStudioVersion%_" == "_15.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%vs_toolset%_" goto found_vs2017
Packit b5b901
set "VSINSTALLDIR="
Packit b5b901
call tools\vswhere_usability_wrapper.cmd
Packit b5b901
if "_%VCINSTALLDIR%_" == "__" goto vs-set-2015
Packit b5b901
@rem Need to clear VSINSTALLDIR for vcvarsall to work as expected.
Packit b5b901
@rem Keep current working directory after call to vcvarsall
Packit b5b901
set "VSCMD_START_DIR=%CD%"
Packit b5b901
set vcvars_call="%VCINSTALLDIR%\Auxiliary\Build\vcvarsall.bat" %vs_toolset%
Packit b5b901
echo calling: %vcvars_call%
Packit b5b901
call %vcvars_call%
Packit b5b901
Packit b5b901
:found_vs2017
Packit b5b901
echo Found MSVS version %VisualStudioVersion%
Packit b5b901
if %VSCMD_ARG_TGT_ARCH%==x64 set target_arch=x64&set msbuild_platform=x64&set vs_toolset=x64
Packit b5b901
set GYP_MSVS_VERSION=2017
Packit b5b901
goto select-target
Packit b5b901
Packit b5b901
Packit b5b901
@rem Look for Visual Studio 2015
Packit b5b901
:vs-set-2015
Packit b5b901
if not defined VS140COMNTOOLS goto vc-set-2013
Packit b5b901
if not exist "%VS140COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2013
Packit b5b901
call "%VS140COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
Packit b5b901
set GYP_MSVS_VERSION=2015
Packit b5b901
echo Using Visual Studio 2015
Packit b5b901
goto select-target
Packit b5b901
Packit b5b901
:vc-set-2013
Packit b5b901
@rem Look for Visual Studio 2013
Packit b5b901
if not defined VS120COMNTOOLS goto vc-set-2012
Packit b5b901
if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2012
Packit b5b901
call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
Packit b5b901
set GYP_MSVS_VERSION=2013
Packit b5b901
echo Using Visual Studio 2013
Packit b5b901
goto select-target
Packit b5b901
Packit b5b901
:vc-set-2012
Packit b5b901
@rem Look for Visual Studio 2012
Packit b5b901
if not defined VS110COMNTOOLS goto vc-set-2010
Packit b5b901
if not exist "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2010
Packit b5b901
call "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
Packit b5b901
set GYP_MSVS_VERSION=2012
Packit b5b901
echo Using Visual Studio 2012
Packit b5b901
goto select-target
Packit b5b901
Packit b5b901
:vc-set-2010
Packit b5b901
@rem Look for Visual Studio 2010
Packit b5b901
if not defined VS100COMNTOOLS goto vc-set-2008
Packit b5b901
if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2008
Packit b5b901
call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
Packit b5b901
set GYP_MSVS_VERSION=2010
Packit b5b901
echo Using Visual Studio 2010
Packit b5b901
goto select-target
Packit b5b901
Packit b5b901
:vc-set-2008
Packit b5b901
@rem Look for Visual Studio 2008
Packit b5b901
if not defined VS90COMNTOOLS goto vc-set-notfound
Packit b5b901
if not exist "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-notfound
Packit b5b901
call "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
Packit b5b901
set GYP_MSVS_VERSION=2008
Packit b5b901
echo Using Visual Studio 2008
Packit b5b901
goto select-target
Packit b5b901
Packit b5b901
:vc-set-notfound
Packit b5b901
echo Warning: Visual Studio not found
Packit b5b901
Packit b5b901
:select-target
Packit b5b901
if not "%config%"=="" goto project-gen
Packit b5b901
if "%run%"=="run-tests.exe" set config=Debug& goto project-gen
Packit b5b901
if "%run%"=="run-benchmarks.exe" set config=Release& goto project-gen
Packit b5b901
set config=Debug
Packit b5b901
Packit b5b901
:project-gen
Packit b5b901
@rem Skip project generation if requested.
Packit b5b901
if defined noprojgen goto msbuild
Packit b5b901
Packit b5b901
@rem Generate the VS project.
Packit b5b901
if exist build\gyp goto have_gyp
Packit b5b901
echo git clone https://chromium.googlesource.com/external/gyp build/gyp
Packit b5b901
git clone https://chromium.googlesource.com/external/gyp build/gyp
Packit b5b901
if errorlevel 1 goto gyp_install_failed
Packit b5b901
goto have_gyp
Packit b5b901
Packit b5b901
:gyp_install_failed
Packit b5b901
echo Failed to download gyp. Make sure you have git installed, or
Packit b5b901
echo manually install gyp into %~dp0build\gyp.
Packit b5b901
exit /b 1
Packit b5b901
Packit b5b901
:have_gyp
Packit b5b901
if not defined PYTHON set PYTHON=python
Packit b5b901
"%PYTHON%" gyp_uv.py -Dtarget_arch=%target_arch% -Duv_library=%library%
Packit b5b901
if errorlevel 1 goto create-msvs-files-failed
Packit b5b901
if not exist uv.sln goto create-msvs-files-failed
Packit b5b901
echo Project files generated.
Packit b5b901
Packit b5b901
:msbuild
Packit b5b901
@rem Skip project generation if requested.
Packit b5b901
if defined nobuild goto run
Packit b5b901
Packit b5b901
@rem Check if VS build env is available
Packit b5b901
if defined VCINSTALLDIR goto msbuild-found
Packit b5b901
if defined WindowsSDKDir goto msbuild-found
Packit b5b901
echo Build skipped. To build, this file needs to run from VS cmd prompt.
Packit b5b901
goto run
Packit b5b901
Packit b5b901
@rem Build the sln with msbuild.
Packit b5b901
:msbuild-found
Packit b5b901
msbuild uv.sln /t:%target% /p:Configuration=%config% /p:Platform="%msbuild_platform%" /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
Packit b5b901
if errorlevel 1 exit /b 1
Packit b5b901
msbuild test\test.sln /t:%target% /p:Configuration=%config% /p:Platform="%msbuild_platform%" /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
Packit b5b901
if errorlevel 1 exit /b 1
Packit b5b901
Packit b5b901
:run
Packit b5b901
@rem Run tests if requested.
Packit b5b901
if "%run%"=="" goto exit
Packit b5b901
echo running 'test\%config%\%run%'
Packit b5b901
test\%config%\%run%
Packit b5b901
goto exit
Packit b5b901
Packit b5b901
:create-msvs-files-failed
Packit b5b901
echo Failed to create vc project files.
Packit b5b901
exit /b 1
Packit b5b901
Packit b5b901
:help
Packit b5b901
echo vcbuild.bat [debug/release] [test/bench] [clean] [noprojgen] [nobuild] [vs2017] [x86/x64] [static/shared]
Packit b5b901
echo Examples:
Packit b5b901
echo   vcbuild.bat              : builds debug build
Packit b5b901
echo   vcbuild.bat test         : builds debug build and runs tests
Packit b5b901
echo   vcbuild.bat release bench: builds release build and runs benchmarks
Packit b5b901
goto exit
Packit b5b901
Packit b5b901
:exit