summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--ext/digest/md5/extconf.rb7
-rw-r--r--ext/digest/rmd160/extconf.rb7
-rw-r--r--ext/digest/sha1/extconf.rb7
-rw-r--r--ext/digest/sha2/extconf.rb7
-rw-r--r--ext/openssl/deprecation.rb16
-rw-r--r--ext/openssl/extconf.rb9
7 files changed, 38 insertions, 22 deletions
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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"