| # Generated by OpenSSL |
| {- |
| use lib catdir($config{sourcedir}, 'Configurations'); |
| use platform; |
| |
| our %lib_info = ( |
| map { my %x = (); |
| my $lib_static = platform->staticlib($_); |
| my $lib_shared = |
| (platform->can("sharedlib_simple") |
| ? platform->sharedlib_simple($_) |
| : undef) |
| // platform->sharedlib($_); |
| $x{static} = $lib_static if $lib_static; |
| $x{shared} = $lib_shared if $lib_shared; |
| if (platform->can("sharedlib_import")) { |
| my $lib_shared_import = platform->sharedlib_import($_); |
| $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[0] relative to |
| # $OpenSSL::safe::installdata::PREFIX[0], have CMake figure out the parent directory. |
| my $d = join('/', unixify(catdir($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], |
| $OpenSSL::safe::installdata::CMAKECONFIGDIR_REL_LIBDIR[0]), 1)); |
| $OUT = ''; |
| if ($d ne '.') { |
| $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_LIBRARY_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], 1); -}") |
| set(OPENSSL_INCLUDE_DIR{- $OUT = ''; |
| $OUT .= ' "${_ossl_prefix}/' . $_ . '"' |
| foreach (@OpenSSL::safe::installdata::INCLUDEDIR_REL_PREFIX); -}) |
| set(OPENSSL_MODULES_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], 1); -}/{- unixify($OpenSSL::safe::installdata::MODULESDIR_REL_LIBDIR[0], 1); -}") |
| set(OPENSSL_RUNTIME_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::BINDIR_REL_PREFIX[0], 1); -}") |
| {- output_off() if $disabled{uplink}; "" -} |
| set(OPENSSL_APPLINK_SOURCE "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::APPLINKDIR_REL_PREFIX[0], 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) |