Commit cf551a51 authored by Richard Levitte's avatar Richard Levitte
Browse files

Link internal tests with static OpenSSL libraries when needed

parent 473a9547
Loading
Loading
Loading
Loading
+30 −70
Original line number Diff line number Diff line
@@ -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.
  # 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{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
  ENDIF
    INCLUDE[poly1305_internal_test]=.. ../include ../crypto/include
  DEPEND[poly1305_internal_test]=../libcrypto
    DEPEND[poly1305_internal_test]=../libcrypto.a

    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
    DEPEND[asn1_internal_test]=../libcrypto.a

    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
    DEPEND[modes_internal_test]=../libcrypto.a

  # 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
  ENDIF
    INCLUDE[x509_internal_test]=.. ../include
  DEPEND[x509_internal_test]=../libcrypto
    DEPEND[x509_internal_test]=../libcrypto.a
  ENDIF

  IF[{- !$disabled{mdc2} -}]
    PROGRAMS_NO_INST=mdc2_internal_test
  ENDIF

  SOURCE[mdc2_internal_test]=mdc2_internal_test.c testutil.c test_main.c
  INCLUDE[mdc2_internal_test]=.. ../include
+6 −4
Original line number Diff line number Diff line
@@ -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;