summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ffi_yajl/ext.rb5
-rw-r--r--lib/ffi_yajl/platform.rb7
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/ffi_yajl/ext.rb b/lib/ffi_yajl/ext.rb
index 7a84ef1..5784023 100644
--- a/lib/ffi_yajl/ext.rb
+++ b/lib/ffi_yajl/ext.rb
@@ -4,14 +4,17 @@ require 'ffi_yajl/encoder'
require 'ffi_yajl/parser'
require 'ffi'
require 'libyajl2'
+require 'ffi_yajl/platform'
module FFI_Yajl
+ extend FFI_Yajl::Platform
+
# FIXME: DRY with ffi_yajl/ffi.rb
# FIXME: extract map_library_name from FFI and stop requiring it at the top level
# so that the C-library can be installed without FFI
libname = ::FFI.map_library_name("yajl")
# awful windows patch, but there is an open issue to entirely replace FFI.map_library_name already
- libname = "libyajl.so" if libname == "yajl.dll"
+ libname = "libyajl.so" if windows?
libpath = File.expand_path(File.join(Libyajl2.opt_path, libname))
libpath.gsub!(/dylib/, 'bundle')
libpath = ::FFI.map_library_name("yajl") unless File.exist?(libpath)
diff --git a/lib/ffi_yajl/platform.rb b/lib/ffi_yajl/platform.rb
new file mode 100644
index 0000000..6c2a498
--- /dev/null
+++ b/lib/ffi_yajl/platform.rb
@@ -0,0 +1,7 @@
+module FFI_Yajl
+ module Platform
+ def windows?
+ !!(RUBY_PLATFORM =~ /mswin|mingw|cygwin|windows/)
+ end
+ end
+end