From: Alan W. I. <ir...@be...> - 2017-06-20 18:36:57
|
On 2017-06-20 13:18-0000 Arjen Markus wrote: >> From the error message above, something is obviously wrong with the build for that >> case, but it likely is something very simple (e.g., likely a missing #ifdef WIN32 >> section inside an existing #ifdef >> PL_WXWIDGETS_IPC3 section in drivers/wxwidgets_comms.h) that I forgot to do >> with those three-semaphore changes for the Windows case. So if you don't beat >> me to a solution, I will take a look at finding this Windows build fix for wxwidgets >> starting ~8 hours or so from now after I get some sleep. >> > Hm, it seems to be due to the simpleness of the condition: #ifdef WIN32 - quite probably this is defined for MinGW-w64/MSYS2 to indicate that the platform is "Windowy". So a refinement is required. I will see what I can do here. To Arjen and Phil: Actually, I think the simpleness of that condition should be fine on MinGW-w64/MSYS2. After all, in that case you are building a native Windows version of PLplot where everything inside the #ifdef WIN32 stanzas should be available. Also now that I have finally found a partner who is willing to test the wxwidgets IPC methods on a native Windows platform, I have a number of IPC build system and code changes in mind. If you have looked at the code at all now, you can see it is a bit of a complex #ifdef thicket that is therefore hard to understand by definition. But (see cmake/modules/wxwidgets.cmake) the macro PL_HAVE_UNNAMED_POSIX_SEMAPHORES is permanently disabled. That disablement (done several months ago) is because although the #ifdef PL_HAVE_UNNAMED_POSIX_SEMAPHORES code stanzas currently work in the Linux case, they are superseded by the named semaphores approach that works for all POSIX platforms including Linux. So my first order of business is to follow up on that permanent disablement by removing all #ifdef PL_HAVE_UNNAMED_POSIX_SEMAPHORES code stanzas (and, in fact, all references to PL_HAVE_UNNAMED_POSIX_SEMAPHORES in our source tree) to reduce the #ifdef complexity of the IPC code. Also, if you look at cmake/modules/wxwidgets.cmake you will see the macro PL_WXWIDGETS_IPC3 is permanently enabled. My second order of business is to turn that temporarily back into an option which will be ON by default. The old IPC code that is enabled when that option is turned OFF by the user used to work OK on both Windows and Linux. So turning this temporarily back into an option should allow us to test both -DPL_WXWIDGETS_IPC3 ON and OFF on both Linux and Windows. Previously -DPL_WXWIDGETS_IPC3 OFF worked OK on both the Linux platform and the native Windows MSVC platform so my guess is it should also work on MinGW-w64/MSYS2 to provide a benchmark to test how well -DPL_WXWIDGETS_IPC3 ON works on that platform. And ultimately once we make the code corrections so that -DPL_WXWIDGETS_IPC3 ON builds and runs fine on that native Windows platform, I intend to remove all the "old" IPC code that is used when -DPL_WXWIDGETS_IPC3 OFF in the interests of reducing complexity. @Phil: your participation in these proposed IPC tests in the MSVC case (or any platform you can get your hands on) would be most welcome. And if you could let Arjen know your source of reliable wxwidgets libraries for the MSVC case, that would be most welcome as well. More later... 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 __________________________ |