From e26d34aa85d4e7d4b385e866a1c854daaee1a3e5 Mon Sep 17 00:00:00 2001
From: Peter Olsson <peter@olssononline.se>
Date: Thu, 23 Jan 2014 13:39:34 +0100
Subject: [PATCH] FS-6129 More improvements for V8 Windows build on 32-bit
 machines.

---
 libs/win32/v8/build-v8.bat | 43 +++++++++++++++++++++++++++++++-------
 1 file changed, 36 insertions(+), 7 deletions(-)

diff --git a/libs/win32/v8/build-v8.bat b/libs/win32/v8/build-v8.bat
index 1590dba2c6..0b78ac43c9 100644
--- a/libs/win32/v8/build-v8.bat
+++ b/libs/win32/v8/build-v8.bat
@@ -1,28 +1,49 @@
 @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%" (
-	ECHO V8 is already built!
-	SET COPY_FILES_ONLY=1
+	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" (
-	IF NOT "%COPY_FILES_ONLY%" == "1" .\third_party\python_26\python.exe build\gyp_v8 -Dtarget_arch=x64 -Dcomponent=shared_library -Dv8_use_snapshot=false
+	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
+	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\
 )
@@ -31,10 +52,16 @@ IF "%LIB_DEST_DIR%" == "" GOTO Fail
 
 IF "%COPY_FILES_ONLY%" == "1" GOTO CopyFiles
 
-devenv.com /clean %2 tools\gyp\v8.sln
+REM Clean build before we continue
+devenv /clean %2 tools\gyp\v8.sln
 IF NOT ERRORLEVEL 0 GOTO Fail
 
-devenv.com /build %2 tools\gyp\v8.sln
+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 "tools\gyp\v8.vcxproj" /projectconfig %2
+REM devenv /build %2 tools\gyp\v8.sln
 IF NOT ERRORLEVEL 0 GOTO Fail
 
 :CopyFiles
@@ -56,4 +83,6 @@ ECHO %1-%2> last_build
 exit
 
 :Fail
+REM Delete the last_build info if this build failed!
+@del /Q last_build
 exit /b 1