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