From 521e4de22d2e689d714f6abf4e296ebe2161ec1c Mon Sep 17 00:00:00 2001 From: Lamont Granquist Date: Sun, 6 Jul 2014 13:12:54 -0700 Subject: build with system libs if libyajl2-gem missing libs libyajl2-gem with USE_SYSTEM_LIBYAJL2=1 is just missing the libs and includes in the path, so if we can't find libyajl2 after setting up the libyajl2-gem, then go hunting for libyajl2 in the system and/or use the --with-yajl-include/dir/lib options --- ext/ffi_yajl/ext/encoder/extconf.rb | 31 +++++++++++++++++++++++++++++++ ext/ffi_yajl/ext/parser/extconf.rb | 31 +++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) 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' diff --git a/ext/ffi_yajl/ext/parser/extconf.rb b/ext/ffi_yajl/ext/parser/extconf.rb index 602f679..e5ff74d 100644 --- a/ext/ffi_yajl/ext/parser/extconf.rb +++ b/ext/ffi_yajl/ext/parser/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 'parser' create_makefile 'ffi_yajl/ext/parser' -- cgit v1.2.1