mirror of
https://github.com/phpv8/v8js.git
synced 2024-11-08 18:58:41 +00:00
Build instructions for V8, version 5.8
This commit is contained in:
parent
11d331f535
commit
cffaed1ead
322
README.Win32.md
322
README.Win32.md
@ -15,21 +15,30 @@ on Windows, since you need to compile PHP with all its dependencies beforehand.
|
|||||||
You need to have Visual Studio 2015 (aka VC14), make sure to install the C++
|
You need to have Visual Studio 2015 (aka VC14), make sure to install the C++
|
||||||
compiler (which is not installed by default any longer).
|
compiler (which is not installed by default any longer).
|
||||||
|
|
||||||
Compiling V8 using GN (required for 5.6 and higher)
|
Compiling V8 using GN (required for 5.2 and higher)
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
||||||
[Build transcript using GN](https://github.com/phpv8/v8js/issues/272) by @Jan-E
|
[Build transcript using GN](https://github.com/phpv8/v8js/issues/287#issuecomment-284222529) by @Jan-E
|
||||||
|
|
||||||
TL;DR: up until 'msbuild all.sln' are the essential steps
|
This is how I built V8 5.8.
|
||||||
Do not forget to build v8_libbase.lib & v8_libplatform.lib afterwards
|
|
||||||
|
TL;DR: these are the essential commands for x64.
|
||||||
|
|
||||||
```
|
```
|
||||||
cd obj\v8_libplatform && lib /out:v8_libplatform.lib *.obj
|
call git checkout 5.8-lkgr
|
||||||
cd ..\\..\obj\v8_libbase && lib /out:v8_libbase.lib *.obj
|
call gclient sync
|
||||||
|
call gn gen v5.8\x64.release --args="is_component_build=true is_debug=false v8_use_snapshot=false enable_nacl=false target_cpu=\"x64\"" --ide=vs
|
||||||
|
cd v5.8\x64.release
|
||||||
|
msbuild all.sln
|
||||||
```
|
```
|
||||||
|
|
||||||
My initial setup was a mixture of the Linux & Windows commands at
|
Prerequisites:
|
||||||
https://www.chromium.org/developers/how-tos/install-depot-tools
|
|
||||||
|
- VC14 aka VS2015 with the C and C++ compilers. The Community edition suffices.
|
||||||
|
- The Windows 10 Debugging Tools. If you did not install the Windows 10 SDK together with VC14, you can do a separate download from https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit => Windows 10 (WinDbg)
|
||||||
|
|
||||||
|
My initial setup was a mixture of the Linux & Windows commands at https://www.chromium.org/developers/how-tos/install-depot-tools
|
||||||
|
|
||||||
```
|
```
|
||||||
D:
|
D:
|
||||||
cd \
|
cd \
|
||||||
@ -42,282 +51,31 @@ cd chromium
|
|||||||
fetch v8
|
fetch v8
|
||||||
git stash
|
git stash
|
||||||
```
|
```
|
||||||
Note: do not add the checkout dir to your path permanently if you've already installed git.exe somewhere in your path: the depot tools will create a git.bat in the checkout dir!
|
|
||||||
|
|
||||||
Transcript of building V8 v5.4.500.43 in a VS2015 x64 command prompt:
|
Then I ran the following batch script, inside a 'VS2015 x64 Native Tools Command Prompt' (x64) or a 'VS2015 x86 Native Tools Command Prompt' (x86):
|
||||||
|
|
||||||
```
|
```
|
||||||
D:\chromium\v8>set path=D:\chromium;%path%
|
D:
|
||||||
|
cd \chromium\v8
|
||||||
D:\chromium\v8>set GYP_MSVS_VERSION=2015
|
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
|
||||||
|
set WindowsSDK_ExecutablePath_x64=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\x64\
|
||||||
D:\chromium\v8>set DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
set WindowsSDK_ExecutablePath_x86=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\
|
||||||
|
set path=D:\chromium;%path%
|
||||||
D:\chromium\v8>set GYP_CHROMIUM_NO_ACTION=0
|
set GYP_MSVS_VERSION=2015
|
||||||
|
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||||
D:\chromium\v8>git checkout 5.4-lkgr
|
set GYP_CHROMIUM_NO_ACTION=0
|
||||||
Checking out files: 100% (1561/1561), done.
|
set xn=x86
|
||||||
Switched to branch '5.4-lkgr'
|
if not %platform%x==x set xn=%platform%
|
||||||
Your branch is up-to-date with 'origin/5.4-lkgr'.
|
if %xn%==X64 set xn=x64
|
||||||
|
call git checkout 5.8-lkgr
|
||||||
D:\chromium\v8>gclient sync
|
call git pull
|
||||||
Syncing projects: 45% (11/24) v8/third_party/instrumented_libraries
|
call gclient sync
|
||||||
|
call gn gen v5.8\%xn%.release --args="is_component_build=true is_debug=false v8_use_snapshot=false enable_nacl=false target_cpu=\"%xn%\"" --ide=vs
|
||||||
D:\chromium\v8>gclient sync
|
cd v5.8\%xn%.release
|
||||||
Syncing projects: 100% (24/24) v8/third_party/icu
|
msbuild all.sln /t:clean
|
||||||
|
msbuild all.sln
|
||||||
v8/tools/mb (ERROR)
|
pause
|
||||||
----------------------------------------
|
unittests
|
||||||
[0:00:32] Started.
|
|
||||||
[0:00:37] From https://chromium.googlesource.com/chromium/src/tools/mb
|
|
||||||
[0:00:37] dc02dd5..b1e1230 master -> origin/master
|
|
||||||
----------------------------------------
|
|
||||||
Error: 20>
|
|
||||||
20> ____ v8\tools\mb at 99788b8b516c44d7db25cfb68695bc234fdee5ed
|
|
||||||
20> You have unstaged changes.
|
|
||||||
20> Please commit, stash, or reset.
|
|
||||||
|
|
||||||
D:\chromium\v8>cd tools\mb
|
|
||||||
|
|
||||||
D:\chromium\v8\tools\mb>git stash
|
|
||||||
Saved working directory and index state WIP on (no branch): 99788b8 Fix libfuzzer configura
|
|
||||||
tions to actually use proprietary codecs.
|
|
||||||
HEAD is now at 99788b8 Fix libfuzzer configurations to actually use proprietary codecs.
|
|
||||||
|
|
||||||
D:\chromium\v8\tools\mb>cd ..\..
|
|
||||||
|
|
||||||
D:\chromium\v8>gclient sync
|
|
||||||
Syncing projects: 37% ( 9/24) v8/test/test262/data
|
|
||||||
|
|
||||||
After a lot or messages:
|
|
||||||
|
|
||||||
Hook ''D:\chromium\python276_bin\python.exe' v8/gypfiles/gyp_v8' took 11.56 secs
|
|
||||||
|
|
||||||
D:\chromium\v8>gn args v5.4/x64.release
|
|
||||||
Waiting for editor on "D:\chromium\v8\v5.4\x64.release\args.gn"...
|
|
||||||
|
|
||||||
In your editor change args.gn to something like
|
|
||||||
|
|
||||||
# Build arguments go here. Examples:
|
|
||||||
is_component_build = true
|
|
||||||
is_debug = false
|
|
||||||
# See "gn args <out_dir> --list" for available build arguments.
|
|
||||||
target_cpu="x64"
|
|
||||||
v8_target_cpu="x64"
|
|
||||||
|
|
||||||
And close your editor
|
|
||||||
|
|
||||||
In the VS2015 command prompt:
|
|
||||||
|
|
||||||
Generating files...
|
|
||||||
Done. Made 60 targets from 43 files in 2791ms
|
|
||||||
|
|
||||||
D:\chromium\v8>gn gen v5.4/x64.release --ide=vs
|
|
||||||
Generating Visual Studio projects took 268ms
|
|
||||||
Done. Made 60 targets from 43 files in 2374ms
|
|
||||||
|
|
||||||
D:\chromium\v8>cd v5.4\x64.release
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>msbuild all.sln
|
|
||||||
Microsoft (R) Build Engine version 14.0.25420.1
|
|
||||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
|
||||||
|
|
||||||
Building the projects in this solution one at a time. To enable parallel build, please add
|
|
||||||
the "/m" switch.
|
|
||||||
Build started 24/11/16 21:40:52.
|
|
||||||
Project "D:\chromium\v8\v5.4\x64.release\all.sln" on node 1 (default targets).
|
|
||||||
ValidateSolutionConfiguration:
|
|
||||||
Building solution configuration "GN|x64".
|
|
||||||
Project "D:\chromium\v8\v5.4\x64.release\all.sln" (1) is building "D:\chromium\v8\v5.4\x64
|
|
||||||
.release\obj\build\config\sanitizers\deps.vcxproj" (2) on node 1 (default targets).
|
|
||||||
Build:
|
|
||||||
call ninja.exe -C ../../../../../../v5.4/x64.release/ obj/build/config/sanitizers/deps.s
|
|
||||||
tamp
|
|
||||||
ninja: Entering directory `../../../../../../v5.4/x64.release/'
|
|
||||||
[1/2] STAMP obj/build/config/sanitizers/deps_no_options.stamp
|
|
||||||
[2/2] STAMP obj/build/config/sanitizers/deps.stamp
|
|
||||||
|
|
||||||
etc. etc.
|
|
||||||
|
|
||||||
[902/906] CXX obj/v8_external_snapshot/snapshot-external.obj
|
|
||||||
[903/906] STAMP obj/v8_external_snapshot.stamp
|
|
||||||
[904/906] STAMP obj/v8_maybe_snapshot.stamp
|
|
||||||
[905/906] LINK(DLL) v8.dll v8.dll.lib v8.dll.pdb
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj]
|
|
||||||
|
|
||||||
[906/906] LINK d8.exe d8.exe.pdb
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj]
|
|
||||||
|
|
||||||
Done Building Project "D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj" (default targets).
|
|
||||||
|
|
||||||
Project "D:\chromium\v8\v5.4\x64.release\all.sln" (1) is building "D:\chromium\v8\v5.4\x64.release\obj\fuzzer_support.vcxproj" (7) on node 1 (default targets).
|
|
||||||
Build:
|
|
||||||
call ninja.exe -C ../../../v5.4/x64.release/ obj/fuzzer_support.stamp
|
|
||||||
ninja: Entering directory `../../../v5.4/x64.release/'
|
|
||||||
[1/3] STAMP obj/fuzzer_support.inputdeps.stamp
|
|
||||||
[2/3] CXX obj/fuzzer_support/fuzzer-support.obj
|
|
||||||
[3/3] STAMP obj/fuzzer_support.stamp
|
|
||||||
Done Building Project "D:\chromium\v8\v5.4\x64.release\obj\fuzzer_support.vcxproj" (default targets).
|
|
||||||
|
|
||||||
Project "D:\chromium\v8\v5.4\x64.release\all.sln" (1) is building "D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj" (8) on node 1 (default targets).
|
|
||||||
Build:
|
|
||||||
call ninja.exe -C ../../../v5.4/x64.release/ obj/gn_all.stamp
|
|
||||||
ninja: Entering directory `../../../v5.4/x64.release/'
|
|
||||||
[1/333] STAMP obj/v8_hello_world.inputdeps.stamp
|
|
||||||
[2/333] STAMP obj/json_fuzzer.inputdeps.stamp
|
|
||||||
[3/333] STAMP obj/parser_fuzzer.inputdeps.stamp
|
|
||||||
[4/333] STAMP obj/v8_parser_shell.inputdeps.stamp
|
|
||||||
[5/333] STAMP obj/regexp_fuzzer.inputdeps.stamp
|
|
||||||
|
|
||||||
etc. etc.
|
|
||||||
|
|
||||||
Done Building Project "D:\chromium\v8\v5.4\x64.release\all.sln" (default targets).
|
|
||||||
|
|
||||||
|
|
||||||
Build succeeded.
|
|
||||||
|
|
||||||
"D:\chromium\v8\v5.4\x64.release\all.sln" (default target) (1) ->
|
|
||||||
"D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj" (default target) (6) ->
|
|
||||||
(Build target) ->
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\d8.vcxproj]
|
|
||||||
|
|
||||||
|
|
||||||
"D:\chromium\v8\v5.4\x64.release\all.sln" (default target) (1) ->
|
|
||||||
"D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj" (default target) (8) ->
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:ICF' specification [D:\chromium\v8\v5.4\x64.release\obj\gn_all.vcxproj]
|
|
||||||
|
|
||||||
16 Warning(s)
|
|
||||||
0 Error(s)
|
|
||||||
|
|
||||||
Time Elapsed 00:41:27.06
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>type d:\batch\v8x64.bat
|
|
||||||
xcopy v8*.lib ..\win64build.vc14\lib\ /y
|
|
||||||
xcopy v8*.dll ..\win64build.vc14\bin\ /y
|
|
||||||
xcopy v8*.dll.pdb ..\win64build.vc14\bin\ /y
|
|
||||||
xcopy icu*.lib ..\win64build.vc14\lib\ /y
|
|
||||||
xcopy icu*.dll ..\win64build.vc14\bin\ /y
|
|
||||||
xcopy icu*.dll.pdb ..\win64build.vc14\bin\ /y
|
|
||||||
cd obj\v8_libplatform
|
|
||||||
lib /out:..\..\..\win64build.vc14\lib\v8_libplatform.lib *.obj
|
|
||||||
xcopy ..\v8_libplatform_cc.pdb ..\..\..\win64build.vc14\lib\ /y
|
|
||||||
cd ..\..\obj\v8_libbase
|
|
||||||
lib /out:..\..\..\win64build.vc14\lib\v8_libbase.lib *.obj
|
|
||||||
xcopy ..\v8_libbase_cc.pdb ..\..\..\win64build.vc14\lib\ /y
|
|
||||||
cd ..\..\
|
|
||||||
xcopy ..\..\include\*.h ..\win64build.vc14\include\ /s /y
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>d:\batch\v8x64.bat
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy v8*.lib ..\win64build.vc14\lib\ /y
|
|
||||||
D:v8.dll.lib
|
|
||||||
D:v8_parser_shell.lib
|
|
||||||
D:v8_simple_json_fuzzer.lib
|
|
||||||
D:v8_simple_parser_fuzzer.lib
|
|
||||||
D:v8_simple_regexp_fuzzer.lib
|
|
||||||
D:v8_simple_wasm_asmjs_fuzzer.lib
|
|
||||||
D:v8_simple_wasm_fuzzer.lib
|
|
||||||
7 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy v8*.dll ..\win64build.vc14\bin\ /y
|
|
||||||
D:v8.dll
|
|
||||||
1 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy v8*.dll.pdb ..\win64build.vc14\bin\ /y
|
|
||||||
D:v8.dll.pdb
|
|
||||||
1 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy icu*.lib ..\win64build.vc14\lib\ /y
|
|
||||||
D:icui18n.dll.lib
|
|
||||||
D:icuuc.dll.lib
|
|
||||||
2 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy icu*.dll ..\win64build.vc14\bin\ /y
|
|
||||||
D:icui18n.dll
|
|
||||||
D:icuuc.dll
|
|
||||||
2 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy icu*.dll.pdb ..\win64build.vc14\bin\ /y
|
|
||||||
D:icui18n.dll.pdb
|
|
||||||
D:icuuc.dll.pdb
|
|
||||||
2 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>cd obj\v8_libplatform
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release\obj\v8_libplatform>lib /out:..\..\..\win64build.vc14\lib\v8
|
|
||||||
_libplatform.lib *.obj
|
|
||||||
Microsoft (R) Library Manager Version 14.00.24215.1
|
|
||||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
|
||||||
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release\obj\v8_libplatform>xcopy ..\v8_libplatform_cc.pdb ..\..\..\
|
|
||||||
win64build.vc14\lib\ /y
|
|
||||||
..\v8_libplatform_cc.pdb
|
|
||||||
1 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release\obj\v8_libplatform>cd ..\..\obj\v8_libbase
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release\obj\v8_libbase>lib /out:..\..\..\win64build.vc14\lib\v8_lib
|
|
||||||
base.lib *.obj
|
|
||||||
Microsoft (R) Library Manager Version 14.00.24215.1
|
|
||||||
Copyright (C) Microsoft Corporation. All rights reserved.
|
|
||||||
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release\obj\v8_libbase>xcopy ..\v8_libbase_cc.pdb ..\..\..\win64bui
|
|
||||||
ld.vc14\lib\ /y
|
|
||||||
..\v8_libbase_cc.pdb
|
|
||||||
1 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release\obj\v8_libbase>cd ..\..\
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>xcopy ..\..\include\*.h ..\win64build.vc14\include\ /s /y
|
|
||||||
..\..\include\v8-debug.h
|
|
||||||
..\..\include\v8-experimental.h
|
|
||||||
..\..\include\v8-platform.h
|
|
||||||
..\..\include\v8-profiler.h
|
|
||||||
..\..\include\v8-testing.h
|
|
||||||
..\..\include\v8-util.h
|
|
||||||
..\..\include\v8-version.h
|
|
||||||
..\..\include\v8.h
|
|
||||||
..\..\include\v8config.h
|
|
||||||
..\..\include\libplatform\libplatform.h
|
|
||||||
..\..\include\libplatform\v8-tracing.h
|
|
||||||
11 File(s) copied
|
|
||||||
|
|
||||||
D:\chromium\v8\v5.4\x64.release>type ..\..\include\v8-version.h
|
|
||||||
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
#ifndef V8_INCLUDE_VERSION_H_ // V8_VERSION_H_ conflicts with src/version.h
|
|
||||||
#define V8_INCLUDE_VERSION_H_
|
|
||||||
|
|
||||||
// These macros define the version number for the current version.
|
|
||||||
// NOTE these macros are used by some of the tool scripts and the build
|
|
||||||
// system so their names cannot be changed without changing the scripts.
|
|
||||||
#define V8_MAJOR_VERSION 5
|
|
||||||
#define V8_MINOR_VERSION 4
|
|
||||||
#define V8_BUILD_NUMBER 500
|
|
||||||
#define V8_PATCH_LEVEL 43
|
|
||||||
|
|
||||||
// Use 1 for candidates and 0 otherwise.
|
|
||||||
// (Boolean macro values are not supported by all preprocessors.)
|
|
||||||
#define V8_IS_CANDIDATE_VERSION 0
|
|
||||||
|
|
||||||
#endif // V8_INCLUDE_VERSION_H_
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Compiling V8 5.5 (and before)
|
Compiling V8 5.5 (and before)
|
||||||
|
Loading…
Reference in New Issue
Block a user