mkmf.rb Documentation

  • Thread starter Brian Schröder
  • Start date
B

Brian Schröder

Hello Group,

does there exist a mkmf.rb documentation except for the page in the pickaxe? The code is not very readable and I have found nothing so far?

At the moment I am wondering if it is possible to generate Makefiles for the following task:

For an extension baz I have a directory structure like this:

baz/
baz/src/
baz/src/baz.rb
baz/src/baz.base.c
baz/src/foo/
baz/src/foo/foo.rb
baz/src/foo/foo.base.c
baz/src/bar/
baz/src/bar/bar.rb
baz/src/bar/bar.base.c

and I want mkmf to create makefiles that compile and copy the files to:

baz/lib/
baz/lib/baz.rb
baz/lib/baz.base.so
baz/lib/baz/foo.rb
baz/lib/baz/foo.base.so
baz/lib/baz/bar.rb
baz/lib/baz/bar.base.so

such that I can require my extensions as

require 'baz'
require 'baz/foo'
require 'baz/bar'

when I include the lib directory in the ruby search path.

thanks a lot,

Brian
 
C

Charles Mills

Brian,
Hello Group,

does there exist a mkmf.rb documentation except for the page in the
pickaxe? The code is not very readable and I have found nothing so far?
At the moment I am wondering if it is possible to generate Makefiles for the following task:

For an extension baz I have a directory structure like this:

baz/
baz/src/
baz/src/baz.rb
baz/src/baz.base.c
baz/src/foo/
baz/src/foo/foo.rb
baz/src/foo/foo.base.c
baz/src/bar/
baz/src/bar/bar.rb
baz/src/bar/bar.base.c
So I assume you have a *.base.so file for each *.base.c file. Then you
should have a 'extconf.rb' file for each of these .so files. ie.
insert
baz/src/extconf.rb
baz/src/foo/extconf.rb
baz/src/bar/extconf.rb
and I want mkmf to create makefiles that compile and copy the files
to:

Not really a job for 'mkmf.rb'... see below.
baz/lib/
baz/lib/baz.rb
baz/lib/baz.base.so
baz/lib/baz/foo.rb
baz/lib/baz/foo.base.so
baz/lib/baz/bar.rb
baz/lib/baz/bar.base.so

such that I can require my extensions as

require 'baz'
require 'baz/foo'
require 'baz/bar'

when I include the lib directory in the ruby search path.
This part is a job for 'setup.rb'. Put setup.rb in baz/ and create the
file 'pre-config.rb'.
Your 'pre-config.rb' file will do the following
For src/ and each directory in src/
1) run extconf.rb
2) run make
3) copy the .rb and .so files in the directory to baz/lib/baz/-d-/
where -d- is the current directory above src/

Seems like you cleaverly use Dir.[], Dir.chdir(), and system() to do
all this in a few lines of code.

-Charlie
 

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,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top