Important: Please read the Qt Code of Conduct -

Cannot build Qt Webkit with version 4.7.1: configure.exe -release -platform win32-icc

  • I want to build the Qt frameworks from source with Intel compiler. Everything seems to work fine, except I can't get Qtwebkit4.dll to build. I use the configure command:

    configure.exe -release -platform win32-icc
    nmake (Webkit was not built by default)

    configure.exe -release -webkit -platform win32-icc
    nmake (nmake error. Looks like jscore.lib was built, but nmake was looking for jscore.a, why?)

    Modify the qmake.conf file in win32-msvc2008 and change MS compiler/linker (cl, link) to Intel compiler/linker (icl, xilink)

    configure.exe -release -webkit -platform win32-msvc2008
    nmake (Successfully built QtWebkit4.dll with Intel compiler).

    What is the problem when I use configure and set -platform win32-icc?


  • I think that in order to get any help you will need to post some actual error messages; I've not built Qt with the Intel compiler in quite a long while, but there's not enough info for me to even have a chance.

  • This is the error I am seeing when I run:

    configure -release -webkit -platform win32-icc

        C:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\bin\moc.exe -DQT_SHARE

    _HAVE_MMX -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 @tmp\moc\release_shared/
    mocinclude.tmp -D__INTEL_COMPILER -DWIN32 ..\WebKit\qt\Api\qwebinspector.h -o tm
    c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\bin\rcc.exe -name WebC
    ore WebCore.qrc -o tmp\rcc\release_shared\qrc_WebCore.cpp
    c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\bin\rcc.exe -name WebK
    it inspector\front-end\WebKit.qrc -o tmp\rcc\release_shared\qrc_WebKit.cpp
    NMAKE : fatal error U1073: don't know how to make '..\JavaScriptCore\release\lib
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
    \nmake.exe"' : return code '0x2'
    NMAKE : fatal error U1077: 'cd' : return code '0x2'

  • Hm, I've forgotten - does icc always name its static archive with ".a", even when it's in Microsoft mode?
    Also, are you attempting to do two builds of Qt at the same time (e.g., an x86 build and an x64 build)?

  • No, on Windows intel compilers builds a .lib. Intel compiler did create jscore.lib, but nmake is expecting a ".a" which I assume is more Mac or Linux version.

    I was only trying to build for x86.

  • Would you do me a favour and post that makefile to Pastebin?

  • I'm new to Qt in general and all the protocols. Hopefully, I did it correctly. I pasted the Makefile her:

  • Er, sorry - I wasn't sufficiently specific. That's the top-level makefile; I need the one at src/3rdparty/webkit/WebCore/Makefile (since presumably that one is the one which is dying).

  • My fault, should have figure that out. Here's the Makefile for QtWebkit

  • Still not it, argh... how about Makefile.debug in that dir? :)

  • The makefile seems to be too large (550K lines) for Pastebin to handle. Server is timing out after trying to submit. Anyway, I see the following in the Makefile:

    Here's it's using jscore.lib

    LIBS = ..\JavaScriptCore\release\jscore.lib winmm.lib gdi32.lib user32.lib advapi32.lib gdi32.lib shell32.lib shlwapi.lib user32.lib version.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\phonon4.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\QtGui4.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\QtNetwork4.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\QtCore4.lib tmp\obj\release_shared\QtWebKit_resource.res

    But here, it's specifying libjscore.a

    ####### Build rules

    first: all
    all: Makefile.Release ........\lib\QtWebKit.prl $(DESTDIR_TARGET)

    $(DESTDIR_TARGET): $(OBJECTS) ..\JavaScriptCore\release\libjscore.a tmp\obj\release_shared\QtWebKit_resource.res

    In the working Makefile, where I modify the configure command to: configure -release -webkit -platform win32-msvc2008

    The Makefile generated has both jscore.lib in both places

    LIBS = /LIBPATH:../JavaScriptCore/debug ../JavaScriptCore/debug\jscore.lib winmm.lib gdi32.lib user32.lib advapi32.lib gdi32.lib shell32.lib shlwapi.lib user32.lib version.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\phonond4.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\QtGuid4.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\QtNetworkd4.lib c:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\lib\QtCored4.lib tmp\obj\debug_shared\QtWebKitd_resource.res

    ####### Build rules

    first: all
    all: Makefile.Debug ........\lib\QtWebKitd.prl $(DESTDIR_TARGET)

    $(DESTDIR_TARGET): $(OBJECTS) ..\JavaScriptCore\debug\jscore.lib tmp\obj\debug_shared\QtWebKitd_resource.res

    Either configure or qmake is screwing up the generation of the Makefile when win32-icc is specified as the platform for configure.

  • I'm 90% sure this is in qmake's arena.

    Okay, so time to bypass normal conventions.

    At the top of that generated Makefile (the broken one), you will see a line which reads something like: @"Command: C:\qt-src\bin\qmake -spec C:\qt-src\mkspecs\win32-icc ..."@
    (Sorry, I am in Linux at the moment, so it's "something like that"...)

    At a command prompt, change into the directory which contains that makefile, copy and paste in that line, but at the end add @-d -d >qmake.dbg 2>&1@

    You will end up with one ridiculously ginormous file. Please compress that up and e-mail it to me (you can get my e-mail address by going to my profile and clicking on the Gitorious link; my e-mail address is right up top).

  • My error - apparently qmake only does that for Unix-style Makefiles...

    So amending that, just change into that directory and run:
    @qmake -o Makefile.Debug -d -d >qmake.dbg 2>&1@

Log in to reply