# 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 = ../..

# DEFINES = -DTRACE

EXPORTS = \
        ssl.h \
        sslt.h \
        sslerr.h \
        sslexp.h \
        sslproto.h \
        preenc.h \
        $(NULL)

MODULE = nss
MAPFILE = $(OBJDIR)/ssl.def

CSRCS = \
        dtlscon.c \
        dtls13con.c \
        prelib.c \
        ssl3con.c \
        ssl3gthr.c \
        sslauth.c \
        sslbloom.c \
        sslcon.c \
        ssldef.c \
        sslencode.c \
        sslenum.c \
        sslerr.c \
        sslerrstrs.c \
        sslinit.c \
        ssl3ext.c \
        ssl3exthandle.c \
        sslmutex.c \
        sslnonce.c \
        sslreveal.c \
        sslsecur.c \
        sslsnce.c \
        sslsock.c \
        sslspec.c \
        ssltrace.c \
        sslver.c \
        authcert.c \
        cmpcert.c \
        selfencrypt.c \
        sslinfo.c \
        ssl3ecc.c \
        tls13con.c \
        tls13exthandle.c \
        tls13hashstate.c \
        tls13hkdf.c \
        tls13replay.c \
        sslcert.c \
        sslgrp.c \
        tls13esni.c \
        $(NULL)

LIBRARY_NAME = ssl
LIBRARY_VERSION = 3

# This part of the code, including all sub-dirs, can be optimized for size
export ALLOW_OPT_CODE_SIZE = 1
