# SKIP Source Code License Statement:
# ------------------------------------------------------------------
#   Copyright
#   Sun Microsystems, Inc.
# 
# 
#   Copyright (C) 1994, 1995 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.21 96/01/31"

include ../../Makefile.defs

CERTSRCDIR	= ../../certs/lib
BIGINTDIR	= ../../bnlib

CERTLIB		= $(CERTSRCDIR)/$(U_DIR)/libcert.a
TMEMLIB		= $(CERTSRCDIR)/$(U_DIR)/libtmem.a
BNLIB		= $(BIGINTDIR)/$(U_DIR)/libbn.a

COMMON_OBJS	=	$(U_DIR)/skip_crypt.o \
			$(U_DIR)/skip_cdp.o $(U_DIR)/simplecrypt.o  \
			$(U_DIR)/dessp.o \
			$(U_DIR)/des.o $(U_DIR)/descbc.o \
			$(U_DIR)/skip_log.o \
			$(U_DIR)/skip_certbase.o \
			$(U_DIR)/skip_msgs.o $(U_DIR)/skip_machdep.o \
			$(U_DIR)/skip_bn_glue.o \
			$(U_DIR)/skip_fetchcert.o  $(U_DIR)/skip_keymgrsubr.o \
			$(U_DIR)/skip_keymgr_init.o \
			$(U_DIR)/certx.o \
			$(U_DIR)/skip_cache.o \
			$(U_DIR)/des_ede_cbc.o $(U_DIR)/des_ede_ecb.o 


CRYPTO_OBJS		= $(CRYPTO_OBJS_$(CRYPTO))


LIBS		= 	$(CERTLIB) $(CRYPTOLIB) $(TMEMLIB) \
			$(CLASSLIB) $(BNLIB) 

BDC_LIBS	=	-L$(CRYPTOLIB)

INCS		= 	-I$(BIGINTDIR) -I../include -I$(CERTSRCDIR) -I.

HDRS		=	skip_certbase.h ../include/skip_conf.h skip_keymgr.h  \
			skip_enc_alg.h skip_log.h  skip_cache.h \
			certx.h


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


PROGRAMS =	$(U_DIR)/skip_init_certbase $(U_DIR)/skip_add_cert \
		$(U_DIR)/skip_dump_certs $(U_DIR)/skip_del_cert \
		$(U_DIR)/skip_keymgrd $(U_DIR)/certreq \
		$(U_DIR)/skip_certd \
		$(U_DIR)/test_key #$(U_DIR)/test_dh 


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

all:	$(PROGRAMS)

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

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

#
# Programs targets
#
skip_keymgrd: $(U_DIR)/skip_keymgrd

$(U_DIR)/skip_keymgrd: \
	$(U_DIR)/skip_keymgrd.o $(COMMON_OBJS)  $(CERTLIB) $(CRYPTO_OBJS)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skip_keymgrd.o \
			$(COMMON_OBJS) $(LIBS) $(CRYPTO_OBJS) $(OS_STATIC)

$(U_DIR)/test_dh: $(U_DIR)/test_dh.o $(COMMON_OBJS)  $(CERTLIB) $(CRYPTO_OBJS)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/test_dh.o \
			$(COMMON_OBJS)  $(LIBS) $(CRYPTO_OBJS) $(OS_STATIC)

$(U_DIR)/skip_add_cert: $(U_DIR)/skip_add_cert.o  $(U_DIR)/skip_certbase.o \
			$(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skip_add_cert.o  \
			$(U_DIR)/skip_certbase.o $(LIBS) $(OS_STATIC)

$(U_DIR)/skip_dump_certs: $(U_DIR)/skip_dump_certs.o $(U_DIR)/skip_certbase.o \
			  $(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skip_dump_certs.o  \
			$(U_DIR)/skip_certbase.o $(OBJS) $(LIBS) $(OS_STATIC)

$(U_DIR)/skip_init_certbase: $(U_DIR)/skip_init_certbase.o  \
			$(U_DIR)/skip_certbase.o $(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skip_init_certbase.o \
						$(LIBS) $(OS_STATIC)

$(U_DIR)/skip_del_cert: $(U_DIR)/skip_del_cert.o $(U_DIR)/skip_certbase.o \
			$(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skip_del_cert.o \
			$(U_DIR)/skip_certbase.o  $(LIBS) $(OS_STATIC)

$(U_DIR)/skip_certd:	$(U_DIR)/skip_certd.o $(U_DIR)/skip_certbase.o \
			$(U_DIR)/certx.o $(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/skip_certd.o $(U_DIR)/skip_certbase.o \
			$(U_DIR)/certx.o $(U_DIR)/skip_log.o \
				$(LIBS) $(OS_STATIC)

$(U_DIR)/certreq:	$(U_DIR)/certreq.o $(U_DIR)/skip_certbase.o \
			$(U_DIR)/certx.o $(CERTLIB)
	$(C++) $(CFLAGS) -o $@ $(U_DIR)/certreq.o $(U_DIR)/skip_certbase.o \
			$(U_DIR)/certx.o $(U_DIR)/skip_cdp.o \
				$(LIBS) $(OS_STATIC)


#
# Object modules compilation
#
$(U_DIR)/skip_keymgrd.o: $(HDRS) \
		skip_keymgrd.C ../include/skip_keymgrmsgs.h skip_keymgr.h  \
		skip_fetchcert.h
	$(C++) $(CFLAGS) -c skip_keymgrd.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_keymgrsubr1.o: skip_keymgrsubr1.C skip_enc_alg.h $(HDRS)
	$(C++) $(CFLAGS) -c skip_keymgrsubr1.C -o $@


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


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


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


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

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

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

$(U_DIR)/skip_cache.o: skip_cache.C  $(HDRS)
	$(C++) $(CFLAGS) -c skip_cache.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) $(OPTIM) -I../bdcmod/des_ecb -I$(COMM_INC) -c \
				../bdcmod/des_ecb/des.c -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) -g -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)/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 $@

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

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

$(U_DIR)/skip_fetchcert.o: skip_fetchcert.C
	$(C++) $(CFLAGS) -c skip_fetchcert.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 skip_fetchcert.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_keymgr_init.o: $(HDRS) skip_keymgr_init.C skip_fetchcert.h
	$(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 $@

#
# 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)
