{- use File::Spec::Functions;
   our $ex_inc = $withargs{fuzzer_include} &&
       (file_name_is_absolute($withargs{fuzzer_include}) ?
        $withargs{fuzzer_include} : catdir(updir(), $withargs{fuzzer_include}));
   our $ex_lib = $withargs{fuzzer_lib} &&
       (file_name_is_absolute($withargs{fuzzer_lib}) ?
        $withargs{fuzzer_lib} : catfile(updir(), $withargs{fuzzer_lib}));
   ""
-}

IF[{- !$disabled{"fuzz-afl"} || !$disabled{"fuzz-libfuzzer"} -}]
  PROGRAMS_NO_INST=asn1 asn1parse bignum bndiv client conf crl server x509

  IF[{- !$disabled{"cms"} -}]
    PROGRAMS_NO_INST=cms
  ENDIF

  IF[{- !$disabled{"ct"} -}]
    PROGRAMS_NO_INST=ct
  ENDIF

  SOURCE[asn1]=asn1.c driver.c
  INCLUDE[asn1]=../include {- $ex_inc -}
  DEPEND[asn1]=../libcrypto ../libssl {- $ex_lib -}

  SOURCE[asn1parse]=asn1parse.c driver.c
  INCLUDE[asn1parse]=../include {- $ex_inc -}
  DEPEND[asn1parse]=../libcrypto {- $ex_lib -}

  SOURCE[bignum]=bignum.c driver.c
  INCLUDE[bignum]=../include {- $ex_inc -}
  DEPEND[bignum]=../libcrypto {- $ex_lib -}

  SOURCE[bndiv]=bndiv.c driver.c
  INCLUDE[bndiv]=../include {- $ex_inc -}
  DEPEND[bndiv]=../libcrypto {- $ex_lib -}

  SOURCE[client]=client.c driver.c
  INCLUDE[client]=../include {- $ex_inc -}
  DEPEND[client]=../libcrypto ../libssl {- $ex_lib -}

  SOURCE[cms]=cms.c driver.c
  INCLUDE[cms]=../include {- $ex_inc -}
  DEPEND[cms]=../libcrypto {- $ex_lib -}

  SOURCE[conf]=conf.c driver.c
  INCLUDE[conf]=../include {- $ex_inc -}
  DEPEND[conf]=../libcrypto {- $ex_lib -}

  SOURCE[crl]=crl.c driver.c
  INCLUDE[crl]=../include {- $ex_inc -}
  DEPEND[crl]=../libcrypto {- $ex_lib -}

  SOURCE[ct]=ct.c driver.c
  INCLUDE[ct]=../include {- $ex_inc -}
  DEPEND[ct]=../libcrypto {- $ex_lib -}

  SOURCE[server]=server.c driver.c
  INCLUDE[server]=../include {- $ex_inc -}
  DEPEND[server]=../libcrypto ../libssl {- $ex_lib -}

  SOURCE[x509]=x509.c driver.c
  INCLUDE[x509]=../include {- $ex_inc -}
  DEPEND[x509]=../libcrypto {- $ex_lib -}
ENDIF

IF[{- !$disabled{tests} -}]
  PROGRAMS_NO_INST=asn1-test asn1parse-test bignum-test bndiv-test client-test conf-test crl-test server-test x509-test

  IF[{- !$disabled{"cms"} -}]
    PROGRAMS_NO_INST=cms-test
  ENDIF

  IF[{- !$disabled{"ct"} -}]
    PROGRAMS_NO_INST=ct-test
  ENDIF

  SOURCE[asn1-test]=asn1.c test-corpus.c
  INCLUDE[asn1-test]=../include
  DEPEND[asn1-test]=../libcrypto ../libssl

  SOURCE[asn1parse-test]=asn1parse.c test-corpus.c
  INCLUDE[asn1parse-test]=../include
  DEPEND[asn1parse-test]=../libcrypto

  SOURCE[bignum-test]=bignum.c test-corpus.c
  INCLUDE[bignum-test]=../include
  DEPEND[bignum-test]=../libcrypto

  SOURCE[bndiv-test]=bndiv.c test-corpus.c
  INCLUDE[bndiv-test]=../include
  DEPEND[bndiv-test]=../libcrypto

  SOURCE[client-test]=client.c test-corpus.c
  INCLUDE[client-test]=../include
  DEPEND[client-test]=../libcrypto ../libssl

  SOURCE[cms-test]=cms.c test-corpus.c
  INCLUDE[cms-test]=../include
  DEPEND[cms-test]=../libcrypto

  SOURCE[conf-test]=conf.c test-corpus.c
  INCLUDE[conf-test]=../include
  DEPEND[conf-test]=../libcrypto

  SOURCE[crl-test]=crl.c test-corpus.c
  INCLUDE[crl-test]=../include
  DEPEND[crl-test]=../libcrypto

  SOURCE[ct-test]=ct.c test-corpus.c
  INCLUDE[ct-test]=../include
  DEPEND[ct-test]=../libcrypto

  SOURCE[server-test]=server.c test-corpus.c
  INCLUDE[server-test]=../include
  DEPEND[server-test]=../libcrypto ../libssl

  SOURCE[x509-test]=x509.c test-corpus.c
  INCLUDE[x509-test]=../include
  DEPEND[x509-test]=../libcrypto
ENDIF
