# Makefile for KLIPS kernel code as a module    for 2.6 kernels
#
# Makefile for KLIPS kernel code as a module
# Copyright (C) 1998, 1999, 2000,2001  Richard Guy Briggs.
# Copyright (C) 2002-2004	Michael Richardson <mcr@freeswan.org>
# 
# 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.
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#

LIBRESWANSRCDIR?=.
KLIPS_TOP?=.

-include ${LIBRESWANSRCDIR}/Makefile.ver

base-klips-objs := 

base-klips-objs+= ipsec_init.o ipsec_sa.o ipsec_radij.o radij.o
base-klips-objs+= ipsec_life.o ipsec_proc.o
base-klips-objs+= ipsec_tunnel.o ipsec_xmit.o ipsec_rcv.o ipsec_ipip.o
base-klips-objs+= ipsec_snprintf.o
base-klips-objs+= ipsec_mast.o
base-klips-objs+= sysctl_net_ipsec.o 
base-klips-objs+= pfkey_v2.o pfkey_v2_parser.o pfkey_v2_ext_process.o 
base-klips-objs+= version.o

base-klips-objs+= satot.o
base-klips-objs+= addrtot.o
base-klips-objs+= ultot.o 
base-klips-objs+= addrtypeof.o
base-klips-objs+= anyaddr.o
base-klips-objs+= initaddr.o
base-klips-objs+= ultoa.o 
base-klips-objs+= addrtoa.o 
base-klips-objs+= subnettoa.o 
base-klips-objs+= subnetof.o 
base-klips-objs+= goodmask.o 
base-klips-objs+= datatot.o 
base-klips-objs+= rangetoa.o 
base-klips-objs+= prng.o 
base-klips-objs+= pfkey_v2_parse.o 
base-klips-objs+= pfkey_v2_build.o 
base-klips-objs+= pfkey_v2_debug.o 
base-klips-objs+= pfkey_v2_ext_bits.o 
base-klips-objs+= version.o

obj-${CONFIG_KLIPS} += ipsec.o

ipsec-objs += ${base-klips-objs}

ipsec-$(CONFIG_KLIPS_ESP)     += ipsec_esp.o
ipsec-$(CONFIG_KLIPS_OCF)     += ipsec_ocf.o
ipsec-$(CONFIG_KLIPS_IPCOMP)  += ipsec_ipcomp.o
ipsec-$(CONFIG_KLIPS_AUTH_HMAC_MD5)  += ipsec_md5c.o
ipsec-$(CONFIG_KLIPS_AUTH_HMAC_SHA1) += ipsec_sha1.o

# AH, if you really think you need it.
ipsec-$(CONFIG_KLIPS_AH)   += ipsec_ah.o

ipsec-$(CONFIG_KLIPS_ALG) += ipsec_alg.o 

# include code from DES subdir
crypto-$(CONFIG_KLIPS_ENC_3DES) += des/ipsec_alg_3des.o
crypto-$(CONFIG_KLIPS_ENC_3DES) += des/cbc_enc.o
crypto-$(CONFIG_KLIPS_ENC_3DES) += des/ecb_enc.o
crypto-$(CONFIG_KLIPS_ENC_3DES) += des/set_key.o

ifeq ($(strip ${SUBARCH}),)
SUBARCH:=${ARCH}
endif

# the assembly version expects frame pointers, which are
# optional in many kernel builds. If you want speed, you should
# probably use cryptoapi code instead.
#USEASSEMBLY=${SUBARCH}${CONFIG_FRAME_POINTER}
#ifeq (${USEASSEMBLY},i386y)
#crypto-$(CONFIG_KLIPS_ENC_3DES) += des/dx86unix.o
#else
crypto-$(CONFIG_KLIPS_ENC_3DES) += des/des_enc.o
#endif

# include code from AES subdir
crypto-$(CONFIG_KLIPS_ENC_AES) += aes/ipsec_alg_aes.o
crypto-$(CONFIG_KLIPS_ENC_AES) += aes/aes_xcbc_mac.o
crypto-$(CONFIG_KLIPS_ENC_AES) += aes/aes_cbc.o

ifeq ($(strip ${SUBARCH}),)
SUBARCH:=${ARCH}
endif

#USEASSEMBLY=${SUBARCH}${CONFIG_FRAME_POINTER}
#ifeq (${USEASSEMBLY},i386y)
#crypto-$(CONFIG_KLIPS_ENC_AES) += aes/aes-i586.o
#else
crypto-$(CONFIG_KLIPS_ENC_AES) += aes/aes.o
#endif

ipsec-y += ${crypto-y}

ipsec-$(CONFIG_KLIPS_ENC_CRYPTOAPI) += ipsec_alg_cryptoapi.o

# IPcomp stuff
base-ipcomp-objs := ipcomp.o 
base-ipcomp-objs += adler32.o
base-ipcomp-objs += deflate.o
base-ipcomp-objs += infblock.o
base-ipcomp-objs += infcodes.o
base-ipcomp-objs += inffast.o
base-ipcomp-objs += inflate.o
base-ipcomp-objs += inftrees.o
base-ipcomp-objs += infutil.o
base-ipcomp-objs += trees.o
base-ipcomp-objs += zutil.o
asm-ipcomp-obj-$(CONFIG_M586)          += match586.o
asm-ipcomp-obj-$(CONFIG_M586TSC)       += match586.o
asm-ipcomp-obj-$(CONFIG_M586MMX)       += match586.o
asm-ipcomp-obj-$(CONFIG_M686)          += match686.o
asm-ipcomp-obj-$(CONFIG_MPENTIUMIII)   += match686.o
asm-ipcomp-obj-$(CONFIG_MPENTIUM4)     += match686.o
asm-ipcomp-obj-$(CONFIG_MK6)           += match586.o
asm-ipcomp-obj-$(CONFIG_MK7)           += match686.o
asm-ipcomp-obj-$(CONFIG_MCRUSOE)       += match586.o
asm-ipcomp-obj-$(CONFIG_MWINCHIPC6)    += match586.o
asm-ipcomp-obj-$(CONFIG_MWINCHIP2)     += match686.o
asm-ipcomp-obj-$(CONFIG_MWINCHIP3D)    += match686.o
base-ipcomp-objs += ${asm-ipcomp-obj-y}

ipsec-$(CONFIG_KLIPS_IPCOMP) += ${base-ipcomp-objs}

EXTRA_CFLAGS += -DIPCOMP_PREFIX -DKLIPS
EXTRA_CFLAGS += -Icrypto/ocf
