From 26e258c807c25097ae41e9c5d7dcb3b7a3bda64c Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 30 Apr 2012 21:03:38 +0000 Subject: [PATCH] * ext/digest/*/extconf.rb: use pkg_config to use same library with openssl. [ruby-core:44755][Bug #6379] * ext/openssl/deprecation.rb: extract check for broken Apple OpenSSL. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ ext/digest/md5/extconf.rb | 7 +++---- ext/digest/rmd160/extconf.rb | 7 +++---- ext/digest/sha1/extconf.rb | 7 +++---- ext/digest/sha2/extconf.rb | 7 +++---- ext/openssl/deprecation.rb | 16 ++++++++++++++++ ext/openssl/extconf.rb | 9 +++------ 7 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 ext/openssl/deprecation.rb diff --git a/ChangeLog b/ChangeLog index f968a3fc6d..accac2038f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue May 1 06:03:34 2012 Nobuyoshi Nakada + + * ext/digest/*/extconf.rb: use pkg_config to use same library with + openssl. [ruby-core:44755][Bug #6379] + + * ext/openssl/deprecation.rb: extract check for broken Apple OpenSSL. + Tue May 1 05:02:30 2012 Nobuyoshi Nakada * configure.in (optflags): disable unsafe optimizations. diff --git a/ext/digest/md5/extconf.rb b/ext/digest/md5/extconf.rb index 803741a6d9..f1dd9122b4 100644 --- a/ext/digest/md5/extconf.rb +++ b/ext/digest/md5/extconf.rb @@ -9,9 +9,11 @@ $INCFLAGS << " -I$(srcdir)/.." $objs = [ "md5init.#{$OBJEXT}" ] dir_config("openssl") +pkg_config("openssl") +require_relative '../../openssl/deprecation' if !with_config("bundled-md5") && - have_library("crypto") && have_header("openssl/md5.h") + have_library("crypto") && OpenSSL.check_func("MD5_Transform", "openssl/md5.h") $objs << "md5ossl.#{$OBJEXT}" else @@ -22,7 +24,4 @@ have_header("sys/cdefs.h") $preload = %w[digest] -if try_compile("", flag = " -Wno-deprecated-declarations") - $warnflags << flag -end create_makefile("digest/md5") diff --git a/ext/digest/rmd160/extconf.rb b/ext/digest/rmd160/extconf.rb index 8d8cdee6ba..b7aed39ef9 100644 --- a/ext/digest/rmd160/extconf.rb +++ b/ext/digest/rmd160/extconf.rb @@ -9,9 +9,11 @@ $INCFLAGS << " -I$(srcdir)/.." $objs = [ "rmd160init.#{$OBJEXT}" ] dir_config("openssl") +pkg_config("openssl") +require_relative '../../openssl/deprecation' if !with_config("bundled-rmd160") && - have_library("crypto") && have_header("openssl/ripemd.h") + have_library("crypto") && OpenSSL.check_func("RMD160_Transform", "openssl/ripemd.h") $objs << "rmd160ossl.#{$OBJEXT}" else $objs << "rmd160.#{$OBJEXT}" @@ -21,7 +23,4 @@ have_header("sys/cdefs.h") $preload = %w[digest] -if try_compile("", flag = " -Wno-deprecated-declarations") - $warnflags << flag -end create_makefile("digest/rmd160") diff --git a/ext/digest/sha1/extconf.rb b/ext/digest/sha1/extconf.rb index 77a4b2b847..a4d5bbcf48 100644 --- a/ext/digest/sha1/extconf.rb +++ b/ext/digest/sha1/extconf.rb @@ -9,9 +9,11 @@ $INCFLAGS << " -I$(srcdir)/.." $objs = [ "sha1init.#{$OBJEXT}" ] dir_config("openssl") +pkg_config("openssl") +require_relative '../../openssl/deprecation' if !with_config("bundled-sha1") && - have_library("crypto") && have_header("openssl/sha.h") + have_library("crypto") && OpenSSL.check_func("SHA1_Transform", "openssl/sha.h") $objs << "sha1ossl.#{$OBJEXT}" else $objs << "sha1.#{$OBJEXT}" @@ -21,7 +23,4 @@ have_header("sys/cdefs.h") $preload = %w[digest] -if try_compile("", flag = " -Wno-deprecated-declarations") - $warnflags << flag -end create_makefile("digest/sha1") diff --git a/ext/digest/sha2/extconf.rb b/ext/digest/sha2/extconf.rb index e0634245a9..05d0b8de33 100644 --- a/ext/digest/sha2/extconf.rb +++ b/ext/digest/sha2/extconf.rb @@ -9,10 +9,12 @@ $INCFLAGS << " -I$(srcdir)/.." $objs = [ "sha2init.#{$OBJEXT}" ] dir_config("openssl") +pkg_config("openssl") +require_relative '../../openssl/deprecation' if !with_config("bundled-sha2") && have_library("crypto") && - %w[SHA256 SHA512].all? {|d| have_func("#{d}_Transform", "openssl/sha.h")} && + %w[SHA256 SHA512].all? {|d| OpenSSL.check_func("#{d}_Transform", "openssl/sha.h")} && %w[SHA256 SHA512].all? {|d| have_type("#{d}_CTX", "openssl/sha.h")} $objs << "sha2ossl.#{$OBJEXT}" $defs << "-DSHA2_USE_OPENSSL" @@ -26,8 +28,5 @@ have_header("sys/cdefs.h") $preload = %w[digest] if have_type("uint64_t", "defs.h", $defs.join(' ')) - if try_compile("", flag = " -Wno-deprecated-declarations") - $warnflags << flag - end create_makefile("digest/sha2") end diff --git a/ext/openssl/deprecation.rb b/ext/openssl/deprecation.rb new file mode 100644 index 0000000000..d026f02807 --- /dev/null +++ b/ext/openssl/deprecation.rb @@ -0,0 +1,16 @@ +module OpenSSL + def self.check_func(func, header) + unless flag = (@deprecated_warning_flag ||= nil) + if try_compile("", flag = "-Werror=deprecated-declarations") + if with_config("broken-apple-openssl") + flag = "-Wno-deprecated-declarations" + end + $warnflags << " #{flag}" + else + flag = "" + end + @deprecated_warning_flag = flag + end + have_func(func, header, flag) + end +end diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb index dd0ebf4fda..640348f64a 100644 --- a/ext/openssl/extconf.rb +++ b/ext/openssl/extconf.rb @@ -15,6 +15,7 @@ =end require "mkmf" +require_relative 'deprecation' dir_config("openssl") dir_config("kerberos") @@ -57,12 +58,8 @@ unless have_header("openssl/conf_api.h") message "OpenSSL 0.9.6 or later required.\n" exit 1 end -if try_compile("", flag = "-Werror=deprecated-declarations") - unless have_func("SSL_library_init()", "openssl/ssl.h", flag) - with_config("broken-apple-openssl") or - abort "Ignore OpenSSL broken by Apple" - $warnflags << " -Wno-deprecated-declarations" - end +unless OpenSSL.check_func("SSL_library_init()", "openssl/ssl.h") + abort "Ignore OpenSSL broken by Apple" end message "=== Checking for OpenSSL features... ===\n"