--- /dev/null
+# Generated by OpenSSL
+{-
+ use lib catdir($config{sourcedir}, 'Configurations');
+ use platform;
+ use Data::Dumper;
+
+ our %lib_info = (
+ map { my %x = ();
+ my $lib_static = platform->staticlib($_);
+ my $lib_shared =
+ (platform->can("sharedlib_simple")
+ ? platform->sharedlib_simple($_)
+ : undef)
+ // platform->sharedlib($_);
+ my $lib_shared_import = platform->sharedlib_import($_);
+ $x{static} = $lib_static if $lib_static;
+ $x{shared} = $lib_shared if $lib_shared;
+ $x{shared_import} = $lib_shared_import if $lib_shared_import;
+ %x ? ( $_ => \%x ) : () }
+ grep { !$unified_info{attributes}->{libraries}->{$_}->{noinst} }
+ @{$unified_info{libraries}}
+ );
+ our $no_static = !$disabled{shared} && !$lib_info{libcrypto}->{static};
+ our $no_shared = $disabled{shared};
+
+ # Unixifying of paths, because that's what CMake understands.
+ # This assumes that the given path is absolute.
+ sub unixify {
+ use File::Spec;
+ use File::Spec::Unix;
+
+ my $path = shift;
+ my $no_file = shift;
+ (my $volume, $directories, $file) = File::Spec->splitpath($path, $no_file // ());
+ $directories = File::Spec::Unix->catdir(File::Spec->splitdir($directories));
+
+ # We know that $volume is ignored by File::Spec::Unix, so we handle it specially
+ # according to the conventions of the platform.
+ $volume =~ s|^(.*?):$|/$1| if $^O eq "vms"; # On VMS, DEV: -> /DEV
+
+ return $volume . File::Spec::Unix->catpath('', $directories, $no_file ? () : $file);
+ }
+ ""
+-}
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Avoid duplicate find_package()
+set(_ossl_expected_targets OpenSSL::Crypto OpenSSL::SSL
+ {- output_off() if $disabled{uplink}; "" -}OpenSSL::applink{- output_on() if $disabled{uplink}; "" -})
+set(_ossl_defined_targets)
+set(_ossl_undefined_targets)
+foreach(t IN LISTS _ossl_expected_targets)
+ if(TARGET "${t}")
+ LIST(APPEND _ossl_defined_targets "${t}")
+ else()
+ LIST(APPEND _ossl_undefined_targets "${t}")
+ endif()
+endforeach()
+message(DEBUG "_ossl_expected_targets = ${_ossl_expected_targets}")
+message(DEBUG "_ossl_defined_targets = ${_ossl_defined_targets}")
+message(DEBUG "_ossl_undefined_targets = ${_ossl_undefined_targets}")
+if(NOT _ossl_undefined_targets)
+ # All targets are defined, we're good, just undo everything and return
+ unset(_ossl_expected_targets)
+ unset(_ossl_defined_targets)
+ unset(_ossl_undefined_targets)
+ unset(CMAKE_IMPORT_FILE_VERSION)
+ return()
+endif()
+if(_ossl_defined_targets)
+ # We have a mix of defined and undefined targets. This is hard to reconcile,
+ # and probably the result of another config, or FindOpenSSL.cmake having been
+ # called, or whatever. Therefore, the best course of action is to quit with a
+ # hard error.
+ message(FATAL_ERROR "Some targets defined, others not:\nNot defined: ${_ossl_undefined_targets}\nDefined: ${_ossl_defined_targets}")
+endif()
+unset(_ossl_expected_targets)
+unset(_ossl_defined_targets)
+unset(_ossl_undefined_targets)
+
+{-
+ # It can be argued that 'cmake_path' would be the better choice here. However,
+ # cmake_path is relatively new, while get_filename_component has been around
+ # since before CMake 3.0
+-}
+# Set up the import path, so all other import paths are made relative this file
+get_filename_component(_ossl_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH)
+{-
+ # For each component in $OpenSSL::safe::installdata::CMAKECONFIGDIR_REL, have CMake
+ # out the parent directory.
+ my $d = unixify($OpenSSL::safe::installdata::CMAKECONFIGDIR_REL);
+ $OUT = '';
+ $OUT .= 'get_filename_component(_ossl_prefix "${_ossl_prefix}" PATH)' . "\n"
+ foreach (split '/', $d);
+-}
+if(_ossl_prefix STREQUAL "/")
+ set(_ossl_prefix "")
+endif()
+
+{- output_off() unless $disabled{shared}; "" -}
+set(_ossl_use_static_libs True)
+{- output_on() unless $disabled{shared}; "" -}
+if(OPENSSL_USE_STATIC_LIBS)
+ set(_ossl_use_static_libs True)
+elseif(DEFINED OPENSSL_USE_STATIC_LIBS)
+ # We know OPENSSL_USE_STATIC_LIBS is defined and False
+ if(_ossl_use_static_libs)
+ # OPENSSL_USE_STATIC_LIBS is explicitly false, indicating that shared libraries are
+ # required. However, _ossl_use_static_libs indicates that no shared libraries are
+ # available. The best course of action is to simply return and leave it to CMake to
+ # use another OpenSSL config.
+ unset(_ossl_use_static_libs)
+ unset(CMAKE_IMPORT_FILE_VERSION)
+ return()
+ endif()
+endif()
+
+# Version, copied from what find_package() gives, for compatibility with FindOpenSSL.cmake
+set(OPENSSL_VERSION "${OpenSSL_VERSION}")
+set(OPENSSL_VERSION_MAJOR "${OpenSSL_VERSION_MAJOR}")
+set(OPENSSL_VERSION_MINOR "${OpenSSL_VERSION_MINOR}")
+set(OPENSSL_VERSION_FIX "${OpenSSL_VERSION_PATCH}")
+set(OPENSSL_FOUND YES)
+
+# Directories and names
+set(OPENSSL_INCLUDE_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::INCLUDEDIR_REL, 1); -}")
+set(OPENSSL_LIBRARY_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::LIBDIR_REL, 1); -}")
+set(OPENSSL_ENGINES_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::ENGINESDIR_REL, 1); -}")
+set(OPENSSL_MODULES_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::MODULESDIR_REL, 1); -}")
+set(OPENSSL_RUNTIME_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::BINDIR_REL, 1); -}")
+{- output_off() if $disabled{uplink}; "" -}
+set(OPENSSL_APPLINK_SOURCE "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::APPLINKDIR_REL, 1); -}/applink.c")
+{- output_on() if $disabled{uplink}; "" -}
+set(OPENSSL_PROGRAM "${OPENSSL_RUNTIME_DIR}/{- platform->bin('openssl') -}")
+
+# Set up the imported targets
+if(_ossl_use_static_libs)
+{- output_off() unless $no_static; "" -}
+ # Static libraries are UNSUPPORTED in this configuration
+{- output_on() unless $no_static; output_off() if $no_static; "" -}
+ add_library(OpenSSL::Crypto STATIC IMPORTED)
+ add_library(OpenSSL::SSL STATIC IMPORTED)
+
+ set(OPENSSL_LIBCRYPTO_STATIC "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libcrypto}->{static} -}")
+ set(OPENSSL_LIBCRYPTO_DEPENDENCIES {- join(' ', @OpenSSL::safe::installdata::LDLIBS) -})
+ set_target_properties(OpenSSL::Crypto PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_STATIC})
+ set_property(TARGET OpenSSL::Crypto
+ PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
+
+ set(OPENSSL_LIBSSL_STATIC "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libssl}->{static} -}")
+ set(OPENSSL_LIBSSL_DEPENDENCIES OpenSSL::Crypto)
+ set_target_properties(OpenSSL::SSL PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION ${OPENSSL_LIBSSL_STATIC})
+ set_property(TARGET OpenSSL::SSL
+ PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBSSL_DEPENDENCIES})
+
+ # Directories and names compatible with CMake's FindOpenSSL.cmake
+ set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_STATIC})
+ set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
+ set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_STATIC})
+ set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES})
+ set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
+{- output_on(); "" -}
+else()
+{- output_off() unless $no_shared; "" -}
+ # Shared libraries are UNSUPPORTED in this configuration
+{- output_on() unless $no_shared;
+ output_off() if $no_shared; "" -}
+ add_library(OpenSSL::Crypto SHARED IMPORTED)
+ add_library(OpenSSL::SSL SHARED IMPORTED)
+{- output_off() unless $lib_info{libcrypto}->{shared_import}; "" -}
+ set(OPENSSL_LIBCRYPTO_SHARED "${OPENSSL_RUNTIME_DIR}/{- $lib_info{libcrypto}->{shared} -}")
+ set(OPENSSL_LIBCRYPTO_IMPORT "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libcrypto}->{shared_import} -}")
+ set(OPENSSL_LIBCRYPTO_DEPENDENCIES {- join(' ', @LDLIBS) -})
+ set_target_properties(OpenSSL::Crypto PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_IMPLIB ${OPENSSL_LIBCRYPTO_IMPORT}
+ IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_SHARED})
+ set_property(TARGET OpenSSL::Crypto
+ PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
+
+ set(OPENSSL_LIBSSL_SHARED "${OPENSSL_RUNTIME_DIR}/{- $lib_info{libssl}->{shared} -}")
+ set(OPENSSL_LIBSSL_IMPORT "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libssl}->{shared_import} -}")
+ set(OPENSSL_LIBSSL_DEPENDENCIES OpenSSL::Crypto {- join(' ', @LDLIBS) -})
+ set_target_properties(OpenSSL::SSL PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_IMPLIB ${OPENSSL_LIBSSL_IMPORT}
+ IMPORTED_LOCATION ${OPENSSL_LIBSSL_SHARED})
+ set_property(TARGET OpenSSL::SSL
+ PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBSSL_DEPENDENCIES})
+
+ # Directories and names compatible with CMake's FindOpenSSL.cmake
+ set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_IMPORT})
+ set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
+ set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_IMPORT})
+ set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES})
+ set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES} ${OPENSSL_LIBCRYPTO_DEPENDENCIES})
+{- output_on() unless $lib_info{libcrypto}->{shared_import};
+ output_off() if $lib_info{libcrypto}->{shared_import}; "" -}
+ # Dependencies are assumed to be implied in the shared libraries
+ set(OPENSSL_LIBCRYPTO_SHARED "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libcrypto}->{shared} -}")
+ set_target_properties(OpenSSL::Crypto PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_SHARED})
+
+ set(OPENSSL_LIBSSL_SHARED "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libssl}->{shared} -}")
+ set_target_properties(OpenSSL::SSL PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION ${OPENSSL_LIBSSL_SHARED})
+
+ # Directories and names compatible with CMake's FindOpenSSL.cmake
+ set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_SHARED})
+ set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
+ set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_SHARED})
+ set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
+ set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES})
+{- output_on() if $lib_info{libcrypto}->{shared_import}; "" -}
+{- output_on() if $no_shared; "" -}
+endif()
+
+set_target_properties(OpenSSL::Crypto PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
+set_target_properties(OpenSSL::SSL PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
+
+{- output_off() if $disabled{uplink}; "" -}
+add_library(OpenSSL::applink INTERFACE IMPORTED)
+set_property(TARGET OpenSSL::applink PROPERTY
+ INTERFACE_SOURCES "${OPENSSL_APPLINK_SOURCE}")
+{- output_on() if $disabled{uplink}; "" -}
+
+unset(_ossl_prefix)
+unset(_ossl_use_static_libs)
my @absolutes = qw(PREFIX);
# These may be absolute directories, and if not, they are expected to be set up
# as subdirectories to PREFIX
-my @subdirs = qw(BINDIR LIBDIR INCLUDEDIR ENGINESDIR MODULESDIR APPLINKDIR);
+my @subdirs = qw(BINDIR LIBDIR INCLUDEDIR APPLINKDIR ENGINESDIR MODULESDIR
+ PKGCONFIGDIR CMAKECONFIGDIR);
my %keys = ();
foreach (@ARGV) {
$keys{$k} = 1;
$ENV{$k} = $v;
}
+
foreach my $k (sort keys %keys) {
my $v = $ENV{$k};
$v = File::Spec->rel2abs($v) if $v && grep { $k eq $_ } @absolutes;
}
foreach my $k (sort keys %keys) {
my $v = $ENV{$k} || '.';
- $v = File::Spec->rel2abs($v, $ENV{PREFIX})
- if ($v && !File::Spec->file_name_is_absolute($v)
- && grep { $k eq $_ } @subdirs);
+
+ # Absolute paths for the subdir variables are computed. This provides
+ # the usual form of values for names that have become norm, known as GNU
+ # installation paths.
+ # For the benefit of those that need it, the subdirectories are preserved
+ # as they are, using the same variable names, suffixed with '_REL', if they
+ # are indeed subdirectories.
+ if (grep { $k eq $_ } @subdirs) {
+ if (File::Spec->file_name_is_absolute($v)) {
+ $ENV{"${k}_REL"} = File::Spec->abs2rel($v, $ENV{PREFIX});
+ } else {
+ $ENV{"${k}_REL"} = $v;
+ $v = File::Spec->rel2abs($v, $ENV{PREFIX});
+ }
+ }
$ENV{$k} = $v;
}
use warnings;
use Exporter;
our \@ISA = qw(Exporter);
-our \@EXPORT = qw(\$PREFIX \$BINDIR \$LIBDIR \$INCLUDEDIR \$APPLINKDIR
- \$ENGINESDIR \$MODULESDIR \$VERSION \$LDLIBS);
-
-our \$PREFIX = '$ENV{PREFIX}';
-our \$BINDIR = '$ENV{BINDIR}';
-our \$LIBDIR = '$ENV{LIBDIR}';
-our \$INCLUDEDIR = '$ENV{INCLUDEDIR}';
-our \$ENGINESDIR = '$ENV{ENGINESDIR}';
-our \$MODULESDIR = '$ENV{MODULESDIR}';
-our \$APPLINKDIR = '$ENV{APPLINKDIR}';
-our \$VERSION = '$ENV{VERSION}';
-our \@LDLIBS =
+our \@EXPORT = qw(\$PREFIX
+ \$BINDIR \$BINDIR_REL
+ \$LIBDIR \$LIBDIR_REL
+ \$INCLUDEDIR \$INCLUDEDIR_REL
+ \$APPLINKDIR \$APPLINKDIR_REL
+ \$ENGINESDIR \$ENGINESDIR_REL
+ \$MODULESDIR \$MODULESDIR_REL
+ \$PKGCONFIGDIR \$PKGCONFIGDIR_REL
+ \$CMAKECONFIGDIR \$CMAKECONFIGDIR_REL
+ \$VERSION \@LDLIBS);
+
+our \$PREFIX = '$ENV{PREFIX}';
+our \$BINDIR = '$ENV{BINDIR}';
+our \$BINDIR_REL = '$ENV{BINDIR_REL}';
+our \$LIBDIR = '$ENV{LIBDIR}';
+our \$LIBDIR_REL = '$ENV{LIBDIR_REL}';
+our \$INCLUDEDIR = '$ENV{INCLUDEDIR}';
+our \$INCLUDEDIR_REL = '$ENV{INCLUDEDIR_REL}';
+our \$APPLINKDIR = '$ENV{APPLINKDIR}';
+our \$APPLINKDIR_REL = '$ENV{APPLINKDIR_REL}';
+our \$ENGINESDIR = '$ENV{ENGINESDIR}';
+our \$ENGINESDIR_REL = '$ENV{ENGINESDIR_REL}';
+our \$MODULESDIR = '$ENV{MODULESDIR}';
+our \$MODULESDIR_REL = '$ENV{MODULESDIR_REL}';
+our \$PKGCONFIGDIR = '$ENV{PKGCONFIGDIR}';
+our \$PKGCONFIGDIR_REL = '$ENV{PKGCONFIGDIR_REL}';
+our \$CMAKECONFIGDIR = '$ENV{CMAKECONFIGDIR}';
+our \$CMAKECONFIGDIR_REL = '$ENV{CMAKECONFIGDIR_REL}';
+our \$VERSION = '$ENV{VERSION}';
+our \@LDLIBS =
# Unix and Windows use space separation, VMS uses comma separation
split(/ +| *, */, '$ENV{LDLIBS}');