From 2918d896d014a19f5e1ff28765ffd121994335de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=A4iv=C3=A4rinta?= Date: Tue, 8 Oct 2019 14:55:00 +0200 Subject: [PATCH] Add --prefix-openssl option to Makefile.PL The purpose is to support ED25519 signatures on CentOS 7. --- Makefile.PL | 56 ++++++++++++++++++++++++++++++++++++++--------------- README.md | 16 +++++++++++++++ 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 5790c15..94e6314 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -14,15 +14,17 @@ all_from 'lib/Zonemaster/LDNS.pm'; repository 'https://github.com/zonemaster/zonemaster-ldns'; bugtracker 'https://github.com/zonemaster/zonemaster-ldns/issues'; -my $opt_ed25519 = 1; -my $opt_idn = 1; -my $opt_internal_ldns = 1; -my $opt_randomize = 0; +my $opt_ed25519 = 1; +my $opt_idn = 1; +my $opt_internal_ldns = 1; +my $opt_randomize = 0; +my $opt_prefix_openssl = ""; GetOptions( - 'ed25519!' => \$opt_ed25519, - 'idn!' => \$opt_idn, - 'internal-ldns!' => \$opt_internal_ldns, - 'randomize!' => \$opt_randomize, + 'ed25519!' => \$opt_ed25519, + 'idn!' => \$opt_idn, + 'internal-ldns!' => \$opt_internal_ldns, + 'randomize!' => \$opt_randomize, + 'prefix-openssl=s' => \$opt_prefix_openssl, ); configure_requires 'Devel::CheckLib'; @@ -39,18 +41,31 @@ cc_src_paths 'src'; # OpenSSL -cc_libs 'crypto'; +my %assert_lib_args_openssl; +if ( $opt_prefix_openssl ) { + print "Custom prefix for OpenSSL: $opt_prefix_openssl\n"; + cc_include_paths "$opt_prefix_openssl/include"; + cc_libs "-L$opt_prefix_openssl/lib", "crypto"; + $assert_lib_args_openssl{incpath} = "$opt_prefix_openssl/include"; + $assert_lib_args_openssl{libpath} = "$opt_prefix_openssl/lib"; +} +else { + cc_libs 'crypto'; +} + cc_assert_lib( lib => 'crypto', header => 'openssl/crypto.h', - function => 'if(SSLeay()) return 0; else return 1;' + function => 'if(SSLeay()) return 0; else return 1;', + %assert_lib_args_openssl, ); if ( $opt_ed25519 ) { print "Feature Ed25519 enabled\n"; cc_assert_lib( lib => 'crypto', header => 'openssl/evp.h', - function => 'EVP_PKEY_ED25519; return 0;' + function => 'EVP_PKEY_ED25519; return 0;', + %assert_lib_args_openssl, ); } else { @@ -124,10 +139,16 @@ END_CONTRIBUTORS my $configure_flags_make = <<'END_CONFIGURE_FLAGS'; -CONFIGURE_FLAGS = --disable-ldns-config --disable-dane +CONFIGURE_FLAGS += --disable-ldns-config --disable-dane END_CONFIGURE_FLAGS + my $openssl_make = < **Note:** The `lib` directory under the given path must be known to the +> dynamic linker or feature checks will fail. + + [IDN]: #idn [Internal ldns]: #internal-ldns [Ed25519]: #ed25519