Commit 473a9547 authored by Richard Levitte's avatar Richard Levitte
Browse files

Document how to force linking with static libraries

parent 186a31e5
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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:
+18 −5
Original line number Diff line number Diff line
@@ -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",