#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
CORE_DEPTH = ../..
DEPTH      = ../..
MODULE = nss

# These sources have access to libssl internals
CSRCS = \
      libssl_internals.c \
      $(NULL)

CPPSRCS = \
      bloomfilter_unittest.cc \
      ssl_0rtt_unittest.cc \
      ssl_aead_unittest.cc \
      ssl_agent_unittest.cc \
      ssl_auth_unittest.cc \
      ssl_cert_ext_unittest.cc \
      ssl_cipherorder_unittest.cc \
      ssl_ciphersuite_unittest.cc \
      ssl_custext_unittest.cc \
      ssl_damage_unittest.cc \
      ssl_debug_env_unittest.cc \
      ssl_dhe_unittest.cc \
      ssl_drop_unittest.cc \
      ssl_ecdh_unittest.cc \
      ssl_ems_unittest.cc \
      ssl_exporter_unittest.cc \
      ssl_extension_unittest.cc \
      ssl_fragment_unittest.cc \
      ssl_fuzz_unittest.cc \
      ssl_gather_unittest.cc \
      ssl_gtest.cc \
      ssl_hrr_unittest.cc \
      ssl_keyupdate_unittest.cc \
      ssl_loopback_unittest.cc \
      ssl_masking_unittest.cc \
      ssl_misc_unittest.cc \
      ssl_record_unittest.cc \
      ssl_recordsep_unittest.cc \
      ssl_recordsize_unittest.cc \
      ssl_resumption_unittest.cc \
      ssl_renegotiation_unittest.cc \
      ssl_skip_unittest.cc \
      ssl_staticrsa_unittest.cc \
      ssl_tls13compat_unittest.cc \
      ssl_v2_client_hello_unittest.cc \
      ssl_version_unittest.cc \
      ssl_versionpolicy_unittest.cc \
      selfencrypt_unittest.cc \
      test_io.cc \
      tls_agent.cc \
      tls_connect.cc \
      tls_hkdf_unittest.cc \
      tls_filter.cc \
      tls_protect.cc \
      tls_psk_unittest.cc \
      tls_subcerts_unittest.cc \
      tls_ech_unittest.cc \
      $(SSLKEYLOGFILE_FILES) \
      $(NULL)

INCLUDES += -I$(CORE_DEPTH)/gtests/google_test/gtest/include \
            -I$(CORE_DEPTH)/gtests/common \
            -I$(CORE_DEPTH)/cpputil

REQUIRES = nspr nss libdbm gtest cpputil

PROGRAM = ssl_gtest
EXTRA_LIBS += \
      $(DIST)/lib/$(LIB_PREFIX)gtest.$(LIB_SUFFIX) \
      $(DIST)/lib/$(LIB_PREFIX)cpputil.$(LIB_SUFFIX) \
      $(NULL)

USE_STATIC_LIBS = 1
