XP build 2623 with H.264 successful using these steps.
Note. The steps are tweaked in order to obtain a successful 32-bit build for Windows XP using GYP.
If there are other errors/configurations you need to have, you need to tweak on your own.
1. Environment:
- default cmd.exe on Windows 7 x64; Visual Studio 2015 (+ documented prerequisites)
- environment variables
- Code: Select all
set CEF_USE_GN=0
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_DEFINES=target_arch=ia32 proprietary_codecs=1 ffmpeg_branding=Chrome
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_MSVS_VERSION=2015
set PYTHONPATH=C:\bin\python\x86\27
- Python 2.7 32-bit in C:\bin\python\x86\27
- root directory for build: C:\cef\2623.vs2015
2. Modify automate-git.py:
- Code: Select all
def get_build_directory_name(is_debug):
build_dir = ('Debug' if is_debug else 'Release')
if use_gn:
# CEF uses a consistent directory naming scheme for GN via
# GetAllPlatformConfigs in tools/gn_args.py.
build_dir += '_'
if options.x64build:
build_dir += '_GN_x64'
elif options.armbuild:
build_dir += '_GN_arm'
else:
build_dir += '_GN_x86'
else:
# GYP outputs both x86 and x64 builds to the same directory on Linux and
# Mac OS X. On Windows it suffixes the directory name for x64 builds.
if platform == 'windows' and options.x64build:
build_dir += '_x64'
return build_dir
This is because in that branch the directories were Release and Release_x64, not Release_x86 and Release_x64.
As stated, I don't check or care about post-XP or XP 64-bit (great OS, by the way).
3. Build command line:
- Code: Select all
python C:\cef\2623.vs2015\automate-git.py --download-dir=C:\cef\2623.vs2015\x86 --branch=2623
4. Changes in source code for compiling with VS 2015
Modifications is sources:
- third_party/skia/src/core/SkEdge.cpp:
line 231:
+fCurveCount = SkToS8(1LL << shift);
-fCurveCount = SkToS8(1 << shift);
Diff:
- Code: Select all
src/core/SkEdge.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/SkEdge.cpp b/src/core/SkEdge.cpp
index c64896f2e0..b7fa6b601e 100644
--- a/src/core/SkEdge.cpp
+++ b/src/core/SkEdge.cpp
@@ -228,7 +228,7 @@ int SkQuadraticEdge::setQuadratic(const SkPoint pts[3], int shift)
fWinding = SkToS8(winding);
//fCubicDShift only set for cubics
- fCurveCount = SkToS8(1 << shift);
+ fCurveCount = SkToS8(1LL << shift);
/*
* We want to reformulate into polynomial form, to make it clear how we
- src/ui/gl/gl_gl_api_implementation.cc
after #include "ui/gl/gl_version_info.h"
+
+#ifndef GL_CONTEXT_LOST_KHR
+#define GL_CONTEXT_LOST_KHR 0x0507
+#endif
Diff:
- Code: Select all
ui/gl/gl_gl_api_implementation.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc
index 3f3b0cded0f0..9ae9acaf1a5b 100644
--- a/ui/gl/gl_gl_api_implementation.cc
+++ b/ui/gl/gl_gl_api_implementation.cc
@@ -17,6 +17,10 @@
#include "ui/gl/gl_switches.h"
#include "ui/gl/gl_version_info.h"
+#ifndef GL_CONTEXT_LOST_KHR
+#define GL_CONTEXT_LOST_KHR 0x0507
+#endif
+
namespace gfx {
// The GL Api being used. This could be g_real_gl or gl_trace_gl
- src/google_apis/gaia/oauth2_token_service.cc
- Code: Select all
google_apis/gaia/oauth2_token_service.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/google_apis/gaia/oauth2_token_service.cc b/google_apis/gaia/oauth2_token_service.cc
index ed20d1356249..9536ba94a153 100644
--- a/google_apis/gaia/oauth2_token_service.cc
+++ b/google_apis/gaia/oauth2_token_service.cc
@@ -310,7 +310,7 @@ void OAuth2TokenService::Fetcher::OnGetTokenFailure(
int64_t OAuth2TokenService::Fetcher::ComputeExponentialBackOffMilliseconds(
int retry_num) {
DCHECK(retry_num < max_fetch_retry_num_);
- int64_t exponential_backoff_in_seconds = 1 << retry_num;
+ int64_t exponential_backoff_in_seconds = 1LL << retry_num;
// Returns a backoff with randomness < 1000ms
return (exponential_backoff_in_seconds + base::RandDouble()) * 1000;
}
- src/third_party/swiftshader/eglext.h (no diff here)
- Code: Select all
...
typedef void *EGLSyncKHR;
+typedef EGLSyncKHR EGLSync;
typedef intptr_t EGLAttribKHR;
+typedef EGLAttribKHR EGLAttrib;
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);
...
5. After modifications, recompilation (from the *same* console):
- Code: Select all
$ cd x86\chromium\src
$ ninja -C out\Release
6. Finally, you need dbghelp.dll, otherwise cefclient will start but will crash at initialization.
Story
here,
here and
here.
dbghelp.dll produced by ninja build (version 6.12.2.633 on my build) worked for me.