blob: 111d81c92266436e01cb0042ab0cd9099255234c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
This document describes how libcrypto was packaged for build2. In particular,
this understanding will be useful when upgrading to a new upstream version.
See ../README-DEV for general notes on OpenSSL packaging.
Symlink the required upstream files and directories into libcrypto/:
$ ln -s ../../upstream/{crypto,engines,include,providers} libcrypto
Create libcrypto/downstream/{crypto,openssl}/ directories and fill them with
the platform-specific and platform-independent auto-generated headers from
<build-dir>/include/{crypto,openssl}/ (note: all include/crypto/openssl/*.h
files except for configuration.h are platform-independent). Also define some
common macros in libcrypto/downstream/openssl/configuration.h to avoid
defining them via the -D preprocessor option (see libcrypto/buildfile for
details). Note that configuration.h is included into all public headers and,
presumably, all source files.
Copy auto-generated platform-independent files and directories as follows:
params_idx.c -> libcrypto/downstream/crypto/
providers/common/der/*.c -> libcrypto/downstream/der/
include/internal/param_names.h -> libcrypto/downstream/internal/
providers/common/include/prov/ -> libcrypto/downstream/
Create libcrypto/downstream/ssl/ directory and symlink
../../../../upstream/ssl/record/methods/{ssl3_cbc,tls_pad}.c in it.
Create libcrypto/buildinf-body.h.in using the upstream's auto-generated
buildinf.h as a pattern. Create libcrypto/downstream/crypto/buildinf.h,
replacing the upstream's auto-generated header and including our own
auto-generated buildinf-body.h. Such a proxying is required for the headers
auto-generating machinery to work properly (see
libcrypto/downstream/crypto/buildinf.h for details).
Copy upstream's auto-generated libcrypto.{ld,def} into libcrypto/. Comment
out the "LIBRARY libcrypto-..." line in libcrypto.def.
Start with compiling all source files and then iteratively exclude those that
cause compilation/linking problems. During this process grep through
build.info files in the file-in-question directories and
../../upstream/Configurations/00-base-templates.conf file they refer into (via
the $target{<key>} variables) to make sure that the source file should really
be omitted in our setup.
Note that it is not easy to distinguish which public headers in
libcrypto/openssl/ relate to libcrypto and which ones to libssl. That is get
complicated with the fact that libcrypto uses some libssl functionality
internally (includes ssl.h, etc). Thus, we will just install all the public
headers with libcrypto.
|