# Makefile for the scepclient
# Copyright (C) 2005 Jan Hutter, Martin Willi
# Hochschule fuer Technik Rapperswil
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
#

FREESWANSRCDIR=../..
include ${FREESWANSRCDIR}/Makefile.inc

PLUTODIR=../pluto
OPENACDIR=../openac

PROGRAM=scepclient
EXTRA8PROC=${PROGRAM}.8

LIBS=${FREESWANLIB} $(LIBDESLITE) -lgmp
CFLAGS+= -DDEBUG -DNO_PLUTO

# This compile option activates the leak detective
ifeq ($(USE_LEAK_DETECTIVE),true)
  CFLAGS+= -DLEAK_DETECTIVE
endif

# This compile option activates dynamic URL fetching using libcurl
ifeq ($(USE_LIBCURL),true)
  CFLAGS+= -DLIBCURL
  LIBS+= -lcurl
endif

X509_OBJS= asn1.o ca.o certs.o constants.o crl.o defs.o fetch.o id.o keys.o \
           lex.o md2.o md5.o mp_defs.o ocsp.o oid.o pem.o pgp.o pkcs1.o pkcs7.o \
           rnd.o sha1.o smartcard.o x509.o

OBJS= rsakey.o pkcs10.o loglite.o scep.o ${X509_OBJS}

include ../Makefile.program

loglite.o :	$(OPENACDIR)/loglite.c $(PLUTODIR)/log.h
		$(CC) $(CFLAGS) -c -o $@ $<
	
rsakey.o :	rsakey.c rsakey.h
		$(CC) $(CFLAGS) -c -o $@ $<

pkcs10.o : 	pkcs10.c pkcs10.h
		$(CC) $(CFLAGS) -c -o $@ $<

scep.o :	scep.c scep.h
		$(CC) $(CFLAGS) -c -o $@ $<

# X.509 library

asn1.o : 	$(PLUTODIR)/asn1.c $(PLUTODIR)/asn1.h
		$(CC) $(CFLAGS) -c -o $@ $<

ca.o : 		$(PLUTODIR)/ca.c $(PLUTODIR)/ca.h
		$(CC) $(CFLAGS) -c -o $@ $<

crl.o :		$(PLUTODIR)/crl.c $(PLUTODIR)/crl.h
		$(CC) $(CFLAGS) -c -o $@ $<

certs.o :	$(PLUTODIR)/certs.c $(PLUTODIR)/certs.h
		$(CC) $(CFLAGS) -c -o $@ $<

constants.o :	$(PLUTODIR)/constants.c $(PLUTODIR)/constants.h
		$(CC) $(CFLAGS) -c -o $@ $<

defs.o :	$(PLUTODIR)/defs.c $(PLUTODIR)/defs.h
		$(CC) $(CFLAGS) -c -o $@ $<

fetch.o :	$(PLUTODIR)/fetch.c $(PLUTODIR)/fetch.h
		$(CC) $(CFLAGS) -c -o $@ $<

id.o :		$(PLUTODIR)/id.c $(PLUTODIR)/id.h
		$(CC) $(CFLAGS) -c -o $@ $<

keys.o :	$(PLUTODIR)/keys.c $(PLUTODIR)/keys.h
		$(CC) $(CFLAGS) -c -o $@ $<

lex.o :		$(PLUTODIR)/lex.c $(PLUTODIR)/lex.h
		$(CC) $(CFLAGS) -c -o $@ $<

md2.o :		$(PLUTODIR)/md2.c $(PLUTODIR)/md2.h
		$(CC) $(CFLAGS) -c -o $@ $<

md5.o :		$(PLUTODIR)/md5.c $(PLUTODIR)/md5.h
		$(CC) $(CFLAGS) -c -o $@ $<

mp_defs.o :	$(PLUTODIR)/mp_defs.c $(PLUTODIR)/mp_defs.h
		$(CC) $(CFLAGS) -c -o $@ $<

ocsp.o :	$(PLUTODIR)/ocsp.c $(PLUTODIR)/ocsp.h
		$(CC) $(CFLAGS) -c -o $@ $<

oid.o :		$(PLUTODIR)/oid.c $(PLUTODIR)/oid.h
		$(CC) $(CFLAGS) -c -o $@ $<

pem.o :		$(PLUTODIR)/pem.c $(PLUTODIR)/pem.h
		$(CC) $(CFLAGS) -c -o $@ $<

pgp.o :		$(PLUTODIR)/pgp.c $(PLUTODIR)/pgp.h
		$(CC) $(CFLAGS) -c -o $@ $<

pkcs1.o :	$(PLUTODIR)/pkcs1.c $(PLUTODIR)/pkcs1.h
		$(CC) $(CFLAGS) -c -o $@ $<

pkcs7.o :	$(PLUTODIR)/pkcs7.c $(PLUTODIR)/pkcs7.h
		$(CC) $(CFLAGS) -c -o $@ $<

rnd.o :		$(PLUTODIR)/rnd.c $(PLUTODIR)/rnd.h
		$(CC) $(CFLAGS) -c -o $@ $<

sha1.o :	$(PLUTODIR)/sha1.c $(PLUTODIR)/sha1.h
		$(CC) $(CFLAGS) -c -o $@ $<

smartcard.o :	$(PLUTODIR)/smartcard.c $(PLUTODIR)/smartcard.h
		$(CC) $(CFLAGS) -c -o $@ $<

x509.o :	$(PLUTODIR)/x509.c $(PLUTODIR)/x509.h
		$(CC) $(CFLAGS) -c -o $@ $<

doxygen : 
		doxygen doxyconfig.DoxyFile

# Stolen from pluto/Makefile

gatherdeps:
		@ls | grep '\.c$$' | sed -e 's/\(.*\)\.c$$/\1.o: \1.c/'
		@echo
		@ls | grep '\.c$$' | xargs grep '^#[    ]*include[      ]*"' | \
                sed -e 's/\.c:#[        ]*include[      ]*"/.o: /' -e 's/".*//'

# Dependencies generated by "make gatherdeps":

pkcs10.o: pkcs10.c
rsakey.o: rsakey.c
scep.o: scep.c
scepclient.o: scepclient.c

pkcs10.o: ../pluto/constants.h
pkcs10.o: ../pluto/defs.h
pkcs10.o: ../pluto/oid.h
pkcs10.o: ../pluto/asn1.h
pkcs10.o: ../pluto/pkcs1.h
pkcs10.o: ../pluto/log.h
pkcs10.o: ../pluto/x509.h
pkcs10.o: pkcs10.h
rsakey.o: ../pluto/constants.h
rsakey.o: ../pluto/defs.h
rsakey.o: ../pluto/mp_defs.h
rsakey.o: ../pluto/log.h
rsakey.o: ../pluto/asn1.h
rsakey.o: ../pluto/pkcs1.h
rsakey.o: rsakey.h
scep.o: ../pluto/constants.h
scep.o: ../pluto/defs.h
scep.o: ../pluto/rnd.h
scep.o: ../pluto/oid.h
scep.o: ../pluto/asn1.h
scep.o: ../pluto/pkcs1.h
scep.o: ../pluto/fetch.h
scep.o: ../pluto/log.h
scep.o: scep.h
scepclient.o: ../pluto/constants.h
scepclient.o: ../pluto/defs.h
scepclient.o: ../pluto/log.h
scepclient.o: ../pluto/oid.h
scepclient.o: ../pluto/asn1.h
scepclient.o: ../pluto/pkcs1.h
scepclient.o: ../pluto/pkcs7.h
scepclient.o: ../pluto/certs.h
scepclient.o: ../pluto/fetch.h
scepclient.o: ../pluto/rnd.h
scepclient.o: rsakey.h
scepclient.o: pkcs10.h
scepclient.o: scep.h
