Building an extension gem and including a library source

I'm building an extension gem for My
intent is to help the spread of the library by uploading it to rubyforge
(it is already uploaded and working for the windows version, check: gem
install hpdf on win)

In LINUX, this library and the ruby extension is very easy to setup in
the traditional way. Just untar and run:

./configure --cflags=-fPIC

This makes, wich will be needed by the ruby extension. Then

ruby extconf.rb
cp /var/lib/gems/hpdf/lib # << Path must be correct on your

That's all. The problem comes when i try to package the gem with
rubygems. I have no problems with the gem specification, but for the
extconf.rb i made a horrible hack that, tough works, is very, very ugly,
and dependes on "sh" and "sudo" to work properly, wich i don't know if
will always be available:


# First build the library. Horrible hack!
source_dir= File.join(File.dirname(__FILE__), './libharu')
system("cd #{source_dir}; sudo sh ./configure --cflags=-fPIC; make")

# From now on is ok
require 'mkmf'
$CPPFLAGS = $CPPFLAGS + " -I./libharu/include"
$LDFLAGS = $LDFLAGS + " -L./libharu"
$LIBS = $LIBS + " -lhpdf -lpng -lz"
create_makefile 'hpdf'

How can i change the gem spec or the extconf.rb file to avoid the use of
sh and sudo? I tought of moving all the .c and .h files to the same dir,
but i don't know if i will need special flags to compile the whole thing
Posted via

Are you using the Gem::Specifications#extesions method? in your
gemspec? This builds the extension when you install the gem
automatically. You just say

spec.extensions = ["ext/[whatever]/extconf.rb"]

in your gemspec