brief instruction for 1.6.1:
Download source from here file: mingw32-libwebkitgtk-1.6.1*.rpm (opensuse's patch included)
With 1.6.1 we can use msys-perl 5.8.8 instead of strawberry's and none of my patches below except datadir.patch applicable. At maximum configuration (without geolocation) we can use:
configure --enable-mathml --enable-link-prefetch --enable-animation-api --enable-register-protocol-handler --enable-web-timing --enable-datagrid --enable-page-visibility-api --enable-3d-rendering --enable-image-resizer --enable-touch-icon-loading --prefix=/c/GTKDEVEL --with-gtk=2.0 --with-target=win32 --with-unicode-backend=glib
which require additional gstreamer, in my brief test it gain score: 100 on ACID3 and 296 on http://html5test.com. However there are some regressions: annoying text/image flickering and several widget misplaced also plugins still not implemented yet. Best gtk to use with is probably 2.24.8.
To shrink the runtime dll size to around 40% smaller, force the use of -Os flag (need to manually edit Gnumakefile) or disabling SVG/video will reduce size significantly.
This remaining part is a rough guide to build older WebkitGTK 1.2.x on Windows using MinGW32+MSYS (not cross-compile)
In addition to MinGW+MSYS
important note: It seems the best MinGW to used is the official mingw32 GCC (specifically 4.2, 4.3 or >= 4.5)
Avoid MINGW-W64 (more specifically its win32 api), it will (silently) break JSCore which eventually make many page rendering anomalies.
We need PERL >= 5.8 but since msys
We also need bison, flex and gperf the first two available officially here while gperf (msys version) available here extract them to MSYS' folder.
WebkitGTK (stable) from http://webkitgtk.org/
version 1.2.7 (my last build)
GTK Bundle 2.22 here
download the followings from here
Gettext (both runtime and tool)
LibSoup (source) here
LibXSLT (source) here
That's the minimal, if we enable video support add GStreamer too
We can use older GTK <2.18 but basically we need to coupling it with at least Glib 2.22.5 rather than supplied Glib 2.20.
- I only tried GTK < 2.18 since newer are buggy
- except for GTK Bundle, we need both binary and -dev package.
Extract them to C:\GTKDEVEL folder except for Libxslt and LibSoup we need to compile it first
making a profile file:
Sometime we need different configuration for different situation therefor we can make a config file that we can switch between by running it.
example for GTK-related:
export LDFLAGS="-L/c/GTKDEVEL/lib -Wl,-s"
save above lines as "setgtk" in MSYS' bin folder, now type "
source setgtk" in MSYS console everytime we're compiling GTK related stuff.
We need to compile this ourselves to use it with WebkitGTK instead the binary as pointed in xmlsoft.org
extract the source somewhere
Run MSYS, cd to source folder and type:
(we may need to disable pthread if we found error)
We need to compile this as 1.2.7 require latest version that's not available as binary (thanks to Peter)
cd to source folder and type:
extract the source somewhere
Run MSYS and cd to source folder
mingw32.patch (patch from opensuse for 1.2.6,1.2.7)
datadir.patch (from pawel)
My patches: (use at your own risk)
configure.patch (enabling iframe-sandbox by default)
gtk216.patch if build against GTK < 2.17.3
nosvg.patch if svg support disabled
download and copy patches to webkit source folder
applying patches by typing:
patch -p0 -i patchfile
Some perl files that autogenerate C++ sources are using hardcoded GCC path as "/usr/bin/gcc" instead of $CC variable. This is invalid for MSYS and we need to manually change these files:
replace "/usr/bin/gcc" with "gcc" or alternatively apply this patch (probably broken on different version)
now configure with this command: Assuming we don't have gstreamer:
(If we want no pthread, use --disable-fast-malloc too)
configure --prefix=/c/GTKDEVEL --with-target=win32 --with-unicode-backend=glib --enable-web-sockets --enable-3D-transforms --disable-video
before "make" apply makefile patch first!:
patch -p0 -u -i makefile.patch
Since compile can take hours we'd better use parallel "make". For example if we have dualcore type:
make -j2 > logs.txt
And before you complain "this" and "that" issue please check my bugreport first, and of course please report new bugs :) there are not many Windows zealot there :D