# -*- makefile -*-
# 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

DEFINES += -DDLL_SUFFIX=\"$(DLL_SUFFIX)\" -DDLL_PREFIX=\"$(DLL_PREFIX)\"

include $(CORE_DEPTH)/coreconf/arch.mk
ifneq ($(OS_ARCH),WINNT)
DB_TESTS = \
	softoken_nssckbi_testlib_gtest.cc
endif

CPPSRCS = \
	softoken_gtest.cc \
	$(DB_TESTS) \
	$(NULL)

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

REQUIRES = nspr gtest cpputil

PROGRAM = softoken_gtest

EXTRA_LIBS = \
	$(DIST)/lib/$(LIB_PREFIX)gtest.$(LIB_SUFFIX) \
	$(DIST)/lib/$(LIB_PREFIX)cpputil.$(LIB_SUFFIX) \
	$(DIST)/lib/$(LIB_PREFIX)gtestutil.$(LIB_SUFFIX) \
	$(NULL)

USE_STATIC_LIBS = 1
