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

EXPORTS = \
	$(NULL)

PRIVATE_EXPORTS = \
	pkix_pl_basicconstraints.h \
	pkix_pl_cert.h \
	pkix_pl_certpolicyinfo.h \
	pkix_pl_certpolicymap.h \
	pkix_pl_certpolicyqualifier.h \
	pkix_pl_crl.h \
        pkix_pl_crldp.h \
	pkix_pl_crlentry.h \
	pkix_pl_date.h \
	pkix_pl_generalname.h \
	pkix_pl_infoaccess.h \
	pkix_pl_nameconstraints.h \
	pkix_pl_ocsprequest.h \
	pkix_pl_ocspresponse.h \
	pkix_pl_publickey.h \
	pkix_pl_x500name.h \
	pkix_pl_ocspcertid.h \
	$(NULL)

MODULE = nss

CSRCS = \
	pkix_pl_basicconstraints.c \
	pkix_pl_cert.c \
	pkix_pl_certpolicyinfo.c \
	pkix_pl_certpolicymap.c \
	pkix_pl_certpolicyqualifier.c \
	pkix_pl_crl.c \
        pkix_pl_crldp.c \
	pkix_pl_crlentry.c \
	pkix_pl_date.c \
	pkix_pl_generalname.c \
	pkix_pl_infoaccess.c \
	pkix_pl_nameconstraints.c \
	pkix_pl_ocsprequest.c \
	pkix_pl_ocspresponse.c \
	pkix_pl_publickey.c \
	pkix_pl_x500name.c \
	pkix_pl_ocspcertid.c \
	$(NULL)

LIBRARY_NAME = pkixpki

