[partly solved] Errors in cross compilation with Windows EA 7
-
no prob about the merge!
didn't went much further :-(
initially I got the same error, but I got around that by manually copying this TokenLookup.gperf in its parent directory...
now I'm stuck at the bison file (qquerytransformparser.cpp) - btw. I also need to install bison for windows...qquerytransformparser.cpp
d:\qt-everywhere-opensource-src-4.7.3\src\xmlpatterns\qquerytransformparser.cpp(3364) : warning C4065: switch statement contains 'default'
but no 'case' labels
d:\qt-everywhere-opensource-src-4.7.3\src\xmlpatterns\qquerytransformparser.cpp(3142) : fatal error C1083: Cannot open source file: 'd:\qt-everywhere-opensource-src-4.7.3\src\xmlpatterns\qquerytransformparser.cpp': No such file or directory
NMAKE : fatal error U1077: 'D:\WINCE\sdk\bin\i386\ARM\cl.EXE' : return code '0x1'very strange: it seems at the beginning that this file actually is present in that directory, but later it got deleted
-- could this be because the WinEA7 compiler extensively uses parallel compilation?
e.g. that in a sequential build this would work (1. generate the gerf/bison files, 2. compile those files, 3. delete the generated files) but the parallel building mixes up this sequence so the generated files are deleted prior being fully compiled?
-- just a thought...(where are the makefile rules that instruct nmake/qmake to delete those generated files? so I can test this theory by commenting out those rules...)
-
@Volker
Sorry, I was not aware of how to get in touch with one of the moderators.
The intend was to draw someone else's attention to the discussion. Hope there has been some input to help joergs1968.
I guess a new configure may help, but otherwise I do not know how to continue. -
[quote author="joergs1968" date="1305043186"]
very strange: it seems at the beginning that this file actually is present in that directory, but later it got deleted
-- could this be because the WinEA7 compiler extensively uses parallel compilation?
e.g. that in a sequential build this would work (1. generate the gerf/bison files, 2. compile those files, 3. delete the generated files) but the parallel building mixes up this sequence so the generated files are deleted prior being fully compiled?
-- just a thought...(where are the makefile rules that instruct nmake/qmake to delete those generated files? so I can test this theory by commenting out those rules...)[/quote]
In general I would recommend to change as few as possible. Messing around with the make file rules does not sound very practical. Requiring additional installation of tools does not really like Qt. Certainly a couple of things have to be present, but what you are describing sounds strange.
You could be right that the parallel building could have some side effects. Typically I am not patient myself. Therefore, I am using extensively the parallel compilation options. However, it is probably a good choice to try it with the sequencial before investing weeks for chasing "ghosts".
However, if you start to do so, take a fresh copy of Qt and start with the configure.
-
I haven't messed with any makefile rules yet - I wanted to only modify those rules that delete the generated files after compilation, for pure diagnosis purposes only, that's all...
If the compilation had worked without that, I didn't need any of this!
It does not seem as if I could instruct the WinEA7 compiler to not use parallel compilation at all, so I cannot go the sequential way :-(
[ actually --according to "cl /?"-- there is an option "/MP[n] use up to 'n' processes for compilation" designed for this purpose (e.g. /MP1) -- but this doesn't seem to work, cl always complains "cl : Command line warning D9002 : ignoring unknown option '/MP'" ] -
no offence taken, don't worry...
I got this solved/work-a-rounded: I manually invoked bison to create that qquerytransformparser.cpp from the querytransformparser.ypp input which seems to have worked finally - at least I do have a "QtXmlPatterns4.dll" now :-D
My luck doesn't lasted for long though - now I am stuck at:
src\3rdparty\javascriptcore\javascriptcore\wtf\platform.h(320) : fatal error C1189: #error : "Not supported ARM architecture"should not be too hard to fix since ARMV7 is downward-compatible to ARMV4i, but don't know what about mixing different architectures...
[update]
since the manual compilation seems to work, it's most obviously a qmake bug, so I changed the title... -
@Alexandra Thanks for your assistance.
-
OK - thanks for that!
I am currently dealing with some minor issues inside javascriptcore - basically because there is no min()/max() defined in the std-namespace in WINEA7; plus: I had the wrong INCLUDEPATH order, so the compiler took the system's profile.h instead of the one provided in the javascript/profiler directory...
nothing serious, I'm makeing progress...
(only takes its time - because of the latter, I need a fresh re-configure...)[update]
ok - I got some new errors about undeclared/undefined "rel_ops" in some *.moc files, don't know what do do now, help anybody?ThreadingQt.cpp
...src\script\tmp\moc\release_shared\threadingqt.moc(43) : error C2653: 'rel_ops' : is not a class or namespace name(btw: I did a confclean followed by "configure -release -opensource -shared -no-fast -exceptions -rtti -no-stl -no-accessibility -opengl es2 -openvg -platform win32-msvc2008 -xplatform wince70embedded-armv7-msvc2008 -graphicssystem opengl -ltcg -qt-style-windowsce -qt-style-windowsmobile -arch windowsce -no-native-gestures")
-
what is this "rel_ops" error all about??
this seems to be something like a namespace identifier, but where is this comming from? why does moc.exe adds this, as this seems wrong here? - there is no such namespace existing in my compiler environment...
any help, please!
-
I at least found the reason, why the build breaks for the (pre-)generated sources:
The WinCE Compiler has a strange behaviour regarding those "#line" statements which are included in the pre-generated sources and which refer to the source of the generated files:
it appears that when compiling the generated files, the filename as referred to by the #line directive, actually has to be present at that location, otherwise the build fails...
(it's sufficient to be a 0-size file with exactly that name at the referred position, but it must exist)that's not even a new feature/bug introduced into WinEA7, WinCE6.00 (at least the MS-Auto variant) behaves exactly the same...
--> title updated!
-
I have not prepared a bug report to Qt yet, but have a look to "Contribute ":http://developer.qt.nokia.com/contribute
Apparently, you have entered new ground, but Qt's experts should be interested to understand your issues. Sooner or later thay will face those problems as well.I am interested in the follow up, so please make sure that some sort of summary is posted, when you get additional help.
-
actually this problem regarding the broken "#line" directive seems more of a MicroSoft issue for MS Auto/Windows embedded automotive - those both do not use the PlatformBuilder for compilation but a pure commandline environment; at least in a normal (i.e. not cross-compile) VisualStudio Project, this works...
I already submitted a bug-report towards MicrosSoft, maybe they'll fix this in an upcomming release.Actually the contribution of QT developers here is a bit disappointing :-(
-- I have more unsolved issues which I would need assistance for... -
well - I don't see this as a Qt bug, it's more a Microsoft compiler bug...
actually the compiler-switches that I defined for my selfmade mkspec configuration were causing the trouble:
I used the same switches that I use at work for compiling, but there is a problem with the CE compiler's "/FA" switch - when this switch is defined, the "#line" directive behaves the strange way I described!
(/FA is used to let the compiler produce/keep the assembly listing; this is useful for debugging purpose but not really neccessary in Qt compilation)