From: Charlie Savage Date: 2006-06-29T09:29:33+09:00 Subject: Re: [ANN] mkrf 0.1.0 released Kevin, This looks like it will be really useful. One place where the mkmf does not work is trying to build extensions with MingW on Windows with a Ruby version compiled by VC++. The problem is that mkmf assumes you are using VC++ to build your extensions (because it grabs the library info from rbconfig), but aren't. Note that using MingW to build extensions works fine if you're willing to create your own makefiles - which is what I've done for the Ruby GDAL bindings, Ruby GEOS bindings and for ruby-prof for Windows. What would be a lot better is if I could put together a mkrf rake script, integrated with Ruby Gems, that was smart enough to: * Build on Linux * Build on Windows with VC++ * Build on Windows with MingW (you might also need msys). I assume you've looked at Python's distutils? If not, take a look. It has knowledge built into it about MingW on Windows well as VC++. It would be good to end up with something like it. Thanks, Charlie Kevin Clark wrote: > I'm pleased to announce that tonight marks the first release of mkrf, > a library which generates Rakefiles to build C extensions to Ruby and > is aimed at a replacement for mkmf. This is a Ruby Summer of Code > project (http://code.google.com/soc/ruby/about.html). > > Though the gem doesn't seem to have propogated yet, it should be > availble through rubygems, and until then you can download the gem > directly at http://rubyforge.org/frs/download.php/11283/mkrf-0.1.0.gem > > The code does have RDoc included which I hope explains things well > enough. Please do send questions and bug reports my way. I'll have a > project setup at advisr.org where you can submit bug reports as soon > as I tweak its source to properly scope accounts, but until then email > is fine. > > **Please do try mkrf with your extensions. Please do send feedback.** > > As for syntax, it can be as simple as: > > Mkrf::Generator.new('libtrivial_so.bundle') > > or more complex: > > Mkrf::Generator.new('libxml_so.bundle', '*.c') do |g| > g.include_library('socket','socket') > g.include_header('libxml/xmlversion.h', > '/opt/include/libxml2', > '/usr/local/include/libxml2', > '/usr/include/libxml2') > end > >