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

DIRS = builtins 

PRIVATE_EXPORTS = \
	ck.h		  \
	ckfw.h		  \
	ckfwm.h		  \
	ckfwtm.h	  \
	ckmd.h		  \
	ckt.h		  \
	$(NULL)

EXPORTS =	   \
	nssck.api  \
	nssckepv.h \
	nssckft.h  \
	nssckfw.h  \
	nssckfwc.h \
	nssckfwt.h \
	nssckg.h   \
	nssckmdt.h \
	nssckt.h   \
	$(NULL)

MODULE = nss

CSRCS =		   \
	crypto.c   \
	find.c	   \
	hash.c	   \
	instance.c \
	mutex.c	   \
	object.c   \
	session.c  \
	sessobj.c  \
	slot.c	   \
	token.c	   \
	wrap.c	   \
	mechanism.c \
	$(NULL)

REQUIRES = nspr

LIBRARY_NAME = nssckfw

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