--- /dev/null
+#! /usr/bin/env perl
+#
+# CC0 license applied, see LICENSE.md
+
+package WrapOpenSSL;
+use strict;
+use warnings;
+
+use File::Basename;
+use File::Spec::Functions;
+
+sub load {
+ my ($class, $p) = @_;
+ my $app = $p->{app_prove};
+
+ # turn on verbosity
+ my $verbose = $ENV{CTEST_INTERACTIVE_DEBUG_MODE} || $app->verbose();
+ $app->verbose( $verbose );
+
+ my $openssl_libdir = dirname($ENV{OPENSSL_CRYPTO_LIBRARY})
+ if $ENV{OPENSSL_CRYPTO_LIBRARY};
+ my $openssl_bindir = dirname($ENV{OPENSSL_PROGRAM})
+ if $ENV{OPENSSL_PROGRAM};
+ my $openssl_rootdir = $ENV{OPENSSL_ROOT_DIR};
+ my $openssl_rootdir_is_buildtree =
+ $openssl_rootdir && -d catdir($openssl_rootdir, 'configdata.pm');
+
+ unless ($openssl_libdir) {
+ $openssl_libdir = $openssl_rootdir_is_buildtree
+ ? $openssl_rootdir
+ : catdir($openssl_rootdir, 'lib');
+ }
+ unless ($openssl_bindir) {
+ $openssl_bindir = $openssl_rootdir_is_buildtree
+ ? catdir($openssl_rootdir, 'apps')
+ : catdir($openssl_rootdir, 'bin');
+ }
+
+ if ($openssl_libdir) {
+ # Variants of library paths
+ $ENV{$_} = join(':', $openssl_libdir, $ENV{$_} // ())
+ foreach (
+ 'LD_LIBRARY_PATH', # Linux, ELF HP-UX
+ 'DYLD_LIBRARY_PATH', # MacOS X
+ 'LIBPATH', # AIX, OS/2
+ );
+ if ($verbose) {
+ print STDERR "Added $openssl_libdir to:\n";
+ print STDERR " LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, LIBPATH\n";
+ }
+ }
+
+ if ($openssl_bindir) {
+ # Binary path, works the same everywhere
+ $ENV{PATH} = join(':', $openssl_bindir, $ENV{PATH});
+ if ($verbose) {
+ print STDERR "Added $openssl_bindir to:\n";
+ print STDERR " PATH\n";
+ }
+ }
+ if ($verbose) {
+ print STDERR "$_=", $ENV{$_} // '', "\n"
+ foreach qw(LD_LIBRARY_PATH DYLD_LIBRARY_PATH LIBPATH PATH);
+ }
+}
+
+1;