Project

General

Profile

Feature #15914

Updated by glebm (Gleb Mazovetskiy) over 2 years ago

It would be nice to be able to use `mkmf` without `libruby`. 

 Motivating use-case: 
 Many gems provide Ruby bindings to C ABI via [Ruby FFI](https://github.com/ffi/ffi) instead of libruby. 
 This is because Ruby FFI is easier to use, is compatible with JRuby out-of-the-box, and allows binding to system libraries without compilation. 

 I currently use the following set of hacks to stop `mkmf` from including libruby: 


 `ext/extconf.rb`: 

 ``` ruby 
 # Don't link libruby. 
 $LIBRUBYARG = nil 

 # Disable .def file generation for mingw, as it defines an 
 # `Init_libsass` export which we don't have. 
 MakeMakefile.send(:remove_const, :EXPORT_PREFIX) 
 MakeMakefile::EXPORT_PREFIX = nil 
 ``` 

 `ext/depend`: 

 ``` Makefile ruby 
 # Replaces default mkmf dependencies. Default mkmf dependencies include all libruby headers. 
 # We don't need libruby and some of these headers are missing on JRuby (breaking compilation there). 
 $(OBJS): $(HDRS) 

 ``` 

 (full example: https://github.com/sass/sassc-ruby/tree/master/ext) 

 It'd be nice to have mkmf support for this without hacks.

Back