From: Alan W. I. <ir...@be...> - 2014-05-14 11:32:30
|
On 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. > > Hi Walt: > > 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. The issue turned out to be due to a GTK+ pkg-config configuration file bug 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 -lintl But 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" generator! 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 __________________________ 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 __________________________ |