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)Tried:
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)
Tried:
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?
Regards,
quocanle -
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
nmakeC:\Qt_work\ICL\qt-everywhere-opensource-src-4.7.1\bin\moc.exe -DQT_SHARE
D -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DBUILDING_QT__=1 -DWTF_U
SE_ACCELERATED_COMPOSITING -DUSE_SYSTEM_MALLOC -DNDEBUG -DQT_MAKEDLL -DQT_NO_CAS
T_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_FAST_
OPERATOR_PLUS -DQT_USE_FAST_CONCATENATION -D_USE_MATH_DEFINES -DBUILD_WEBKIT -D_
HAS_TR1=0 -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DENABLE_VIDE
O=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_DATABASE=1 -DENABLE_EVENTSOURCE=1 -D
ENABLE_OFFLINE_WEB_APPLICATIONS=1 -DENABLE_DOM_STORAGE=1 -DENABLE_ICONDATABASE=1
-DENABLE_CHANNEL_MESSAGING=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_SQLITE=1 -D
ENABLE_DASHBOARD_SUPPORT=0 -DENABLE_FILTERS=1 -DENABLE_XPATH=1 -DENABLE_WCSS=0 -
DENABLE_WML=0 -DENABLE_SHARED_WORKERS=1 -DENABLE_WORKERS=1 -DENABLE_XHTMLMP=0 -D
ENABLE_DATAGRID=0 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_PROGRESS_TAG=1 -DE
NABLE_BLOB_SLICE=0 -DENABLE_3D_RENDERING=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -
DENABLE_SVG_FOREIGN_OBJECT=1 -DENABLE_SVG_ANIMATION=1 -DENABLE_SVG_AS_IMAGE=1 -D
ENABLE_SVG_USE=1 -DENABLE_DATALIST=1 -DENABLE_TILED_BACKING_STORE=1 -DENABLE_NET
SCAPE_PLUGIN_API=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_XSLT=0 -DENABLE_QT_BEARER=1 -
DENABLE_TOUCH_EVENTS=1 -DSQLITE_CORE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_OMIT_
COMPLETE -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT
_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
p\moc\release_shared\moc_qwebinspector.cpp
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
jscore.a'
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. -
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)? -
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
$(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< $(OBJECTS) $(LIBS)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
$(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<< $(OBJECTS) $(LIBS)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 WebCore.pro -d -d >qmake.dbg 2>&1@