Hi Alan
Just for info Visual Studio Express is free (as in free beer), but obviously 
not open source. I think the big difference between the express version and the 
paid for version is lack of microsoft foundation classes which are helper 
classes for windows programming and there are probably some source code 
control/team working bits of the IDE missing. The compiler and linker are the 
same I think. I would guess that most of ourWindows users are using VS as it 
has become the de-facto standard for C/C++ on Windows since Microsoft started 
releasing the free express version. I would guess MinGW after that.
 
As far as LIB_TAG is concerned. It would be good to be able to tag it. I would 
like to add suffix d to indicate debug (which would give suffix dd for double 
debug) which would allow the librarys to be installed in the same place without 
overwriting. But it's not the biggest issue in the world.
 
Regarding static builds I think we have had this discussion before. There is a 
significant difference I think between linux and windows and static build on 
windows can refer to two things. 1) Creating a .lib rather than a .dll. This is 
what the BUILD_SHARED_LIBS flag does.
2) Linking against the static runtime library. On Windows there is a .lib 
version of the runtime libraries and a .dll version. If you link against the 
.lib version then your resulting .exe will run on any windows machine. If you 
link against the dll version then a user must install the runtime library on 
their machine to run your exe. Every library and your exe must be linked 
against the same version of the runtime library or the linker generates link 
errors - this can be a real pain to debug. This is what I would like a flag 
for. I've attached the patch I created which works, but as I'm not very good 
with CMAKE I'm not sure it's the most elegant solution.
 
While I am emailing just another comment on the wxWidgets work I'm doing. I'm 
trying to remove all usage of the plstream internally to avoid race conditions. 
One hitch at the moment is the plsKeyEH function. Currently this creates a race 
as the KeyEH function can be set in the main thread and read in the GUI thread 
at the same time. In particular changing the KeyEH function from non-NULL to 
NULL at the same time as hitting a key can cause a segfault. The only way to 
avoid this (as far as I can think) would be to remove the KeyEH function from 
plstream and delegate it to the interactive devices. This would however require 
a change to all the interactive devices. Any thoughts?
 
Phil
 
 
 

________________________________
 From: Alan W. Irwin <[email protected]>
To: phil rosenberg <[email protected]> 
Cc: PLplot development list <[email protected]>; Andrew Ross 
<[email protected]>; Arjen Markus <[email protected]> 
Sent: Saturday, 2 March 2013, 0:22
Subject: Re: Notes on building the wxwidgets software package on MinGW/MSYS
  
On 2013-03-01 14:48-0800 phil rosenberg wrote:

> Hi Alan

> Good to hear your interest. It's always useful to be able to pass
code around to get more than one person test it. As far as compilers
go I use visual studio express. Windows has a number of faults when it
comes to programming but the VS IDE and debugger really are fantastic
and on its own VS is the reason why I use windows. Slightly off topic
a friend emailed me this link http://xkcd.com/378/ which I think
nicely sums up the case for a good IDE.

Hi Phil:

I just reviewed the download statistics for PLplot-5.9.9 at
SourceForge over the last 12 months (see
http://sourceforge.net/projects/plplot/files/plplot/5.9.9%20Source/plplot-5.9.9.tar.gz/stats/os?dates=2012-02-23%20to%202013-03-01).
They have been averaging ~500 per month for many months which is quite
credible this long after the release.
Windows, Linux, and Mac OS X respectively had 51 per cent, 23 per
cent, and 11 per cent download share (with the rest of the downloaders
having an unidentified OS).

However, in contrast to the order of those download shares, I would
say the current status is the PLplot experience is smoothest on Linux,
and I therefore encourage all internal and external PLplot developers
to help make the Windows experience just as smooth.  For those (such
as myself) only interested in using free (as in freedom) software, the
Windows platform of choice is Wine. That platform is available both
for Linux and Mac OS X, and on Linux I have had very good luck with
the combination of CMake-2.8.10.2, MinGW-4.7.0, MSYS, and Wine-1.5.19.
My efforts to make the PLplot experience on that platform as smooth as
it is on Linux should also help PLplot users on the Microsoft Windows
platform, and those working on smoothing the PLplot experience on
Microsoft Windows also helps those on the Wine version of PLplot.

> Anyway on a similar vein to your details on MinGW I've attached
instructions for setting up plplot using Visual Studio if you are
interested in giving it a go. It's intended to be a full walkthrough
so may be a bit on the basic side for you. They are also for VS 2008,
the latest version 2012 is a bit different and I have yet to try
building plplot or wxwidgets wth it. This will change very soon
however so I can access the C++11 threading functions we discussed
previously. My intention was to put this on the wiki, but I was
waiting for feedback on a patch I submitted to set up static linked
builds. I'll update the instructions for 2012 and put them on the wiki
when I get chance.

Although I have no interest in using the Microsoft compilers because
of their cost and also for the software freedom reasons mentioned
above, I did take a quick look at your notes, and I certainly hope you
make those notes available on our Wiki so that other Microsoft compiler users
can benefit from what you have discovered.

I have two further remarks about your notes.

(1) The original purpose of the CMake LIB_TAG variable was to indicate
(with a "d" suffix) whenever our library was compiled with a PLFLT
type of double rather than float. We currently do not use this suffix
on the csiro library names because that software does not use the
PLFLT type.  My opinion is we should continue to set PLFLT to double
by default.  However, we should add ${LIB_TAG} to the csiro library
names, and by default set LIB_TAG to the empty string.  This would
then give users the freedom to set LIB_TAG to anything they like
(which you do now for all but the csiro libraries according to your
notes).  But others here probably have different ideas because we have
used the "d" suffix for our PLFLT == double non-csiro library names
for literally decades.

(2) I don't recall your submitted patch for static linking builds, but
can't you arrange that simply by specifying
-DBUILD_SHARED_LIBS=OFF for unpatched PLplot?

> I will try to check the wingc driver this weekend to confirm your
findings.

Thanks.  As part of making the PLplot Windows experience smooth, I
think it is important for the -np (no pause) option to work for this
device.  So any help you can give making that so (assuming it is not
just a Wine issue) would be appreciated.

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
__________________________

Attachment: cmake static runtime.patch
Description: Binary data

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Plplot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to