# SKIP Source Code License Statement:
# ------------------------------------------------------------------
#   Copyright
#   Sun Microsystems, Inc.
# 
# 
#   Copyright (C) 1994, 1995, 1996 Sun Microsystems, Inc.  All Rights
#   Reserved.
# 
#   Permission is hereby granted, free of charge, to any person
#   obtaining a copy of this software and associated documentation
#   files (the "Software"), to deal in the Software without
#   restriction, including without limitation the rights to use,
#   copy, modify, merge, publish, distribute, sublicense, and/or sell
#   copies of the Software or derivatives of the Software, and to 
#   permit persons to whom the Software or its derivatives is furnished 
#   to do so, subject to the following conditions:
# 
#   The above copyright notice and this permission notice shall be
#   included in all copies or substantial portions of the Software.
# 
#   The Software must not be transferred to persons who are not US
#   citizens or permanent residents of the US or exported outside
#   the US (except Canada) in any form (including by electronic
#   transmission) without prior written approval from the US
#   Government. Non-compliance with these restrictions constitutes
#   a violation of the U.S. Export Control Laws.
# 
#   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
#   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
#   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
#   NONINFRINGEMENT.  IN NO EVENT SHALL SUN MICROSYSTEMS, INC., BE LIABLE
#   FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
#   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
#   CONNECTION WITH THE SOFTWARE OR DERIVATES OF THIS SOFTWARE OR 
#   THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# 
#   Except as contained in this notice, the name of Sun Microsystems, Inc.
#   shall not be used in advertising or otherwise to promote
#   the sale, use or other dealings in this Software or its derivatives 
#   without prior written authorization from Sun Microsystems, Inc.

#pragma ident "@(#)Makefile	1.77 96/09/05"

include ../../Makefile.defs

CERTSRCDIR	= ../../certs/lib
TOOLSLIBDIR	= ../tools/lib
BIGINTDIR	= ../../bnlib
LIBDBINC	= ../../$(LIBDB)/include
LIBDBSYS	= ../../$(LIBDB)

TOOLSLIB	= $(TOOLSLIBDIR)/$(U_DIR)/skip_lib.a
CERTLIB		= $(CERTSRCDIR)/$(U_DIR)/libcert.a
TMEMLIB		= $(CERTSRCDIR)/$(U_DIR)/libtmem.a
BNLIB		= $(BIGINTDIR)/$(U_DIR)/libbn.a
DBLIB		= ../../$(LIBDB)/$(U_DIR)/libdb.a

COMMON_OBJS	=	$(U_DIR)/skip_crypt.o \
			$(U_DIR)/skip_init.o \
			$(U_DIR)/skip_log.o \
			$(U_DIR)/cdp_queue.o \
			$(U_DIR)/skip_msgs.o  \
			$(U_DIR)/skip_certbase.o \
			$(U_DIR)/skip_machdep.o \
			$(U_DIR)/skip_bn_glue.o \
			$(U_DIR)/skip_keymgrsubr.o \
			$(U_DIR)/cdp.o $(U_DIR)/skip_cache.o \
			$(U_DIR)/skip_softsecret.o \
			$(U_DIR)/skip_params.o $(U_DIR)/skip_localid.o \
			$(U_DIR)/skip_localidlist.o \
			$(U_DIR)/skip_softlocalid.o \
			$(U_DIR)/SlotParse.o \
			$(U_DIR)/skip_md5.o 

CRYPTO_OBJS_ST =	\
			$(U_DIR)/des_ede_cbc.o $(U_DIR)/des_ede_ecb.o \
			$(U_DIR)/skip_safercbc.o \
			$(U_DIR)/safer.o $(U_DIR)/simplecrypt.o 


CRYPTO_OBJS		= $(CRYPTO_OBJS_$(CRYPTO_MODE))
CRYPTO_SUP		= $(CRYPTO_SUP_$(CRYPTO_MODE))


LIBS		= 	$(CERTLIB) $(CRYPTOLIB) $(TMEMLIB) $(BNLIB) $(DBLIB)

BDC_LIBS	=	-L$(CRYPTOLIB)

INCS		= 	 -I$(BIGINTDIR) -I$(COMM_INC)  -I$(DRVDIR) \
			-I$(TOOLSLIBDIR) -I$(LIBDBINC) -I$(LIBDBSYS) \
			-I$(CERTSRCDIR) -I. $(CRYPTOINC)

HDRS		=	skip_certbase.h ../include/skip_conf.h skip_keymgr.h  \
			../include/skip_crypt.h \
			skip_enc_alg.h skip_log.h  skip_cache.h \
			skip_params.h skip_localid.h skip_localidlist.h \
			skip_secret.h skip_softsecret.h skipd.h \
			SlotParse.h cdp.h $(CERTSRCDIR)/LL.h \
			cdp_queue.h skip_machdep.h \
			$(TOOLSLIBDIR)/skip_lib.h $(TOOLSLIBDIR)/skip_msgs.h \
			$(SYSINC)


DEFS	= $(U_DEBUG) $(OS) -D$(CRYPTO)
SCC	= $(CC) $(OS) $(INCS) $(DEFS) -D$(ARCH)
CFLAGS	= $(OS) $(INCS) $(DEFS) $(D_TEMPLATES)  $(OPTIM)
RM	= /bin/rm -rf


PROGRAMS =	$(U_DIR)/skipd $(U_DIR)/test_key \
		$(U_DIR)/skipdb $(U_DIR)/skipca $(U_DIR)/skiplocal \
		$(U_DIR)/certreq 

all:	$(U_DIR) $(PROGRAMS) $(CRYPTO_SUPPORT)

$(U_DIR):
	@[ -d $(U_DIR) ] || mkdir -p $(U_DIR)

clean:
	@-$(RM) $(PROGRAMS)
	@-$(RM) $(U_DIR)
	@-$(SCCSCLEAN)

cleanall:
	@-$(RM) $(PROGRAMS)
	@-$(RM) *bin*
	@-$(SCCSCLEAN)

#
# Programs targets
#
$(U_DIR)/skipd:	$(U_DIR)/skipd.o $(COMMON_OBJS) \
			$(CRYPTO_OBJS) $(CERTLIB)  $(CRYPTO_SUP)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skipd.o \
		$(COMMON_OBJS) $(TOOLSLIB) \
		$(CRYPTO_OBJS) $(CRYPTO_SUP) \
		$(LIBS) $(CERTSLIB) $(OS_STATIC) $(OS_DYNAMIC)

$(U_DIR)/skipca: $(U_DIR)/skipca.o $(COMMON_OBJS) $(CERTBLIB) $(CRYPTO_OBJS)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skipca.o $(U_DIR)/skip_certbase.o \
		$(U_DIR)/skip_log.o $(LIBS) $(OS_STATIC)

$(U_DIR)/skiplocal: $(U_DIR)/skiplocal.o \
			$(COMMON_OBJS) $(CERTLIB) $(CRYPTO_OBJS) $(CRYPTO_SUP)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skiplocal.o \
		$(U_DIR)/skip_certbase.o \
		$(U_DIR)/skip_log.o \
		$(U_DIR)/SlotParse.o \
		$(U_DIR)/skip_bn_glue.o \
		$(LIBS) $(OS_STATIC) $(CRYPTO_SUP) $(OS_DYNAMIC)

$(U_DIR)/skipdb: $(U_DIR)/skipdb.o $ $(COMMON_OBJS) $(CERTBLIB) $(CRYPTO_OBJS)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skipdb.o $(U_DIR)/skip_certbase.o \
		$(U_DIR)/skip_log.o $(LIBS) $(OS_STATIC)


$(U_DIR)/certreq:	$(U_DIR)/certreq.o $(U_DIR)/skip_certbase.o \
			$(U_DIR)/cdp.o $(U_DIR)/skip_log.o $(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/certreq.o $(U_DIR)/skip_certbase.o \
			$(U_DIR)/cdp.o $(U_DIR)/skip_log.o \
				$(LIBS) $(OS_STATIC) $(OS_DYNAMIC)

#
# Object modules compilation
#


$(U_DIR)/cdp_queue.o: cdp_queue.C cdp_queue.h $(HDRS)
	$(C++) $(CFLAGS) -c cdp_queue.C -o $@

$(U_DIR)/skip_keymgrsubr.o: skip_keymgrsubr.C skip_enc_alg.h $(HDRS)
	$(C++) $(CFLAGS) -c skip_keymgrsubr.C -o $@

$(U_DIR)/skip_params.o: skip_params.C skip_params.h $(HDRS)
	$(C++) $(CFLAGS) -c skip_params.C -o $@

$(U_DIR)/skip_localid.o: skip_localid.C skip_localid.h $(HDRS)
	$(C++) $(CFLAGS) -c skip_localid.C -o $@

$(U_DIR)/skip_softlocalid.o: skip_softlocalid.C skip_localid.h $(HDRS) \
					skip_softlocalid.h
	$(C++) $(CFLAGS) -c skip_softlocalid.C -o $@

$(U_DIR)/skip_localidlist.o: skip_localidlist.C skip_localidlist.h $(HDRS) \
					skip_softlocalid.h
	$(C++) $(CFLAGS) -c skip_localidlist.C -o $@

$(U_DIR)/skip_keymgrsubr1.o: skip_keymgrsubr1.C skip_enc_alg.h $(HDRS)
	$(C++) $(CFLAGS) -c skip_keymgrsubr1.C -o $@


$(U_DIR)/skipd.o: skipd.C skipd.h $(HDRS)
	$(C++) $(CFLAGS) -c skipd.C -o $@

$(U_DIR)/skip_init.o: skip_init.C $(HDRS)
	$(C++) $(CFLAGS) -c skip_init.C -o $@

$(U_DIR)/skip_cache.o: skip_cache.C  $(HDRS)
	$(C++) $(CFLAGS) -c skip_cache.C -o $@

$(U_DIR)/SlotParse.o: SlotParse.C 
	$(C++) $(CFLAGS) -c SlotParse.C -o $@

$(U_DIR)/cdp.o: cdp.C cdp.h
	$(C++) $(CFLAGS) -c cdp.C -o $@

$(U_DIR)/skip_cert_ops.o: skip_cert_ops.C
	$(C++) $(CFLAGS) -c skip_cert_ops.C -o $@

$(U_DIR)/skip_log.o: $(HDRS) skip_log.C
	$(C++) $(CFLAGS) -c skip_log.C -o $@

$(U_DIR)/skip_msgs.o: $(HDRS) skip_msgs.C ../include/skip_keymgrmsgs.h
	$(C++) $(CFLAGS) -c skip_msgs.C -o $@

$(U_DIR)/skip_machdep.o: $(HDRS) skip_machdep.C
	$(C++) $(CFLAGS) -c skip_machdep.C -o $@

$(U_DIR)/skip_bn_glue.o: $(HDRS) skip_bn_glue.C
	$(C++) $(CFLAGS) $(CRYPTOINC) -c skip_bn_glue.C -o $@

$(U_DIR)/skip_softsecret.o: $(HDRS) skip_softsecret.C
	$(C++) $(CFLAGS) $(CRYPTOINC) -c skip_softsecret.C -o $@

$(U_DIR)/skip_keymgr_init.o: $(HDRS) skip_keymgr_init.C
	$(C++) $(CFLAGS) -c skip_keymgr_init.C -o $@

$(U_DIR)/skip_certbase.o: $(HDRS) skip_certbase.C
	$(C++) $(CFLAGS) -c skip_certbase.C  -o $@

$(U_DIR)/skip_certd.o: $(HDRS) skip_certd.C
	$(C++) $(CFLAGS) $(CRYPTOINC) -c skip_certd.C  -o $@

$(U_DIR)/certreq.o: $(HDRS) certreq.C
	$(C++) $(CFLAGS) $(CRYPTOINC) -c certreq.C  -o $@

$(U_DIR)/skip_md5.o: ../common/skip_md5.c 
	$(SCC) -c -o $(@) ../common/skip_md5.c 

$(U_DIR)/skipdb.o:	skipdb.C
	$(C++) $(CFLAGS) -c -o $@ skipdb.C 

$(U_DIR)/skipca.o:	skipca.C
	$(C++) $(CFLAGS) -c -o $@ skipca.C 

$(U_DIR)/skiplocal.o:	skiplocal.C
	$(C++) $(CFLAGS) -I../../certs/hashcert -c -o $@ skiplocal.C 

$(U_DIR)/skip_export.o:	skip_export.C
	$(C++) -DEXPORT_1024 $(CFLAGS) -c -o $@ skip_export.C 

$(U_DIR)/skip_crypt.o: skip_crypt.C  $(HDRS)
	$(C++) $(CFLAGS) -c skip_crypt.C -o $@

#
#

$(U_DIR)/des_ede_cbc.o: ../bdcmod/des_ede_cbc/des_ede_cbc.c
	$(SCC) $(OPTIM) -o $@  -I../bdcmod/des_ecb \
			-c ../bdcmod/des_ede_cbc/des_ede_cbc.c

$(U_DIR)/des_ede_ecb.o: ../bdcmod/des_ede_cbc/des_ede_ecb.c
	$(SCC) $(OPTIM) -o $@ -I../bdcmod/des_ecb  \
			-c ../bdcmod/des_ede_cbc/des_ede_ecb.c
	
$(U_DIR)/des.o: ../bdcmod/des_ecb/des.c
	$(SCC) -I../bdcmod/des_ecb -I$(COMM_INC) -c \
				../bdcmod/des_ecb/des.c $(OPTIM) -o $@

$(U_DIR)/dessp.o: ../bdcmod/des_ecb/dessp.c
	$(SCC) $(OPTIM) -I../bdcmod/des_ecb -I$(COMM_INC) -c \
				../bdcmod/des_ecb/dessp.c -o $@

$(U_DIR)/simplecrypt.o: ../bdcmod/simplecrypt/simplecrypt.c \
			../include/skip_crypt.h
	$(SCC) -I../include -I../bdcmod/simplecrypt \
		-c ../bdcmod/simplecrypt/simplecrypt.c -o $@

$(U_DIR)/descbc.o:	../bdcmod/fast_des_cbc/descbc.c \
			../include/skip_crypt.h
	$(SCC) $(OPTIM) -I../include -I../bdcmod/fast_des_cbc \
		-c ../bdcmod/fast_des_cbc/descbc.c -o $@

$(U_DIR)/safer.o: ../bdcmod/safer/safer.c
	$(SCC) -I../bdcmod/safercbc -I$(COMM_INC) -c \
	../bdcmod/safer/safer.c $(OPTIM) -o $@

$(U_DIR)/skip_safercbc.o: ../bdcmod/safer/skip_safercbc.c
	$(SCC) -I../bdcmod/safercbc -I$(COMM_INC) -c \
	../bdcmod/safer/skip_safercbc.c $(OPTIM) -o $@

$(U_DIR)/idea.o: ../bdcmod/idea/idea.c ../bdcmod/idea/idea.h
	$(SCC) -I../bdcmod/idea -I$(COMM_INC) -c \
	../bdcmod/idea/idea.c $(OPTIM) -o $@

$(U_DIR)/skip_ideacbc.o: ../bdcmod/idea/skip_ideacbc.c ../bdcmod/idea/idea.h
	$(SCC) -I../bdcmod/ideacbc -I$(COMM_INC) -c \
	../bdcmod/idea/skip_ideacbc.c $(OPTIM) -o $@

$(U_DIR)/skip_bdc_rc2_cbc.o:	../bdcmod/rc2_cbc/skip_bdc_rc2_cbc.c \
			../include/skip_crypt.h
	$(SCC) -I../include -I../bdcmod/rc2_cbc ${CRYPTOINC} \
		-c ../bdcmod/rc2_cbc/skip_bdc_rc2_cbc.c -o $@

$(U_DIR)/skip_bdc_rc4.o:	../bdcmod/rc4/skip_bdc_rc4.c \
			../include/skip_crypt.h
	$(SCC) -I../include -I../bdcmod/rc4 \
		-c ../bdcmod/rc4/skip_bdc_rc4.c -o $@
#
# Testing purpose..
#

$(U_DIR)/test_bdc.o: test_bdc.c
	$(SCC) -c test_bdc.c -o $@

$(U_DIR)/test_key: test_key.c ../include/skip_keymgrmsgs.h
	$(SCC) -o $(@) test_key.c  $(OS_LIB) $(TOOLSLIB)

$(U_DIR)/test.o: test.C ../include/skip_keymgrmsgs.h skip_keymgr.h
	$(C++) $(CFLAGS) $(CRYPTOINC) -c test.C -o $@

$(U_DIR)/test: $(U_DIR)/test.o $(U_DIR)/dlglue.o $(CERTLIB) $(CRYPTO_OBJS)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/test.o $(U_DIR)/dlglue.o \
		$(U_DIR)/skip_log.o $(LIBS) $(CRYPTO_OBJS) \
				$(OS_STATIC) $(OS_DYNAMIC)
