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

# NOTE: any ifdefs in this file must be defined on the gmake command line
# (if anywhere).  They cannot come from Makefile or config.mk 

CORE_DEPTH = ../..

MODULE = nss

LIBRARY_NAME = freebl
LIBRARY_VERSION = 3

ifdef FREEBL_CHILD_BUILD
  ifdef USE_ABI32_INT32
    LIBRARY_NAME = freebl_32int
  endif
  ifdef USE_ABI32_INT64
    LIBRARY_NAME = freebl_32int64
  endif
  ifdef USE_ABI32_FPU
    LIBRARY_NAME = freebl_32fpu
  endif
  ifdef USE_ABI64_INT
    LIBRARY_NAME = freebl_64int
  endif
  ifdef USE_ABI64_FPU
    LIBRARY_NAME = freebl_64fpu
  endif
endif

# if the library name contains _, we prefix the version with _
ifneq (,$(findstring _,$(LIBRARY_NAME)))
  LIBRARY_VERSION := _$(LIBRARY_VERSION)
endif

MAPFILE = $(OBJDIR)/$(LIBRARY_NAME).def

SOFTOKEN_LIBRARY_VERSION = 3

DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" \
	-DSHLIB_VERSION=\"$(LIBRARY_VERSION)\" \
	-DSOFTOKEN_SHLIB_VERSION=\"$(SOFTOKEN_LIBRARY_VERSION)\"

REQUIRES = 

EXPORTS = \
	blapit.h \
	shsign.h \
	ecl-exp.h \
	$(LOWHASH_EXPORTS) \
	$(NULL)

PRIVATE_EXPORTS = \
	alghmac.h \
	blapi.h \
	hmacct.h \
	secmpi.h \
	secrng.h \
	ec.h \
	ecl.h \
	ecl-curve.h \
	$(NULL)

MPI_HDRS = mpi-config.h mpi.h mpi-priv.h mplogic.h mpprime.h logtab.h mp_gf2m.h
MPI_SRCS = mpprime.c mpmontg.c mplogic.c mpi.c mp_gf2m.c


ECL_HDRS = ecl-exp.h ecl.h ec2.h ecp.h ecl-priv.h
ifdef NSS_ENABLE_ECC
ECL_SRCS = ecl.c ecl_curve.c ecl_mult.c ecl_gf.c \
	ecp_aff.c ecp_jac.c ecp_mont.c \
	ec_naf.c ecp_jm.c ecp_256.c ecp_384.c ecp_521.c \
	ecp_256_32.c
ifdef NSS_ECC_MORE_THAN_SUITE_B
ECL_SRCS += ec2_aff.c ec2_mont.c ec2_proj.c \
	ec2_163.c ec2_193.c ec2_233.c \
	ecp_192.c ecp_224.c
endif
else
ECL_SRCS = $(NULL)
endif
SHA_SRCS = sha_fast.c
MPCPU_SRCS = mpcpucache.c

CSRCS = \
	freeblver.c \
	ldvector.c \
	sysrand.c \
	$(SHA_SRCS) \
	md2.c \
	md5.c \
	sha512.c \
	alghmac.c \
	rawhash.c \
	alg2268.c \
	arcfour.c \
	arcfive.c \
	desblapi.c \
	des.c \
	drbg.c \
	cts.c \
	ctr.c \
	gcm.c \
	hmacct.c \
	rijndael.c \
	aeskeywrap.c \
	camellia.c \
	dh.c \
	ec.c \
	pqg.c \
	dsa.c \
	rsa.c \
	shvfy.c \
	tlsprfalg.c \
	seed.c \
	jpake.c \
	$(MPI_SRCS) \
	$(MPCPU_SRCS) \
	$(ECL_SRCS) \
	$(STUBS_SRCS) \
	$(LOWHASH_SRCS) \
	$(EXTRA_SRCS) \
	$(NULL)

ALL_CSRCS := $(CSRCS)

ALL_HDRS =  \
	alghmac.h \
	blapi.h \
	blapit.h \
	des.h \
	ec.h \
	loader.h \
	rijndael.h \
	camellia.h \
	secmpi.h \
	sha_fast.h \
	sha256.h \
	shsign.h \
	vis_proto.h \
	seed.h \
	$(NULL)


ifdef AES_GEN_TBL
DEFINES += -DRIJNDAEL_GENERATE_TABLES
else 
ifdef AES_GEN_TBL_M
DEFINES += -DRIJNDAEL_GENERATE_TABLES_MACRO
else
ifdef AES_GEN_VAL
DEFINES += -DRIJNDAEL_GENERATE_VALUES
else
ifdef AES_GEN_VAL_M
DEFINES += -DRIJNDAEL_GENERATE_VALUES_MACRO
else
DEFINES += -DRIJNDAEL_INCLUDE_TABLES
endif
endif
endif
endif
