{-
     use File::Spec::Functions;
     sub rebase_files
     {
         my ($base, $files) = @_;
         return join(" ", map { "$base/$_" } split(/\s+/, $files));
     }
     our $apps_extra =
         $config{target} =~ /^vms-/ ? "../apps/vms_term_sock.c" : "";
     ""
-}
IF[{- !$disabled{tests} -}]
  PROGRAMS_NO_INST=\
          aborttest \
          sanitytest exdatatest bntest \
          ectest ecdsatest ecdhtest gmdifftest pbelutest ideatest \
          md2test \
          hmactest \
          rc2test rc4test rc5test \
          destest sha1test sha256t sha512t \
          mdc2test \
          randtest dhtest enginetest casttest \
          bftest ssltest_old dsatest exptest rsa_test \
          evp_test evp_extra_test igetest v3nametest v3ext \
          crltest danetest bad_dtls_test \
          constant_time_test verify_extra_test clienthellotest \
          packettest asynctest secmemtest srptest memleaktest stack_test \
          dtlsv1listentest ct_test threadstest afalgtest d2i_test \
          ssl_test_ctx_test ssl_test x509aux cipherlist_test asynciotest \
          bioprinttest sslapitest dtlstest sslcorrupttest bio_enc_test \
          pkey_meth_test uitest cipherbytes_test x509_time_test recordlentest

  SOURCE[aborttest]=aborttest.c
  INCLUDE[aborttest]=../include
  DEPEND[aborttest]=../libcrypto

  SOURCE[sanitytest]=sanitytest.c
  INCLUDE[sanitytest]=../include
  DEPEND[sanitytest]=../libcrypto

  SOURCE[exdatatest]=exdatatest.c
  INCLUDE[exdatatest]=../include
  DEPEND[exdatatest]=../libcrypto

  SOURCE[bntest]=bntest.c testutil.c test_main_custom.c
  INCLUDE[bntest]=.. ../crypto/include ../include
  DEPEND[bntest]=../libcrypto

  SOURCE[ectest]=ectest.c
  INCLUDE[ectest]=.. ../include
  DEPEND[ectest]=../libcrypto

  SOURCE[ecdsatest]=ecdsatest.c
  INCLUDE[ecdsatest]=../include
  DEPEND[ecdsatest]=../libcrypto

  SOURCE[ecdhtest]=ecdhtest.c
  INCLUDE[ecdhtest]=../include
  DEPEND[ecdhtest]=../libcrypto

  SOURCE[gmdifftest]=gmdifftest.c
  INCLUDE[gmdifftest]=../include
  DEPEND[gmdifftest]=../libcrypto

  SOURCE[pbelutest]=pbelutest.c
  INCLUDE[pbelutest]=../include
  DEPEND[pbelutest]=../libcrypto

  SOURCE[ideatest]=ideatest.c
  INCLUDE[ideatest]=../include
  DEPEND[ideatest]=../libcrypto

  SOURCE[md2test]=md2test.c
  INCLUDE[md2test]=../include
  DEPEND[md2test]=../libcrypto

  SOURCE[hmactest]=hmactest.c
  INCLUDE[hmactest]=../include
  DEPEND[hmactest]=../libcrypto

  SOURCE[rc2test]=rc2test.c
  INCLUDE[rc2test]=../include
  DEPEND[rc2test]=../libcrypto

  SOURCE[rc4test]=rc4test.c
  INCLUDE[rc4test]=../include
  DEPEND[rc4test]=../libcrypto

  SOURCE[rc5test]=rc5test.c
  INCLUDE[rc5test]=../include
  DEPEND[rc5test]=../libcrypto

  SOURCE[destest]=destest.c
  INCLUDE[destest]=../include
  DEPEND[destest]=../libcrypto

  SOURCE[sha1test]=sha1test.c
  INCLUDE[sha1test]=../include
  DEPEND[sha1test]=../libcrypto

  SOURCE[sha256t]=sha256t.c
  INCLUDE[sha256t]=../include
  DEPEND[sha256t]=../libcrypto

  SOURCE[sha512t]=sha512t.c
  INCLUDE[sha512t]=../include
  DEPEND[sha512t]=../libcrypto

  SOURCE[mdc2test]=mdc2test.c
  INCLUDE[mdc2test]=../include
  DEPEND[mdc2test]=../libcrypto

  SOURCE[randtest]=randtest.c
  INCLUDE[randtest]=../include
  DEPEND[randtest]=../libcrypto

  SOURCE[dhtest]=dhtest.c
  INCLUDE[dhtest]=../include
  DEPEND[dhtest]=../libcrypto

  SOURCE[enginetest]=enginetest.c
  INCLUDE[enginetest]=../include
  DEPEND[enginetest]=../libcrypto

  SOURCE[casttest]=casttest.c
  INCLUDE[casttest]=../include
  DEPEND[casttest]=../libcrypto

  SOURCE[bftest]=bftest.c
  INCLUDE[bftest]=../include
  DEPEND[bftest]=../libcrypto

  SOURCE[ssltest_old]=ssltest_old.c
  INCLUDE[ssltest_old]=.. ../include
  DEPEND[ssltest_old]=../libcrypto ../libssl

  SOURCE[dsatest]=dsatest.c
  INCLUDE[dsatest]=../include
  DEPEND[dsatest]=../libcrypto

  SOURCE[exptest]=exptest.c
  INCLUDE[exptest]=../include
  DEPEND[exptest]=../libcrypto

  SOURCE[rsa_test]=rsa_test.c
  INCLUDE[rsa_test]=.. ../include
  DEPEND[rsa_test]=../libcrypto

  SOURCE[evp_test]=evp_test.c
  INCLUDE[evp_test]=../include
  DEPEND[evp_test]=../libcrypto

  SOURCE[evp_extra_test]=evp_extra_test.c
  INCLUDE[evp_extra_test]=../include
  DEPEND[evp_extra_test]=../libcrypto

  SOURCE[igetest]=igetest.c
  INCLUDE[igetest]=.. ../include
  DEPEND[igetest]=../libcrypto

  SOURCE[v3nametest]=v3nametest.c
  INCLUDE[v3nametest]=../include
  DEPEND[v3nametest]=../libcrypto

  SOURCE[crltest]=crltest.c testutil.c test_main.c
  INCLUDE[crltest]=../include
  DEPEND[crltest]=../libcrypto

  SOURCE[v3ext]=v3ext.c
  INCLUDE[v3ext]=../include
  DEPEND[v3ext]=../libcrypto

  SOURCE[danetest]=danetest.c
  INCLUDE[danetest]=../include
  DEPEND[danetest]=../libcrypto ../libssl

  SOURCE[constant_time_test]=constant_time_test.c
  INCLUDE[constant_time_test]=.. ../include
  DEPEND[constant_time_test]=../libcrypto

  SOURCE[verify_extra_test]=verify_extra_test.c
  INCLUDE[verify_extra_test]=../include
  DEPEND[verify_extra_test]=../libcrypto

  SOURCE[clienthellotest]=clienthellotest.c testutil.c test_main_custom.c
  INCLUDE[clienthellotest]=../include
  DEPEND[clienthellotest]=../libcrypto ../libssl

  SOURCE[bad_dtls_test]=bad_dtls_test.c
  INCLUDE[bad_dtls_test]=../include
  DEPEND[bad_dtls_test]=../libcrypto ../libssl

  SOURCE[packettest]=packettest.c
  INCLUDE[packettest]=../include
  DEPEND[packettest]=../libcrypto

  SOURCE[asynctest]=asynctest.c
  INCLUDE[asynctest]=.. ../include
  DEPEND[asynctest]=../libcrypto

  SOURCE[secmemtest]=secmemtest.c
  INCLUDE[secmemtest]=../include
  DEPEND[secmemtest]=../libcrypto

  SOURCE[srptest]=srptest.c
  INCLUDE[srptest]=../include
  DEPEND[srptest]=../libcrypto

  SOURCE[memleaktest]=memleaktest.c
  INCLUDE[memleaktest]=../include
  DEPEND[memleaktest]=../libcrypto

  SOURCE[stack_test]=stack_test.c testutil.c test_main.c
  INCLUDE[stack_test]=.. ../include
  DEPEND[stack_test]=../libcrypto

  SOURCE[dtlsv1listentest]=dtlsv1listentest.c
  INCLUDE[dtlsv1listentest]=.. ../include
  DEPEND[dtlsv1listentest]=../libssl

  SOURCE[ct_test]=ct_test.c testutil.c test_main_custom.c
  INCLUDE[ct_test]=../crypto/include ../include
  DEPEND[ct_test]=../libcrypto

  SOURCE[threadstest]=threadstest.c
  INCLUDE[threadstest]=.. ../include
  DEPEND[threadstest]=../libcrypto

  SOURCE[afalgtest]=afalgtest.c
  INCLUDE[afalgtest]=.. ../include
  DEPEND[afalgtest]=../libcrypto

  SOURCE[d2i_test]=d2i_test.c testutil.c test_main_custom.c
  INCLUDE[d2i_test]=.. ../include
  DEPEND[d2i_test]=../libcrypto

  SOURCE[ssl_test_ctx_test]=ssl_test_ctx_test.c ssl_test_ctx.c testutil.c test_main_custom.c
  INCLUDE[ssl_test_ctx_test]=.. ../include
  DEPEND[ssl_test_ctx_test]=../libcrypto ../libssl

  SOURCE[ssl_test]=ssl_test.c ssl_test_ctx.c testutil.c handshake_helper.c test_main_custom.c
  INCLUDE[ssl_test]=.. ../include
  DEPEND[ssl_test]=../libcrypto ../libssl

  SOURCE[cipherlist_test]=cipherlist_test.c testutil.c test_main.c
  INCLUDE[cipherlist_test]=.. ../include
  DEPEND[cipherlist_test]=../libcrypto ../libssl

  INCLUDE[testutil.o]=..
  INCLUDE[ssl_test_ctx.o]=../include
  INCLUDE[handshake_helper.o]=../include
  INCLUDE[ssltestlib.o]=../include

  SOURCE[x509aux]=x509aux.c
  INCLUDE[x509aux]=../include
  DEPEND[x509aux]=../libcrypto

  SOURCE[asynciotest]=asynciotest.c ssltestlib.c
  INCLUDE[asynciotest]=../include
  DEPEND[asynciotest]=../libcrypto ../libssl

  SOURCE[bioprinttest]=bioprinttest.c
  INCLUDE[bioprinttest]=../include
  DEPEND[bioprinttest]=../libcrypto

  SOURCE[sslapitest]=sslapitest.c ssltestlib.c testutil.c test_main_custom.c
  INCLUDE[sslapitest]=../include ..
  DEPEND[sslapitest]=../libcrypto ../libssl

  SOURCE[dtlstest]=dtlstest.c ssltestlib.c testutil.c test_main_custom.c
  INCLUDE[dtlstest]=../include .
  DEPEND[dtlstest]=../libcrypto ../libssl

  SOURCE[sslcorrupttest]=sslcorrupttest.c ssltestlib.c testutil.c
  INCLUDE[sslcorrupttest]=../include .
  DEPEND[sslcorrupttest]=../libcrypto ../libssl

  SOURCE[bio_enc_test]=bio_enc_test.c
  INCLUDE[bio_enc_test]=../include
  DEPEND[bio_enc_test]=../libcrypto

  SOURCE[pkey_meth_test]=pkey_meth_test.c testutil.c test_main.c
  INCLUDE[pkey_meth_test]=../include
  DEPEND[pkey_meth_test]=../libcrypto

  SOURCE[x509_time_test]=x509_time_test.c testutil.c test_main.c
  INCLUDE[x509_time_test]=.. ../include
  DEPEND[x509_time_test]=../libcrypto

  SOURCE[recordlentest]=recordlentest.c ssltestlib.c testutil.c test_main_custom.c
  INCLUDE[recordlentest]=../include .
  DEPEND[recordlentest]=../libcrypto ../libssl

  IF[{- !$disabled{psk} -}]
    PROGRAMS_NO_INST=dtls_mtu_test
    SOURCE[dtls_mtu_test]=dtls_mtu_test.c ssltestlib.c
    INCLUDE[dtls_mtu_test]=.. ../include
    DEPEND[dtls_mtu_test]=../libcrypto ../libssl
  ENDIF

  IF[{- !$disabled{shared} -}]
    PROGRAMS_NO_INST=shlibloadtest
    SOURCE[shlibloadtest]=shlibloadtest.c
    INCLUDE[shlibloadtest]=../include
  ENDIF

  IF[{- $disabled{shared} -}]
    PROGRAMS_NO_INST=cipher_overhead_test
    SOURCE[cipher_overhead_test]=cipher_overhead_test.c
    INCLUDE[cipher_overhead_test]=.. ../include
    DEPEND[cipher_overhead_test]=../libcrypto ../libssl
  ENDIF

  SOURCE[uitest]=uitest.c testutil.c test_main_custom.c \
    ../apps/apps.c ../apps/opt.c {- $apps_extra -}
  INCLUDE[uitest]=.. ../include
  DEPEND[uitest]=../libcrypto ../libssl

  SOURCE[cipherbytes_test]=cipherbytes_test.c
  INCLUDE[cipherbytes_test]=.. ../include
  DEPEND[cipherbytes_test]=../libcrypto ../libssl

  # Internal test programs.  These are essentially a collection of internal
  # 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 \
                     tls13encryptiontest wpackettest
    IF[{- !$disabled{poly1305} -}]
      PROGRAMS_NO_INST=poly1305_internal_test
    ENDIF
    IF[{- !$disabled{chacha} -}]
      PROGRAMS_NO_INST=chacha_internal_test
    ENDIF
    IF[{- !$disabled{siphash} -}]
      PROGRAMS_NO_INST=siphash_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[chacha_internal_test]=chacha_internal_test.c
    INCLUDE[chacha_internal_test]=.. ../include ../crypto/include
    DEPEND[chacha_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

    SOURCE[tls13encryptiontest]=tls13encryptiontest.c testutil.c test_main.c
    INCLUDE[tls13encryptiontest]=.. ../include
    DEPEND[tls13encryptiontest]=../libcrypto ../libssl.a

    SOURCE[wpackettest]=wpackettest.c testutil.c test_main_custom.c
    INCLUDE[wpackettest]=../include
    DEPEND[wpackettest]=../libcrypto ../libssl.a

    SOURCE[siphash_internal_test]=siphash_internal_test.c testutil.c test_main_custom.c
    INCLUDE[siphash_internal_test]=.. ../include ../crypto/include
    DEPEND[siphash_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
  DEPEND[mdc2_internal_test]=../libcrypto

  # We disable this test completely in a shared build because it deliberately
  # redefines some internal libssl symbols. This doesn't work in a non-shared
  # build
  IF[{- !$disabled{shared} -}]
    PROGRAMS_NO_INST=tls13secretstest
    SOURCE[tls13secretstest]=tls13secretstest.c testutil.c test_main.c
    SOURCE[tls13secretstest]= ../ssl/tls13_enc.c ../ssl/packet.c
    INCLUDE[tls13secretstest]=.. ../include
    DEPEND[tls13secretstest]=../libcrypto ../libssl
  ENDIF
ENDIF

{-
   use File::Spec::Functions;
   use File::Basename;
   use if $^O ne "VMS", 'File::Glob' => qw/glob/;

   my @nogo_headers = ( "asn1_mac.h",
                        "__decc_include_prologue.h",
                        "__decc_include_epilogue.h" );
   my @headerfiles = glob catfile($sourcedir,
                                  updir(), "include", "openssl", "*.h");

   foreach my $headerfile (@headerfiles) {
       my $name = basename($headerfile, ".h");
       next if $disabled{$name};
       next if grep { $_ eq lc("$name.h") } @nogo_headers;
       $OUT .= <<"_____";

  PROGRAMS_NO_INST=buildtest_$name
  GENERATE[buildtest_$name.c]=generate_buildtest.pl $name
  SOURCE[buildtest_$name]=buildtest_$name.c
  INCLUDE[buildtest_$name]=../include
  DEPEND[buildtest_$name]=../libssl ../libcrypto
_____
   }
-}
