On 2016-12-12 08:30-0000 Arjen Markus wrote:

> Hi Alan,
>
>
>
>> -----Original Message-----
>> From: Alan W. Irwin [mailto:ir...@beluga.phys.uvic.ca]
>> Sent: Sunday, December 11, 2016 11:25 PM
>>
>> Unfortunately, those compiler warnings in the report about "redeclared 
>> without
>> dllimport attribute" (and eventual build failure for the qt device driver) 
>> don't make a
>> lot of sense to me at the present time.
>
> That is only a warning, the errors that the compiler finds are related to:
>
> const QMetaObjectExtraData MasterHandler::staticMetaObjectExtraData = {
>
> The odd thing is that the file moc_qt.cpp contains multiple definitions of 
> this member as well as the function qt_static_metacall. I cannot find a 
> version where the dllimport attribute is used.
>
> I compared the code to the one generated by the regular build (the august 
> one) and they are identical apart from the file extension (.cpp versus .cxx) 
> and the timestamp.
>
> This is really puzzling, I agree with your analysis that there should be no 
> difference between the two build methods.

Hi Arjen:

The short story is I am looking forward to your next report.

Here is the longer story.

Thanks for those two files.  It turns out the key one (qt_moc.cpp) is
essentially identical with what moc generates here, i.e.,

software@raven> diff ~irwin/Arjen.Markus/20161212/cygwin/moc_qt.cpp 
qt_automoc.dir/moc_qt_2CLBWPDUEWV5LU.cpp
4c4
< ** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.7)
---
> ** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6)
9c9
< #include "../../../../../plplot-git/include/qt.h"
---
> #include "../../../plplot.git/include/qt.h"
13c13
< #error "This file was generated using the moc from 4.8.7. It"
---
> #error "This file was generated using the moc from 4.8.6. It"

And we are agreed there is no difference between the qt.cpp build and
qt_automoc.cpp build either here or there except that
on Linux platforms, we have

#define PLDLLIMPORT

while on Cygwin platforms we have

#define PLDLLIMPORT    __declspec( dllimport )

So my best guess is that on Linux (since PLDLLIMPORT is #defined to
nothing) we are getting away with something that Cygwin won't allow
where PLDLLIMPORT is something other than nothing.

In fact, further analysis shows we have qt.so linking with
libplplotqt.  So libplplotqt (now that the visibility issues with it
have been solved) should be supplying all the moc-related symbols that
are needed by qt.so.  Therefore, it is overkill to do moc generation
for the qt.so case, i.e., it is the same Linux workaround scenario
that I removed for the pyqt4.so case once I got libplplotqt exporting
the moc-related symbols correctly!

Therefore, to deal with this overkill workaround, I have removed
(commit 35833c7) automoc generation for the qt shared object as well
(just like I did previously for pyqt4).  And just as in the pyqt4
case, that removal works well on Linux.  So I have my fingers crossed
that this new slimmed down way to build the qt and pyqt4 shared
objects will work fine on Cygwin, and I look forward to your next
report that either confirms that or not.  But I am strongly hoping for
confirmation because otherwise I am completely out of ideas!

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to