提交 cf551a51 编写于 作者: R Richard Levitte

Link internal tests with static OpenSSL libraries when needed

Reviewed-by: NRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1889)
上级 473a9547
......@@ -312,79 +312,39 @@ IF[{- !$disabled{tests} -}]
ENDIF
# Internal test programs. These are essentially a collection of internal
# test routines. Because they sometimes need to reach internal symbols that
# aren't available through the shared library (at least on Linux, Solaris,
# Windows and VMS, where the exported symbols are those listed in util/*.num),
# these programs may be built on files directly picked from inside crypto/
# or ssl/, to test using symbols that exist in those specific files. These
# programs will also be linked with libcrypto / libssl, so we don't pick
# out more specific files than necessary.
# This might mean we have multiply defined symbols, but since linking is
# ordered with object files first and libraries after, the symbols from the
# object files will be chosen before those in the libraries. This is handled
# properly by all linkers.
# Note that when building with static libraries, none of those extra files
# are needed, since all symbols are available anyway, regardless of what's
# listed in util/*.num.
PROGRAMS_NO_INST=asn1_internal_test modes_internal_test x509_internal_test
IF[{- !$disabled{mdc2} -}]
PROGRAMS_NO_INST=mdc2_internal_test
ENDIF
IF[{- !$disabled{poly1305} -}]
PROGRAMS_NO_INST=poly1305_internal_test
ENDIF
SOURCE[poly1305_internal_test]=poly1305_internal_test.c testutil.c test_main_custom.c
IF[{- !$disabled{shared} -}]
SOURCE[poly1305_internal_test]= ../crypto/poly1305/poly1305.c \
{- rebase_files("../crypto/poly1305", $target{poly1305_asm_src}) -} \
{- rebase_files("../crypto", $target{cpuid_asm_src}) -} \
../crypto/cryptlib.c
# test routines. Some of them need to reach internal symbols that aren't
# available through the shared library (at least on Linux, Solaris, Windows
# and VMS, where the exported symbols are those listed in util/*.num), these
# programs are forcebly linked with the static libraries, where all symbols
# are always available. This excludes linking these programs natively on
# Windows when building shared libraries, since the static libraries share
# names with the DLL import libraries.
IF[{- $disabled{shared} || $target{build_scheme}->[1] ne 'windows' -}]
PROGRAMS_NO_INST=asn1_internal_test modes_internal_test x509_internal_test
IF[{- !$disabled{poly1305} -}]
PROGRAMS_NO_INST=poly1305_internal_test
ENDIF
SOURCE[poly1305_internal_test]=poly1305_internal_test.c testutil.c test_main_custom.c
INCLUDE[poly1305_internal_test]=.. ../include ../crypto/include
DEPEND[poly1305_internal_test]=../libcrypto.a
SOURCE[asn1_internal_test]=asn1_internal_test.c testutil.c test_main.c
INCLUDE[asn1_internal_test]=.. ../include ../crypto/include
DEPEND[asn1_internal_test]=../libcrypto.a
SOURCE[modes_internal_test]=modes_internal_test.c testutil.c test_main_custom.c
INCLUDE[modes_internal_test]=.. ../include
DEPEND[modes_internal_test]=../libcrypto.a
SOURCE[x509_internal_test]=x509_internal_test.c testutil.c test_main.c
INCLUDE[x509_internal_test]=.. ../include
DEPEND[x509_internal_test]=../libcrypto.a
ENDIF
INCLUDE[poly1305_internal_test]=.. ../include ../crypto/include
DEPEND[poly1305_internal_test]=../libcrypto
SOURCE[asn1_internal_test]=asn1_internal_test.c testutil.c test_main.c
IF[{- !$disabled{shared} -}]
SOURCE[asn1_internal_test]= ../crypto/asn1/a_strnid.c \
../crypto/rsa/rsa_ameth.c ../crypto/dsa/dsa_ameth.c \
../crypto/dh/dh_ameth.c ../crypto/ec/ec_ameth.c \
../crypto/hmac/hm_ameth.c ../crypto/cmac/cm_ameth.c \
../crypto/ec/ecx_meth.c ../crypto/ec/curve25519.c
ENDIF
INCLUDE[asn1_internal_test]=.. ../include ../crypto/include
DEPEND[asn1_internal_test]=../libcrypto
SOURCE[modes_internal_test]=modes_internal_test.c testutil.c test_main_custom.c
IF[{- !$disabled{shared} -}]
SOURCE[modes_internal_test]= \
{- rebase_files("../crypto", $target{cpuid_asm_src}); -} \
../crypto/cryptlib.c
ENDIF
INCLUDE[modes_internal_test]=.. ../include
DEPEND[modes_internal_test]=../libcrypto
# The reason for the huge amount of directly included x509v3 files
# is that a table that is checked by x509_internal_test refers to
# structures that are spread all over those files.
SOURCE[x509_internal_test]=x509_internal_test.c testutil.c test_main.c
IF[{- !$disabled{shared} -}]
SOURCE[x509_internal_test]= ../crypto/x509v3/v3_bitst.c \
../crypto/x509v3/v3_ia5.c ../crypto/x509v3/v3_skey.c \
../crypto/x509v3/v3_pku.c ../crypto/x509v3/v3_alt.c \
../crypto/x509v3/v3_bcons.c ../crypto/x509v3/v3_int.c \
../crypto/x509v3/v3_cpols.c ../crypto/x509v3/v3_akey.c \
../crypto/x509v3/v3_crld.c ../crypto/x509v3/v3_utl.c \
../crypto/x509v3/v3_extku.c ../crypto/x509v3/v3_enum.c \
../crypto/x509v3/v3_sxnet.c ../crypto/x509v3/v3_info.c \
../crypto/x509v3/v3_addr.c ../crypto/x509v3/v3_asid.c \
../crypto/x509v3/v3_pcons.c ../crypto/x509v3/v3_pmaps.c \
../crypto/x509v3/v3_pci.c ../crypto/x509v3/v3_ncons.c \
../crypto/x509v3/v3_tlsf.c ../crypto/ocsp/v3_ocsp.c \
../crypto/ct/ct_x509v3.c ../crypto/asn1/a_strex.c
IF[{- !$disabled{mdc2} -}]
PROGRAMS_NO_INST=mdc2_internal_test
ENDIF
INCLUDE[x509_internal_test]=.. ../include
DEPEND[x509_internal_test]=../libcrypto
SOURCE[mdc2_internal_test]=mdc2_internal_test.c testutil.c test_main.c
INCLUDE[mdc2_internal_test]=.. ../include
......
......@@ -12,12 +12,14 @@ use OpenSSL::Test::Utils;
setup("test_internal");
my $shared_windows = $^O eq 'MSWin32' && !disabled("shared");
my %known_internal_tests =
( mdc2_internal_test => !disabled("mdc2"),
poly1305_internal_test => !disabled("poly1305"),
modes_internal_test => 1,
asn1_internal_test => 1,
x509_internal_test => 1 );
poly1305_internal_test => !disabled("poly1305") && !$shared_windows,
modes_internal_test => !$shared_windows,
asn1_internal_test => !$shared_windows,
x509_internal_test => !$shared_windows );
plan tests => scalar keys %known_internal_tests;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册