diff options
Diffstat (limited to 'ext/openssl/extconf.rb')
-rw-r--r-- | ext/openssl/extconf.rb | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb new file mode 100644 index 000000000..0b028b7b8 --- /dev/null +++ b/ext/openssl/extconf.rb @@ -0,0 +1,132 @@ +=begin += $RCSfile$ -- Generator for Makefile + += Info + 'OpenSSL for Ruby 2' project + Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz> + All rights reserved. + += Licence + This program is licenced under the same licence as Ruby. + (See the file 'LICENCE'.) + += Version + $Id$ +=end + +require "mkmf" + +if RUBY_PLATFORM =~ /mswin32/ + CRYPTOLIB="libeay32" + SSLLIB="ssleay32" +else + CRYPTOLIB="crypto" + SSLLIB="ssl" +end + +if !defined? message + def message(*s) + printf(*s) + Logging::message(*s) + end +end + +includes, = dir_config("openssl") +includes ||= "/usr/include" + +message "=== OpenSSL for Ruby configurator ===\n" + +## +# Adds -Wall -DOSSL_DEBUG for compilation and some more targets when GCC is used +# To turn it on, use: --with-debug or --enable-debug +# +if with_config("debug") or enable_config("debug") + $defs.push("-DOSSL_DEBUG") unless $defs.include? "-DOSSL_DEBUG" + $CPPFLAGS += " -Wall" unless $CPPFLAGS.split.include? "-Wall" + + if CONFIG["CC"] =~ /gcc/ + srcs = [] + for f in Dir[File.join($srcdir, "*.c")] + srcs.push File.basename(f) + end + srcs = srcs.join(" ") + + $distcleanfiles << "dep" if defined? $distcleanfiles + + File.open(File.join($srcdir, "depend"), "w") {|f| + f.print <<EOD +SRCS = #{srcs} + +test-link: + $(CC) $(DLDFLAGS) -o .testlink $(OBJS) $(LIBPATH) $(LIBS) $(LOCAL_LIBS) + @$(RM) .testlink + @echo "Done." + +dep: + $(CC) $(CFLAGS) $(CPPFLAGS) -c $(SRCS) -MM > dep + +include dep +EOD + } + File.open(File.join($srcdir, "dep"), "w").close + end +end + + +def have_openssl_097(inc_dir) +# FIXME: +# checking_for("OpenSSL >= 0.9.7") do + printf "checking for OpenSSL version... " + File.open(inc_dir+"/openssl/opensslv.h") {|f| + txt = f.read + puts (txt.grep(/#define SHLIB_VERSION_NUMBER/)[0].split '"')[1] + true + } +end + +message "=== Checking for required stuff... ===\n" + +result = have_header("openssl/crypto.h") +result &= have_library(CRYPTOLIB, "OpenSSL_add_all_digests") +result &= have_library(SSLLIB, "SSL_library_init") + +if !result + message "=== Checking for required stuff failed. ===\n" + message "Makefile wasn't created. Fix the errors above.\n" + exit 1 +end + +message "=== Checking for system dependent stuff... ===\n" +have_header("unistd.h") +have_header("sys/time.h") + +message "=== Checking for OpenSSL features... ===\n" +have_openssl_097(includes) +have_func("HMAC_CTX_copy") +have_func("X509_STORE_get_ex_data") +have_func("X509_STORE_set_ex_data") +have_func("EVP_MD_CTX_create") +have_func("EVP_MD_CTX_cleanup") +have_func("EVP_MD_CTX_destroy") +have_func("PEM_def_callback") +have_func("EVP_MD_CTX_init") +have_func("HMAC_CTX_init") +have_func("HMAC_CTX_cleanup") +have_func("X509_CRL_set_version") +have_func("X509_CRL_set_issuer_name") +have_func("X509_CRL_sort") +have_func("X509_CRL_add0_revoked") +have_func("CONF_get1_default_config_file") +have_func("BN_mod_sqr") +have_func("BN_mod_add") +have_func("BN_mod_sub") +have_func("CONF_get1_default_config_file") +have_header("openssl/ocsp.h") +have_struct_member("EVP_CIPHER_CTX", "flags", "openssl/evp.h") + +message "=== Checking for Ruby features... ===\n" +have_func("rb_obj_init_copy", "ruby.h") + +message "=== Checking done. ===\n" +create_makefile("openssl") +message "Done.\n" |