From Cameron.Bracken at colorado.edu  Thu Nov 12 04:12:41 2009
From: Cameron.Bracken at colorado.edu (Cameron Bracken)
Date: Wed, 11 Nov 2009 20:12:41 -0700
Subject: [Rd] Building package under windows which links against a
	cygwin library
In-Reply-To: <4AFB7BA9.7090206@stats.uwo.ca>
References: <28152c800911111341j782f1a58q79d2dea081fafcaa@mail.gmail.com> 
	<4AFB4A98.70905@stats.uwo.ca>
	<28152c800911111549w33639c30w9d0d9e73a60aa54a@mail.gmail.com> 
	<4AFB538D.4010902@stats.uwo.ca>
	<28152c800911111703h747a9f7r22c3fc3ffb6f587c@mail.gmail.com> 
	<4AFB7BA9.7090206@stats.uwo.ca>
Message-ID: <28152c800911111912q2aab0e48v7b6fb050f2bad240@mail.gmail.com>

On Wed, Nov 11, 2009 at 8:06 PM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 11/11/2009 8:03 PM, Cameron Bracken wrote:
>>
>> 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).
>
> I was looking at ming-0.2a. ?It might not be the same library at all!
>
> Duncan Murdoch
>

That is the same library but it is a very old version which has most,
but not all of the features I need (unfortunately).  You are correct
that it does only have a makefile though. On the other hand, I don't
really need the full functionality of the library, so I think I can
strip out a lot of things and create a custom makefile and build just
what I need.

Cheers,
-Cameron



[Rd] Building package under windows which links against a cygwin library
Cameron Bracken