[webkit-qt] Building QtWebkit with WebGL support on Windows XP with MSVC2008 and Qt4.8.4

Maxim Schäfner ms at ecce-terram.de
Thu Aug 8 07:09:15 PDT 2013


Hi Qt-Webkit mailing list members,

we are trying to build our own QtWebkit library which we can distribute along with our Qt using application.
On our application we are using the MSVC Qt4.7.4 binaries from the official Qt download links on their page.
But as we received the request that our application should support the rendering of 3d models in an qwebview
widget, we noticed that the webkit which is used by the qwebview in our application which is currently on Qt4.7.4 does not
support 3d rendering on GPU hardware. Than we realized that we have to explicitly enable that feature by
supporting WebGL in our application's used Webkit. 
Than we be told that if we want to have WebGL support, we have to use the newer Qt5 binaries to enable
that feature. The problem is that at the moment we can't switch to an Qt5+ version, because we have still to
support the older Qt3-classes which as we know are now removed from Qt for version 5+.

After some research we found an url which states that there is a brach of QtWebkit which uses the new
features of Qt5's webkit, but is able to be used on Qt-4.8. This information we read on the following URL:

http://blogs.kde.org/2013/03/15/qtwebkit-230-out

So now we are trying to build our own QtWebkit with the help of the trace.webkit information pages:

http://trac.webkit.org/wiki/QtWebKit
http://trac.webkit.org/wiki/BuildingQtOnWindows
http://trac.webkit.org/wiki/QtWebKitWebGL

After the install of all the needed tools described here: http://trac.webkit.org/wiki/BuildingQtOnWindows
We used the build script which commando is written there:
perl Tools\Scripts\build-webkit --qt --release
With the addition to enable the WebGL support as written here: http://trac.webkit.org/wiki/QtWebKitWebGL
-webgl
With the information of the first page: http://blogs.kde.org/2013/03/15/qtwebkit-230-out
We added some additional parameters as noted there, because we need to be only 32Bit:
--no-webkit2 --no-force-sse2
So with this additions the complete commando we received was this:
perl Tools\Scripts\build-webkit --qt --release --no-webkit2 -no-force-sse2 -webgl

Till now we always used the MSVC 2008 compiler with the available already built binaries to build our application
on Windows. So we want to stay on that compiler for compatibility  with our application. As noted in the given links
we already downloaded the sources of Q4.8.4 which also have the Qt3-classes support.
We already build the Qt4.8.4 sources with MSVC2008 to the respective binaries and set the needed PATH
variables, too.

Then we started the building script for QtWebkit: 
perl Tools\Scripts\build-webkit --qt --release --no-webkit2 -no-force-sse2 -webgl

Unfortunately the building failed with these parameters, with generic compile errors in missing header files.
Then we found out that we maybe need some additional Webkit support libraries as stated here:
http://aautar.digital-radiation.com/blog/?p=85
https://developer.apple.com/opensource/internet/webkit_sptlib_agree.html

But this did't helped either, as we still had generic compile errors.

So now we decided to build QtWebkit only with the default parameters listed here to verify that we
are able to build QtWebkit at all. So we used the default-non-extra-parameters-commando from:
http://trac.webkit.org/wiki/BuildingQtOnWindows
And so the following line:
perl Tools\Scripts\build-webkit --qt --release

And as we see, we are still not possible to build our own QtWebkit, because we still get generic compile errors:
With the first ones are:

…….
NavigatorGeolocation.cpp
Code is generated...
        cl -c -nologo -Zm200 -Zc:wchar_t- -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996 -O2 -MD -GR -EHsc -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_MAKEDLL -DBUILDING_QT__=1 -D
NDEBUG -DBUILDING_WebCore -DBUILDING_WEBKIT -DQT_ASCII_CAST_WARNINGS -DSTATICALLY_LINKED_WITH_JavaScriptCore -DSTATICALLY_LINKED_WITH_WTF -DQT_MAKEDLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK
_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\OwnQtWebkit\qt-everywhere-opensource-src-4.8.4\qt-everywhere-opensour
ce-src-4.8.4\include\QtCore" -I"c:\OwnQtWebkit\qt-every…cutted.away.too.long ;)……….ywhere-opensource-src-4.8.4\mkspec
s\win32-msvc2008" -Foobj\release\ @C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\nm71.tmp
AbstractDatabase.cpp
DOMWindowWebDatabase.cpp
Database.cpp
DatabaseAuthorizer.cpp
DatabaseContext.cpp
DatabaseSync.cpp
WorkerContextWebDatabase.cpp
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(46) : error C2027: use of undefined type "WebCore::WorkerContext"
        c:\ownqtwebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\source\webcore\modules\webdatabase\WorkerContextWebDatabase.h(43): See declaration of 'WebCore::Wo
rkerContext'
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(46) : error C2227: left of "->securityOrigi
n" must point to class/struct/union/generic type.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(46) : error C2227: left of "->canAccessData
base" must point to class/struct/union/generic type.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(46) : error C2027: use of undefined type "WebCore::WorkerContext"
        c:\ownqtwebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\source\webcore\modules\webdatabase\WorkerContextWebDatabase.h(43): See declaration of 'WebCore::Wo
rkerContext'
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(46) : error C2227: left of "->topOrigin" must point to class/struct/union/generic type.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(51) : error C2664: 'WebCore::Database::openDa
tabase': Converting of parameter 1 of 'WebCore::WorkerContext *' in 'WebCore::ScriptExecutionContext *' not possible
        The types which are refernced are not linked; the convert needs an reinterpret_cast-Operator or an type cast in C- or Functionsformat.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(56) : error C2027: use of undefined type "WebCore::WorkerContext"
        c:\ownqtwebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\source\webcore\modules\webdatabase\WorkerContextWebDatabase.h(43): See declaration of 'WebCore::Wo
rkerContext'
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(56) : error C2227: left of "->securityOrigi
n" must point to class/struct/union/generic type.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(56) : error C2227: left of "->canAccessData
base" must point to class/struct/union/generic type.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(56) : error C2027: use of undefined type "WebCore::WorkerContext"
        c:\ownqtwebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\source\webcore\modules\webdatabase\WorkerContextWebDatabase.h(43): See declaration of 'WebCore::Wo
rkerContext'
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(56) : error C2227: left of "->topOrigin" must point to class/struct/union/generic type.
c:\OwnQtWebkit\qtwebkit-developers-qtwebkit-23-qtwebkit-2.3.0\webkit-qtwebkit-23\Source\WebCore\Modules\webdatabase\WorkerContextWebDatabase.cpp(61) : error C2664: 'WebCore::DatabaseSync::op
enDatabaseSync': Converting of parameter 1 of 'WebCore::WorkerContext *' to 'WebCore::ScriptExecutionContext *' not possible
        The types which are refernced are not linked; the convert needs an reinterpret_cast-Operator or an type cast in C- or Functionsformat.
Code is generated...
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 9.0\VC\BIN\cl.EXE"": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Return-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"": Return-Code "0x2"
Stop.
…….
(I translated the errors messages from german to english, I hope they are correctly translated, but the error code is the same)

So the build fails.
Now, what is this web database and what did we wrong in the whole procedure?
Did we missed something? We appreciate any help we get.
Thank you very much if there some one there who can help us with this. 

Thank you, best regards,

Max
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-qt/attachments/20130808/74c81c30/attachment.html>


More information about the webkit-qt mailing list