From: Charles Mills Date: 2005-02-02T10:40:43+09:00 Subject: Re: mkmf.rb Documentation Brian, Brian Schr�der wrote: > 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