Re: [Rd] Building package under windows which links against a cygwin library

From: Cameron Bracken <Cameron.Bracken_at_colorado.edu>
Date: Wed, 11 Nov 2009 18:03:42 -0700

On Wed, Nov 11, 2009 at 5:15 PM, Duncan Murdoch <murdoch_at_stats.uwo.ca> wrote:
> On 11/11/2009 6:49 PM, Cameron Bracken wrote:

>>
>> On Wed, Nov 11, 2009 at 4:36 PM, Duncan Murdoch <murdoch_at_stats.uwo.ca>
>> wrote:
>>>
>>> On 11/11/2009 4:41 PM, Cameron Bracken wrote:
>>>>
>>>> I am developing a package
>>>> (http://r-forge.r-project.org/projects/swfdevice/) which links against
>>>> the ming C library. The package builds fine under Mac OS X and Linux.
>>>> I am really out of my element on windows, but I know there is a cygwin
>>>> package for libming.
>>>>
>>>> My question is, does anyone have advice/examples on linking R packages
>>>> against cygwin libraries?  Is this even possible?  How would I go
>>>> about writing a configure.win script to do this?
>>>
>>> I suspect it's not going to work.  Linking to any Cygwin library will
>>> pull in the rest, and I would guess that will conflict with something else
>>> in R, which does not use Cygwin.
>>>
>>
>> I figured that would be the case.
>>
>>> What you could do is include a copy of the source to the ming library,
>>> and get the regular R compilers to compile it.  I just tried, and it
>>> compiled without errors (though there were a few warnings).  Then you can
>>> write your R interface to it, and everything may just work.
>>
>> Hey, that is great! I thought about doing this but decided arbitrarily
>> that it would be too hard.  Do I just plop a copy of the ming source
>> in the src/ directory of my package (then adjust Makevars
>> accordingly)?  Did you run the whole ming configure script as well?
>

> I just ran make.  I don't think there is any configure script.
>

> I'd probably put their stuff in a subdir of src, just to keep it cleanly
> separated from yours.  This also gives you the option of *not* compiling it
> on systems like Linux and MacOS that already have it.  Then make up a
> Makevars.win file that builds it as a static or dynamic lib on Windows and
> links to it, and a Makevars file that just links to it on other platforms.
>  (You might want to do a static compile on the other systems just so you're
> protected against version changes.)
>

> Duncan Murdoch

>

Thanks for the feedback, I agree that would be the easiest and preferable way. But which version of ming are you using that only has a makefile? The version I need (0.4.0 beta5) has a fairly involved configure script. I would have to pick out the components I need for my package and create a custom makefile for it to be easily usable (which I may end up doing, thank goodness for open source).

-Cameron



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu 12 Nov 2009 - 01:51:01 GMT

This archive was generated by hypermail 2.2.0 : Thu 12 Nov 2009 - 03:20:26 GMT