From 473a954771508f4d488bfba5fc7699fe8b45bdcf Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 10 Nov 2016 01:00:17 +0100 Subject: [PATCH] Document how to force linking with static libraries Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/1889) --- Configurations/README | 11 +++++++++++ Configurations/README.design | 23 ++++++++++++++++++----- 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", -- 2.25.1