Bug 37026 - [Qt] WebKit does not build on Windows with --3d-canvas
Summary: [Qt] WebKit does not build on Windows with --3d-canvas
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Qt (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows XP
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-02 10:01 PDT by Jarkko Sakkinen
Modified: 2010-04-06 15:55 PDT (History)
2 users (show)

See Also:


Attachments
Windows compilation fix (4.79 KB, patch)
2010-04-03 02:59 PDT, Jarkko Sakkinen
no flags Details | Formatted Diff | Diff
Files that contain createCanonicalUUIDString text in webkit source tree. (47.47 KB, image/png)
2010-04-03 06:59 PDT, Jarkko Sakkinen
no flags Details
Windows compilation fix (4.37 KB, patch)
2010-04-05 14:44 PDT, Jarkko Sakkinen
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jarkko Sakkinen 2010-04-02 10:01:20 PDT
Compilation fails in following conditions:
- '--qt --3d-canvas' is given to build-webkit script.
- Visual Studio 2008 is used as the compiler (win32-msvc2008, Windows SDK 6.0A)

Compilation issues should be fixed.
Comment 1 Jarkko Sakkinen 2010-04-03 02:59:04 PDT
Created attachment 52493 [details]
Windows compilation fix

Note that I have commeted out UUID.cpp from WebCore. Including it in WebCore causes linker error with out without 3d-canvas:

        link /LIBPATH:"c:\Qt\4.6.0\lib" /NOLOGO /INCREMENTAL:NO /DLL /MANIFEST /MANIFESTFILE:"obj/release\QtWebKit.inter

mediate.manifest" /VERSION:4.60 /OUT:..\lib\QtWebKit4.dll @C:\DOCUME~1\sakkijar\LOCALS~1\Temp\nmD1.tmp
   Creating library ..\lib\QtWebKit4.lib and object ..\lib\QtWebKit4.exp
UUID.obj : error LNK2019: unresolved external symbol __imp__StringFromGUID2@12 referenced in function "class WebCore::St

ring __cdecl WebCore::createCanonicalUUIDString(void)" (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
UUID.obj : error LNK2019: unresolved external symbol __imp__CoCreateGuid@4 referenced in function "class WebCore::String

 __cdecl WebCore::createCanonicalUUIDString(void)" (?createCanonicalUUIDString@WebCore@@YA?AVString@1@XZ)
..\lib\QtWebKit4.dll : fatal error LNK1120: 2 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

AND function createCanonicalUUIDString is not used in anyfile under webkit tree.
Comment 2 Jarkko Sakkinen 2010-04-03 06:59:49 PDT
Created attachment 52496 [details]
Files that contain createCanonicalUUIDString text in webkit source tree.
Comment 3 Oliver Hunt 2010-04-03 18:01:14 PDT
Comment on attachment 52493 [details]
Windows compilation fix

A quick question -- is there a qt specific backend intended for webgl?

Ken & I plan on having a shared GraphicsContext3DGL.cpp style backend which implements all OpenGL-backed APIs so that there's as little duplicated functionality as possible.

--Oliver
Comment 4 Jarkko Sakkinen 2010-04-04 01:17:09 PDT
Yes, under platform/graphics/qt. I think it is good goal eventually merge common implementation together after platform specific issues are resolved in their own "sandboxes". At the moment I'm resolving integration with accelerated compositing. After that is resolved I think platform specific blocks for Qt are there and merging could be started.

One thing I don't like in Chrome implementation (that seems to be cross-platform atleast on desktop targets) is the dependency on GLEW.
Comment 5 Jarkko Sakkinen 2010-04-04 01:29:04 PDT
Sorry forgot to mention the file: GraphicsContext3DQt.cpp.

I think there are exactly four things that should be platform specific:

- Creation of GL context
- Activation of GL context
- Painting of main FBO
- API resolver that gives set of function pointers

Maybe this functionality should be represented with some kind of adapter?
Comment 6 Jarkko Sakkinen 2010-04-05 14:44:54 PDT
Created attachment 52576 [details]
Windows compilation fix

Removed WebCore.pro change since it seems to link properly after all.
Comment 7 Laszlo Gombos 2010-04-05 23:41:41 PDT
Comment on attachment 52576 [details]
Windows compilation fix

>  // FIXME: Find a better way to avoid the name confliction for NO_ERROR.
> -#if ((PLATFORM(CHROMIUM) && OS(WINDOWS)) || PLATFORM(WIN))
> +#if ((PLATFORM(CHROMIUM) && OS(WINDOWS)) || PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS)))
>  #undef NO_ERROR
>  #endif

It seems to me that this test should be simply OS(WINDOWS), instead of listing all the ports one-by-one that builds on Windows.

This looks good to me as a build fix, r+.
Comment 8 WebKit Commit Bot 2010-04-06 15:55:19 PDT
Comment on attachment 52576 [details]
Windows compilation fix

Clearing flags on attachment: 52576

Committed r57174: <http://trac.webkit.org/changeset/57174>
Comment 9 WebKit Commit Bot 2010-04-06 15:55:24 PDT
All reviewed patches have been landed.  Closing bug.