@ECHO OFF

REM First argument is the target architecture
REM Second argument is "Debug" or "Release" mode
REM Third argument is the V8 root directory path
REM Fourth argument is the version of Visual Studio (optional)

IF "%1" == "" GOTO Fail
IF "%2" == "" GOTO Fail
IF "%3" == "" GOTO Fail

REM Go into the V8 lib directory
cd "%3"

REM Check the last build info, so we know if we're supposed to build again or not
SET /P LAST_BUILD_INFO=<last_build
IF "%1-%2" == "%LAST_BUILD_INFO%" (
	IF EXIST ".\build\%2\v8.dll" (
		ECHO V8 is already built!
		SET COPY_FILES_ONLY=1
	)
)

SET LIB_DEST_DIR=

IF NOT "%4" == "" (
	SET VS_VERSION=-Gmsvs_version=%4
	ECHO Forcing build to use Visual Studio %4
)

IF "%1" == "x64" (
	REM If this is a 32-bit system (but we target x64), we must disable the snapshot feature to get it to build.
	IF NOT EXIST "%PROGRAMFILES(X86)%" (
		SET SKIP_V8_SNAPSHOT=-Dv8_use_snapshot=false
	)
)

IF "%1" == "x64" (
	IF NOT "%SKIP_V8_SNAPSHOT%" == "" ECHO Targeting x64 platform on a x86 system, disabling V8 snapshout feature to make this work [%SKIP_V8_SNAPSHOT%]
	IF NOT "%COPY_FILES_ONLY%" == "1" .\third_party\python_26\python.exe build\gyp_v8 -Dtarget_arch=x64 -Dcomponent=shared_library %SKIP_V8_SNAPSHOT% %VS_VERSION%
	IF NOT ERRORLEVEL 0 GOTO Fail
	SET LIB_DEST_DIR=..\..\x64\%2\
)

IF "%1" == "x86" (
	IF NOT "%COPY_FILES_ONLY%" == "1" .\third_party\python_26\python.exe build\gyp_v8 -Dcomponent=shared_library %VS_VERSION%
	IF NOT ERRORLEVEL 0 GOTO Fail
	SET LIB_DEST_DIR=..\..\Win32\%2\
)

IF "%LIB_DEST_DIR%" == "" GOTO Fail

IF "%COPY_FILES_ONLY%" == "1" GOTO CopyFiles

REM Clean build before we continue
devenv /clean %2 tools\gyp\v8.sln
IF NOT ERRORLEVEL 0 GOTO Fail

REM Just to make sure that everything is cleaned up
rmdir /S /Q .\build\%2

REM Build the V8 library
devenv /build %2 "tools\gyp\v8.sln" /project "v8" /projectconfig %2
REM devenv /build %2 tools\gyp\v8.sln
IF NOT ERRORLEVEL 0 GOTO Fail

:CopyFiles

REM xcopy /C /F /R /Y .\build\%2\icudt.dll %LIB_DEST_DIR%
REM IF NOT ERRORLEVEL 0 GOTO Fail

xcopy /C /F /R /Y .\build\%2\icui18n.dll %LIB_DEST_DIR%
IF NOT ERRORLEVEL 0 GOTO Fail

xcopy /C /F /R /Y .\build\%2\icuuc.dll %LIB_DEST_DIR%
IF NOT ERRORLEVEL 0 GOTO Fail

xcopy /C /F /R /Y .\build\%2\v8.dll %LIB_DEST_DIR%
IF NOT ERRORLEVEL 0 GOTO Fail

ECHO %1-%2> last_build

exit

:Fail
REM Delete the last_build info if this build failed!
@del /Q last_build
exit /b 1