The issue turned out to be due to a GTK+ pkg-config configuration file bugOn 2014-05-13 18:38-0700 Alan W. Irwin wrote:
On 2014-05-13 11:15-0700 Alan W. Irwin wrote:
Note, I have never gotten a downloaded binary version of GTK+ to work
properly with PLplot on MinGW/Wine because of ABI incompatibility
issues (my fairly recent version of MinGW was always ABI inconsistent
with the typically extremely old version of MinGW used to build GTK+),
but maybe I will finally get lucky this time. Anyhow, so far so good,
and more later as this experiment on Wine unfolds.
Six hours later (because the builds of PLplot dependencies on Wine are
really slow for the reasons I mentioned and one false start that
wasted a couple of hours) I finally got to the point of building
PLplot using the "MinGW Makefiles" generator against epa_built
versions of all its dependencies other than the GTK+ stack and the
official 32-bit binary version of GTK+ for Windows which is supposed
to be compatible with MinGW.
The result verified the PLplot "MinGW Makefiles" build-system issue that Walt found
previously on Microsoft Windows (which also verifies once again that
Wine is a fairly reliable but slow! Windows test platform); for some
strange reason parts of the GTK+ stack are being found by pkg-config but
other parts are not being found so the overall effect is the cairo
devices are all being dropped. This pkg-config result works fine on
Linux so the whole thing is quite a puzzle.
I will look further at this tomorrow (Wednesday) now I have confirmed
this Windows platform PLplot build-system (or perhaps pkg-config)
issue for the PLplot pango/cairo stack dependencies.
where -lm is automatically added to the library links, e.g.,
bash.exe-3.1$ pkg-config --libs pangocairo
-Lz:/home/wine/gtkplus/3.6.4/lib -lpangocairo-1.0 -lcairo
-lpangoft2-1.0 -lfreetype -lfontconfig -lpangowin32-1.0 -lgdi32-lpango-1.0 -lm -lgobject-2.0 -lglib-2.0 -lintlBut the math library does not exist separately on Windows platforms so
-lm should not be part of the link flags delivered by "pkg-config
--libs pangocairo" (or the results of the equivalent CMake command
which uses pkg-config internally).
As a workaround (revision 13116) for this gtk+ bug, I have filtered
-lm out of the above library flags for the Windows case (where the
cmake MATH_LIB variable is false). As a result of this fix, cmake now
configures the cairo device without issues for the "MinGW Makefiles"
After that fix, I also ran into a number of additional minor build
system issues for the "MinGW Makefiles" case and the cairo device
driver case. (The reason those issues existed is because that
combination had not been tried in years.) I believe all of those
issues are fixed now (revision 13119), and, for example, I can build
(N.B. you must use the -DTEST_DYNDRIVERS=OFF cmake option) and run the
wincairo device by hand without issues.
So Walt, you should be able to do that now as well, but please let
me know if you spot any other issue. And thanks for being persistent
with this issue so I finally fixed it! :-)
To everyone here, all preliminary indications are that (at least with
MinGW-4.7.2 which is the version I am using) the official 32-bit
binary download of cairo works well without ABI issues with PLplot.
This is a first for me. :-)
I am now following up this cairo device driver success on MinGW by
starting a comprehensive interactive and non-interactive test on Wine
using the "MinGW Makefiles" generator and MSYS (a special version
without sh.exe in the PATH, see cmake/epa_build/README for how to
achieve that and why it is necessary). The PLplot dependencies for
this test will be the binary download of gtk+ + epa_build of
everything else. This test should take overnight on Wine, but it
should take roughly one-half hour on Microsoft Windows if anyone is
interested in following the directions in cmake/epa_build/README.
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).