summaryrefslogtreecommitdiff
path: root/ext/ffi_yajl/ext/encoder/extconf.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ffi_yajl/ext/encoder/extconf.rb')
-rw-r--r--ext/ffi_yajl/ext/encoder/extconf.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/ext/ffi_yajl/ext/encoder/extconf.rb b/ext/ffi_yajl/ext/encoder/extconf.rb
index 9d048ee..e752b28 100644
--- a/ext/ffi_yajl/ext/encoder/extconf.rb
+++ b/ext/ffi_yajl/ext/encoder/extconf.rb
@@ -28,6 +28,37 @@ if windows?
$libs = "#{$libs} -lyajldll"
end
+def found_libyajl2
+ find_header('yajl/yajl_tree.h') && find_library('yajl', 'yajl_complete_parse')
+end
+
+if !windows? && !found_libyajl2
+ puts "libyajl2 not embedded in libyajl2-gem, searching for system libraries..."
+
+ HEADER_DIRS = [
+ # FIXME: embedded version number in Homebrew path will change
+ "/usr/local/Cellar/yajl/2.1.0/include", # Homebrew (yick)
+ "/opt/local/include", # MacPorts
+ "/usr/local/include", # /usr/local
+ RbConfig::CONFIG['includedir'], # Ruby
+ "/usr/include", # (default)
+ ]
+
+ LIB_DIRS = [
+ "/opt/local/lib", # MacPorts
+ "/usr/local/lib", # /usr/local + Homebrew
+ RbConfig::CONFIG['libdir'], # Ruby
+ "/usr/lib", # (default)
+ ]
+
+ # add --with-yajl-dir, --with-yajl-include, --with-yajl-lib
+ dir_config('yajl', HEADER_DIRS, LIB_DIRS)
+
+ if !found_libyajl2
+ abort "libyajl2 is missing. please install libyajl2"
+ end
+end
+
dir_config 'encoder'
create_makefile 'ffi_yajl/ext/encoder'