Browse Source

Update for PHP7/VC14

Stefan Siegl 9 years ago
parent
commit
10d0cc6e37
1 changed files with 27 additions and 47 deletions
  1. 27 47
      README.Win32.md

+ 27 - 47
README.Win32.md

@@ -12,25 +12,14 @@ currently broken).
 Compared to installation on GNU/Linux it's way more tedious to install V8Js
 Compared to installation on GNU/Linux it's way more tedious to install V8Js
 on Windows, since you need to compile PHP with all its dependencies beforehand.
 on Windows, since you need to compile PHP with all its dependencies beforehand.
 
 
-The problem is that Google v8 requires (at least) Visual Studio 2013 as it
-uses certain C++11 features not available in Visual Studio 2012.
-
-Unfortunately the [PHP for Windows](http://windows.php.net/) project still
-relies on either Visual Studio 2012 or Visual Studio 2008.
-It supplies pre-compiled binary archives of required dependencies, however also
-compiled with Visual Studio 2008 and 2012 only.
-
-Since it is not compatible to link a v8 compiled with Visual Studio 2013 with
-a PHP interpreter compiled with Visual Studio 2012, you need to step up and
-compile PHP with Visual Studio 2013.  This requires to compile dependencies as
-well, if you would like to use certain extensions or e.g. the Apache SAPI.
-
+You need to have Visual Studio 2015 (aka VC14), make sure to install the C++
+compiler (which is not installed by default any longer).
 
 
 Compiling v8
 Compiling v8
 ------------
 ------------
 
 
 The Google v8 project already has excellent step-by-step guide on
 The Google v8 project already has excellent step-by-step guide on
-[how to build with gyp](https://code.google.com/p/v8-wiki/wiki/BuildingWithGYP).
+[how to build with gyp](https://github.com/v8/v8/wiki/Building%20with%20Gyp).
 
 
 As a short run through:
 As a short run through:
 
 
@@ -42,18 +31,13 @@ As a short run through:
 Then open a command prompt
 Then open a command prompt
 
 
 ```
 ```
-cd \
-git clone https://github.com/v8/v8.git
-cd v8
-svn co http://gyp.googlecode.com/svn/trunk build/gyp
-svn co https://src.chromium.org/chrome/trunk/deps/third_party/icu46 third_party/icu
-svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@89111 third_party/python_26
-svn co http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin
-svn co http://googletest.googlecode.com/svn/trunk testing/gtest --revision 643
-svn co http://googlemock.googlecode.com/svn/trunk testing/gmock --revision 410
-
+git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 
+fetch v8
+git checkout 4.7.80.25
+gclient sync
 python build\gyp_v8 -Dcomponent=shared_library -Dv8_use_snapshot=0
 python build\gyp_v8 -Dcomponent=shared_library -Dv8_use_snapshot=0
-"\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.com" /build Release build/All.sln
+CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"
+msbuild build\All.sln /m /p:Configuration=Release
 ```
 ```
 
 
 (alternatively `start build/all.sln` ... and build within the Visual Studio GUI)
 (alternatively `start build/all.sln` ... and build within the Visual Studio GUI)
@@ -63,13 +47,8 @@ python build\gyp_v8 -Dcomponent=shared_library -Dv8_use_snapshot=0
 Compiling PHP
 Compiling PHP
 -------------
 -------------
 
 
-There [Build your own PHP on Windows](https://wiki.php.net/internals/windows/stepbystepbuild)
-guide on the PHP wiki.  However it concentrates on Visual Studio 2008 and 2012.
-Since you need to use Visual Studio 2013 it doesn't apply very well.
-
-This document concentrates on building V8Js for CLI SAPI (only).  In order
-to enable more extensions you need to provide further dependencies, which may
-be more or less cumbersome to build with Visual Studio beforehand.
+Then follow the [build your own PHP on Windows](https://wiki.php.net/internals/windows/stepbystepbuild)
+guide on the PHP wiki.  Use Visual Studio 2015 with PHP7.
 
 
 A quick run through:
 A quick run through:
 
 
@@ -78,33 +57,34 @@ A quick run through:
 * Download http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip
 * Download http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip
 * ... and unpack to \php-sdk
 * ... and unpack to \php-sdk
 
 
-Open "VS2013 x86 Native Tools Command Prompt"
+Open "VS2015 x86 Native Tools Command Prompt"
 
 
 ```
 ```
 cd \php-sdk
 cd \php-sdk
 bin\phpsdk_setvars.bat
 bin\phpsdk_setvars.bat
 bin\phpsdk_buildtree.bat phpdev
 bin\phpsdk_buildtree.bat phpdev
 
 
-mkdir vc12
-mkdir vc12\x86
-mkdir vc12\x86\deps
-mkdir vc12\x86\deps\bin
-mkdir vc12\x86\deps\include
-mkdir vc12\x86\deps\lib
+mkdir vc14
+mkdir vc14\x86
+mkdir vc14\x86\deps
+mkdir vc14\x86\deps\bin
+mkdir vc14\x86\deps\include
+mkdir vc14\x86\deps\lib
 ```
 ```
 
 
-* download PHP from http://php.net/get/php-5.5.18.tar.gz/from/a/mirror
-  and unpack to below `\php-sdk\phpdev\vc12\x86`
-* from `\v8\build\Release\lib` copy `icui18n.lib`, `icuuc.lib` and `v8.lib`
-  to deps\lib folder
+* download PHP from http://php.net/get/php-7.0.1.tar.gz/from/a/mirror
+  and unpack to below `\php-sdk\phpdev\vc14\x86`
+* from `\v8\build\Release\lib` copy `icui18n.lib`, `icuuc.lib`, `v8.lib`,
+  `v8_libbase.lib` and `v8_libplatform.lib` to deps\lib folder
 * from `\v8\include` copy all v8*.h files to deps\include folder
 * from `\v8\include` copy all v8*.h files to deps\include folder
+* copy `v8-platform.h` again to deps\include\include folder
 * download V8Js and unpack it into a separate directory below `ext` folder
 * download V8Js and unpack it into a separate directory below `ext` folder
 * make sure `config.w32` file inside that folder defines version of the compiled v8
 * make sure `config.w32` file inside that folder defines version of the compiled v8
 
 
-(still in "VS2013 x86 Native Tools Command Prompt")
+(still in "VS2015 x86 Native Tools Command Prompt")
 
 
 ```
 ```
-cd \php-sdk\phpdev\vc12\x86\php-5.5.18\
+cd \php-sdk\phpdev\vc14\x86\php-7.0.1\
 
 
 buildconf
 buildconf
 configure --disable-all --enable-cli --with-v8js
 configure --disable-all --enable-cli --with-v8js
@@ -115,12 +95,12 @@ After nmake completes the php.exe is in Release_TS\ directory.
 
 
 In order to try things out in place, copy over `icui18n.dll`, `icuuc.dll` and
 In order to try things out in place, copy over `icui18n.dll`, `icuuc.dll` and
 `v8.dll` file from `\v8\build\Release` folder to
 `v8.dll` file from `\v8\build\Release` folder to
-`\php-sdk\phpdev\vc12\x86\php-5.5.18\Release_TS\` first.
+`\php-sdk\phpdev\vc14\x86\php-7.0.1\Release_TS\` first.
 
 
 Then run
 Then run
 
 
 ```
 ```
-php.exe -d extension=php_v8js.dll -d extension_dir=\php-sdk\phpdev\vc12\x86\php-5.5.18\Release_TS\
+Release_TS\php.exe -d extension=php_v8js.dll -d extension_dir=Release_TS\
 ```
 ```
 
 
 Alternatively copy all stuff to c:\php\ (including the three DLL files from
 Alternatively copy all stuff to c:\php\ (including the three DLL files from