aboutsummaryrefslogtreecommitdiffstats
path: root/Configurations
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-11-10 01:00:17 +0100
committerRichard Levitte <levitte@openssl.org>2016-11-10 15:51:43 +0100
commit473a954771508f4d488bfba5fc7699fe8b45bdcf (patch)
treec584d21092e367bd6c41fe19cf493f5a09a0db85 /Configurations
parent186a31e510d1326063cfeca17e58fadec236ad2a (diff)
downloadopenssl-473a954771508f4d488bfba5fc7699fe8b45bdcf.tar.gz
Document how to force linking with static libraries
Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1889)
Diffstat (limited to 'Configurations')
-rw-r--r--Configurations/README11
-rw-r--r--Configurations/README.design23
2 files changed, 29 insertions, 5 deletions
diff --git a/Configurations/README b/Configurations/README
index 0b82dedca9..21a6f036f8 100644
--- a/Configurations/README
+++ b/Configurations/README
@@ -339,6 +339,17 @@ source as well. However, the files given through SOURCE are expected
to be located in the source tree while files given through DEPEND are
expected to be located in the build tree)
+It's also possible to depend on static libraries explicitely:
+
+ DEPEND[foo]=libsomething.a
+ DEPEND[libbar]=libsomethingelse.a
+
+This should be rarely used, and care should be taken to make sure it's
+only used when supported. For example, native Windows build doesn't
+support build static libraries and DLLs at the same time, so using
+static libraries on Windows can only be done when configured
+'no-shared'.
+
For some libraries, we maintain files with public symbols and their
slot in a transfer vector (important on some platforms). It can be
declared like this:
diff --git a/Configurations/README.design b/Configurations/README.design
index bea9790afb..41c2949d08 100644
--- a/Configurations/README.design
+++ b/Configurations/README.design
@@ -133,7 +133,7 @@ library 'libssl' is built from the source file 'ssl/tls.c'.
ENGINES_NO_INST=ossltest
SOURCE[ossltest]=e_ossltest.c
- DEPEND[ossltest]=../libcrypto
+ DEPEND[ossltest]=../libcrypto.a
INCLUDE[ossltest]=../include
This is the build.info file in 'engines/', telling us that two engines
@@ -142,8 +142,9 @@ dasync's source is 'engines/e_dasync.c' and ossltest's source is
'engines/e_ossltest.c' and that the include directory 'include/' may
be used when building anything that will be part of these engines.
Also, both engines depend on the library 'libcrypto' to function
-properly. Finally, only dasync is being installed, as ossltest is
-only for internal testing.
+properly. ossltest is explicitly linked with the static variant of
+the library 'libcrypto'. Finally, only dasync is being installed, as
+ossltest is only for internal testing.
When Configure digests these build.info files, the accumulated
information comes down to this:
@@ -170,7 +171,7 @@ information comes down to this:
ENGINES_NO_INST=engines/ossltest
SOURCE[engines/ossltest]=engines/e_ossltest.c
- DEPEND[engines/ossltest]=libcrypto
+ DEPEND[engines/ossltest]=libcrypto.a
INCLUDE[engines/ossltest]=include
GENERATE[crypto/buildinf.h]=util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)"
@@ -281,10 +282,14 @@ section above would be digested into a %unified_info table:
[
"crypto/buildinf.h",
],
- "engines/ossltest" =>
+ "engines/dasync" =>
[
"libcrypto",
],
+ "engines/ossltest" =>
+ [
+ "libcrypto.a",
+ ],
"libssl" =>
[
"libcrypto",
@@ -396,6 +401,14 @@ section above would be digested into a %unified_info table:
[
"crypto/evp.c",
],
+ "engines/e_dasync.o" =>
+ [
+ "engines/e_dasync.c",
+ ],
+ "engines/dasync" =>
+ [
+ "engines/e_dasync.o",
+ ],
"engines/e_ossltest.o" =>
[
"engines/e_ossltest.c",