building an extension gem and including a library source

E

Emmanuel Oga

I'm building an extension gem for http://libharu.sourceforge.net/ 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
make

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

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

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
!
 
T

Tom M

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,773
Messages
2,569,594
Members
45,119
Latest member
IrmaNorcro
Top