1# Generated by OpenSSL 2{- 3 use lib catdir($config{sourcedir}, 'Configurations'); 4 use platform; 5 6 our %lib_info = ( 7 map { my %x = (); 8 my $lib_static = platform->staticlib($_); 9 my $lib_shared = 10 (platform->can("sharedlib_simple") 11 ? platform->sharedlib_simple($_) 12 : undef) 13 // platform->sharedlib($_); 14 $x{static} = $lib_static if $lib_static; 15 $x{shared} = $lib_shared if $lib_shared; 16 if (platform->can("sharedlib_import")) { 17 my $lib_shared_import = platform->sharedlib_import($_); 18 $x{shared_import} = $lib_shared_import if $lib_shared_import; 19 } 20 %x ? ( $_ => \%x ) : () } 21 grep { !$unified_info{attributes}->{libraries}->{$_}->{noinst} } 22 @{$unified_info{libraries}} 23 ); 24 our $no_static = !$disabled{shared} && !$lib_info{libcrypto}->{static}; 25 our $no_shared = $disabled{shared}; 26 27 # Unixifying of paths, because that's what CMake understands. 28 # This assumes that the given path is absolute. 29 sub unixify { 30 use File::Spec; 31 use File::Spec::Unix; 32 33 my $path = shift; 34 my $no_file = shift; 35 (my $volume, $directories, $file) = File::Spec->splitpath($path, $no_file // ()); 36 $directories = File::Spec::Unix->catdir(File::Spec->splitdir($directories)); 37 38 # We know that $volume is ignored by File::Spec::Unix, so we handle it specially 39 # according to the conventions of the platform. 40 $volume =~ s|^(.*?):$|/$1| if $^O eq "vms"; # On VMS, DEV: -> /DEV 41 42 return $volume . File::Spec::Unix->catpath('', $directories, $no_file ? () : $file); 43 } 44 "" 45-} 46# Commands may need to know the format version. 47set(CMAKE_IMPORT_FILE_VERSION 1) 48 49# Avoid duplicate find_package() 50set(_ossl_expected_targets OpenSSL::Crypto OpenSSL::SSL 51 {- output_off() if $disabled{uplink}; "" -}OpenSSL::applink{- output_on() if $disabled{uplink}; "" -}) 52set(_ossl_defined_targets) 53set(_ossl_undefined_targets) 54foreach(t IN LISTS _ossl_expected_targets) 55 if(TARGET "${t}") 56 LIST(APPEND _ossl_defined_targets "${t}") 57 else() 58 LIST(APPEND _ossl_undefined_targets "${t}") 59 endif() 60endforeach() 61message(DEBUG "_ossl_expected_targets = ${_ossl_expected_targets}") 62message(DEBUG "_ossl_defined_targets = ${_ossl_defined_targets}") 63message(DEBUG "_ossl_undefined_targets = ${_ossl_undefined_targets}") 64if(NOT _ossl_undefined_targets) 65 # All targets are defined, we're good, just undo everything and return 66 unset(_ossl_expected_targets) 67 unset(_ossl_defined_targets) 68 unset(_ossl_undefined_targets) 69 unset(CMAKE_IMPORT_FILE_VERSION) 70 return() 71endif() 72if(_ossl_defined_targets) 73 # We have a mix of defined and undefined targets. This is hard to reconcile, 74 # and probably the result of another config, or FindOpenSSL.cmake having been 75 # called, or whatever. Therefore, the best course of action is to quit with a 76 # hard error. 77 message(FATAL_ERROR "Some targets defined, others not:\nNot defined: ${_ossl_undefined_targets}\nDefined: ${_ossl_defined_targets}") 78endif() 79unset(_ossl_expected_targets) 80unset(_ossl_defined_targets) 81unset(_ossl_undefined_targets) 82 83{- 84 # It can be argued that 'cmake_path' would be the better choice here. However, 85 # cmake_path is relatively new, while get_filename_component has been around 86 # since before CMake 3.0 87-} 88# Set up the import path, so all other import paths are made relative this file 89get_filename_component(_ossl_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH) 90{- 91 # For each component in $OpenSSL::safe::installdata::CMAKECONFIGDIR[0] relative to 92 # $OpenSSL::safe::installdata::PREFIX[0], have CMake figure out the parent directory. 93 my $d = join('/', unixify(catdir($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], 94 $OpenSSL::safe::installdata::CMAKECONFIGDIR_REL_LIBDIR[0]), 1)); 95 $OUT = ''; 96 if ($d ne '.') { 97 $OUT .= 'get_filename_component(_ossl_prefix "${_ossl_prefix}" PATH)' . "\n" 98 foreach (split '/', $d); 99 } 100-} 101if(_ossl_prefix STREQUAL "/") 102 set(_ossl_prefix "") 103endif() 104 105{- output_off() unless $disabled{shared}; "" -} 106set(_ossl_use_static_libs True) 107{- output_on() unless $disabled{shared}; "" -} 108if(OPENSSL_USE_STATIC_LIBS) 109 set(_ossl_use_static_libs True) 110elseif(DEFINED OPENSSL_USE_STATIC_LIBS) 111 # We know OPENSSL_USE_STATIC_LIBS is defined and False 112 if(_ossl_use_static_libs) 113 # OPENSSL_USE_STATIC_LIBS is explicitly false, indicating that shared libraries are 114 # required. However, _ossl_use_static_libs indicates that no shared libraries are 115 # available. The best course of action is to simply return and leave it to CMake to 116 # use another OpenSSL config. 117 unset(_ossl_use_static_libs) 118 unset(CMAKE_IMPORT_FILE_VERSION) 119 return() 120 endif() 121endif() 122 123# Version, copied from what find_package() gives, for compatibility with FindOpenSSL.cmake 124set(OPENSSL_VERSION "${OpenSSL_VERSION}") 125set(OPENSSL_VERSION_MAJOR "${OpenSSL_VERSION_MAJOR}") 126set(OPENSSL_VERSION_MINOR "${OpenSSL_VERSION_MINOR}") 127set(OPENSSL_VERSION_FIX "${OpenSSL_VERSION_PATCH}") 128set(OPENSSL_FOUND YES) 129 130# Directories and names 131set(OPENSSL_LIBRARY_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], 1); -}") 132set(OPENSSL_INCLUDE_DIR{- $OUT = ''; 133 $OUT .= ' "${_ossl_prefix}/' . $_ . '"' 134 foreach (@OpenSSL::safe::installdata::INCLUDEDIR_REL_PREFIX); -}) 135set(OPENSSL_ENGINES_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], 1); -}/{- unixify($OpenSSL::safe::installdata::ENGINESDIR_REL_LIBDIR[0], 1); -}") 136set(OPENSSL_MODULES_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::LIBDIR_REL_PREFIX[0], 1); -}/{- unixify($OpenSSL::safe::installdata::MODULESDIR_REL_LIBDIR[0], 1); -}") 137set(OPENSSL_RUNTIME_DIR "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::BINDIR_REL_PREFIX[0], 1); -}") 138{- output_off() if $disabled{uplink}; "" -} 139set(OPENSSL_APPLINK_SOURCE "${_ossl_prefix}/{- unixify($OpenSSL::safe::installdata::APPLINKDIR_REL_PREFIX[0], 1); -}/applink.c") 140{- output_on() if $disabled{uplink}; "" -} 141set(OPENSSL_PROGRAM "${OPENSSL_RUNTIME_DIR}/{- platform->bin('openssl') -}") 142 143# Set up the imported targets 144if(_ossl_use_static_libs) 145{- output_off() unless $no_static; "" -} 146 # Static libraries are UNSUPPORTED in this configuration 147{- output_on() unless $no_static; output_off() if $no_static; "" -} 148 add_library(OpenSSL::Crypto STATIC IMPORTED) 149 add_library(OpenSSL::SSL STATIC IMPORTED) 150 151 set(OPENSSL_LIBCRYPTO_STATIC "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libcrypto}->{static} -}") 152 set(OPENSSL_LIBCRYPTO_DEPENDENCIES {- join(' ', @OpenSSL::safe::installdata::LDLIBS) -}) 153 set_target_properties(OpenSSL::Crypto PROPERTIES 154 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 155 IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_STATIC}) 156 set_property(TARGET OpenSSL::Crypto 157 PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBCRYPTO_DEPENDENCIES}) 158 159 set(OPENSSL_LIBSSL_STATIC "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libssl}->{static} -}") 160 set(OPENSSL_LIBSSL_DEPENDENCIES OpenSSL::Crypto) 161 set_target_properties(OpenSSL::SSL PROPERTIES 162 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 163 IMPORTED_LOCATION ${OPENSSL_LIBSSL_STATIC}) 164 set_property(TARGET OpenSSL::SSL 165 PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBSSL_DEPENDENCIES}) 166 167 # Directories and names compatible with CMake's FindOpenSSL.cmake 168 set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_STATIC}) 169 set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_LIBCRYPTO_DEPENDENCIES}) 170 set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_STATIC}) 171 set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES}) 172 set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES} ${OPENSSL_LIBCRYPTO_DEPENDENCIES}) 173{- output_on(); "" -} 174else() 175{- output_off() unless $no_shared; "" -} 176 # Shared libraries are UNSUPPORTED in this configuration 177{- output_on() unless $no_shared; 178 output_off() if $no_shared; "" -} 179 add_library(OpenSSL::Crypto SHARED IMPORTED) 180 add_library(OpenSSL::SSL SHARED IMPORTED) 181{- output_off() unless $lib_info{libcrypto}->{shared_import}; "" -} 182 set(OPENSSL_LIBCRYPTO_SHARED "${OPENSSL_RUNTIME_DIR}/{- $lib_info{libcrypto}->{shared} -}") 183 set(OPENSSL_LIBCRYPTO_IMPORT "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libcrypto}->{shared_import} -}") 184 set(OPENSSL_LIBCRYPTO_DEPENDENCIES {- join(' ', @LDLIBS) -}) 185 set_target_properties(OpenSSL::Crypto PROPERTIES 186 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 187 IMPORTED_IMPLIB ${OPENSSL_LIBCRYPTO_IMPORT} 188 IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_SHARED}) 189 set_property(TARGET OpenSSL::Crypto 190 PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBCRYPTO_DEPENDENCIES}) 191 192 set(OPENSSL_LIBSSL_SHARED "${OPENSSL_RUNTIME_DIR}/{- $lib_info{libssl}->{shared} -}") 193 set(OPENSSL_LIBSSL_IMPORT "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libssl}->{shared_import} -}") 194 set(OPENSSL_LIBSSL_DEPENDENCIES OpenSSL::Crypto {- join(' ', @LDLIBS) -}) 195 set_target_properties(OpenSSL::SSL PROPERTIES 196 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 197 IMPORTED_IMPLIB ${OPENSSL_LIBSSL_IMPORT} 198 IMPORTED_LOCATION ${OPENSSL_LIBSSL_SHARED}) 199 set_property(TARGET OpenSSL::SSL 200 PROPERTY INTERFACE_LINK_LIBRARIES ${OPENSSL_LIBSSL_DEPENDENCIES}) 201 202 # Directories and names compatible with CMake's FindOpenSSL.cmake 203 set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_IMPORT}) 204 set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_LIBCRYPTO_DEPENDENCIES}) 205 set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_IMPORT}) 206 set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES}) 207 set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_LIBSSL_DEPENDENCIES} ${OPENSSL_LIBCRYPTO_DEPENDENCIES}) 208{- output_on() unless $lib_info{libcrypto}->{shared_import}; 209 output_off() if $lib_info{libcrypto}->{shared_import}; "" -} 210 # Dependencies are assumed to be implied in the shared libraries 211 set(OPENSSL_LIBCRYPTO_SHARED "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libcrypto}->{shared} -}") 212 set_target_properties(OpenSSL::Crypto PROPERTIES 213 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 214 IMPORTED_LOCATION ${OPENSSL_LIBCRYPTO_SHARED}) 215 216 set(OPENSSL_LIBSSL_SHARED "${OPENSSL_LIBRARY_DIR}/{- $lib_info{libssl}->{shared} -}") 217 set_target_properties(OpenSSL::SSL PROPERTIES 218 IMPORTED_LINK_INTERFACE_LANGUAGES "C" 219 IMPORTED_LOCATION ${OPENSSL_LIBSSL_SHARED}) 220 221 # Directories and names compatible with CMake's FindOpenSSL.cmake 222 set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_LIBCRYPTO_SHARED}) 223 set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY}) 224 set(OPENSSL_SSL_LIBRARY ${OPENSSL_LIBSSL_SHARED}) 225 set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY}) 226 set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARIES}) 227{- output_on() if $lib_info{libcrypto}->{shared_import}; "" -} 228{- output_on() if $no_shared; "" -} 229endif() 230 231set_target_properties(OpenSSL::Crypto PROPERTIES 232 INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}") 233set_target_properties(OpenSSL::SSL PROPERTIES 234 INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}") 235 236{- output_off() if $disabled{uplink}; "" -} 237add_library(OpenSSL::applink INTERFACE IMPORTED) 238set_property(TARGET OpenSSL::applink PROPERTY 239 INTERFACE_SOURCES "${OPENSSL_APPLINK_SOURCE}") 240{- output_on() if $disabled{uplink}; "" -} 241 242unset(_ossl_prefix) 243unset(_ossl_use_static_libs) 244