diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2014-05-07 12:18:34 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-05-07 12:18:34 -0700 |
commit | 34d1d82e2814b90246f38959384bcac3496a974f (patch) | |
tree | b7008841149806a770c085d681980bb00f15ec6e /lib | |
parent | 2aca1db542d2b48eeb28326419f73ba36f4f7850 (diff) | |
download | ffi-yajl-34d1d82e2814b90246f38959384bcac3496a974f.tar.gz |
dynamically link against libyajl2-gem at runtime
- avoids all the RPATH bullshit at link time
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl/ext.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb index 7b6d3de..2bbfcb8 100644 --- a/lib/ffi_yajl/ext.rb +++ b/lib/ffi_yajl/ext.rb @@ -2,19 +2,26 @@ require 'rubygems' require 'ffi_yajl/encoder' require 'ffi_yajl/parser' +require 'dl' +require 'ffi' +require 'libyajl2' -#unless RUBY_VERSION.to_f >= 1.9 -# # segfaults on ruby 1.8 and this is an exceedingly low priority to fix, use ffi instead -# raise NotImplementedError, "The C-extension is disabled on Ruby 1.8" -#end module FFI_Yajl class Parser + # FIXME: DRY with ffi_yajl/ffi.rb + libname = ::FFI.map_library_name("yajl") + libpath = File.expand_path(File.join(Libyajl2.opt_path, libname)) + ::DL.dlopen(libpath) require 'ffi_yajl/ext/parser' include FFI_Yajl::Ext::Parser end class Encoder + # FIXME: DRY with ffi_yajl/ffi.rb + libname = ::FFI.map_library_name("yajl") + libpath = File.expand_path(File.join(Libyajl2.opt_path, libname)) + ::DL.dlopen(libpath) require 'ffi_yajl/ext/encoder' include FFI_Yajl::Ext::Encoder end |