From 8f1a1ee1c9ee1247ae53d885d91ab41d6ac3da86 Mon Sep 17 00:00:00 2001 From: Lamont Granquist Date: Sun, 6 Jul 2014 14:06:15 -0700 Subject: avoid find_library adding -lyajl --- ext/ffi_yajl/ext/encoder/extconf.rb | 15 ++++++--------- ext/ffi_yajl/ext/parser/extconf.rb | 13 ++++++------- 2 files changed, 12 insertions(+), 16 deletions(-) (limited to 'ext/ffi_yajl') diff --git a/ext/ffi_yajl/ext/encoder/extconf.rb b/ext/ffi_yajl/ext/encoder/extconf.rb index e752b28..0107112 100644 --- a/ext/ffi_yajl/ext/encoder/extconf.rb +++ b/ext/ffi_yajl/ext/encoder/extconf.rb @@ -28,16 +28,12 @@ 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..." +# NOTE: find_library has the side effect of adding -lyajl to the flags which we are deliberately +# avoiding doing with the libyajl2-gem (allowing it to be lazily loaded with dlopen) +if !windows? && !find_header('yajl/yajl_tree.h') + puts "libyajl2 headers not found 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 @@ -54,7 +50,8 @@ if !windows? && !found_libyajl2 # add --with-yajl-dir, --with-yajl-include, --with-yajl-lib dir_config('yajl', HEADER_DIRS, LIB_DIRS) - if !found_libyajl2 + # here we use find_library in order to deliberately link with -lyajl as a useful side-effect + if !(find_header('yajl/yajl_tree.h') && find_library('yajl', 'yajl_complete_parse')) abort "libyajl2 is missing. please install libyajl2" end end diff --git a/ext/ffi_yajl/ext/parser/extconf.rb b/ext/ffi_yajl/ext/parser/extconf.rb index 3edc502..3154142 100644 --- a/ext/ffi_yajl/ext/parser/extconf.rb +++ b/ext/ffi_yajl/ext/parser/extconf.rb @@ -28,12 +28,10 @@ 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..." +# NOTE: find_library has the side effect of adding -lyajl to the flags which we are deliberately +# avoiding doing with the libyajl2-gem (allowing it to be lazily loaded with dlopen) +if !windows? && !find_header('yajl/yajl_tree.h') + puts "libyajl2 headers not found in libyajl2-gem, searching for system libraries..." HEADER_DIRS = [ "/opt/local/include", # MacPorts @@ -52,7 +50,8 @@ if !windows? && !found_libyajl2 # add --with-yajl-dir, --with-yajl-include, --with-yajl-lib dir_config('yajl', HEADER_DIRS, LIB_DIRS) - if !found_libyajl2 + # here we use find_library in order to deliberately link with -lyajl as a useful side-effect + if !(find_header('yajl/yajl_tree.h') && find_library('yajl', 'yajl_complete_parse')) abort "libyajl2 is missing. please install libyajl2" end end -- cgit v1.2.1