#
# $Id: Makefile,v 1.9 1999/06/23 23:40:37 cdr Exp $ %Y% Copyright 1991 Livingston Enterprises Inc
#
# If your system has the /usr/include/shadow.h file and uses getspnam() then
# delete the -DNOSHADOW flag from CPPFLAGS in ../build/Makefile.$(EXT)
#
# To compile with support for SecurID
#  1) copy the SecurID header files (SDHEADERS) into this directory
#  2) copy the sdiclient.a library from SECURID into $(OBJDIR)
#	(and run ranlib on it if needed)
#  3) make EXT=sun4_4.1 sradiusd 
#	(RS6000_4.1, HP9000_10.01, and sun4_5.5 are also available for sradiusd)
#  4) run sradiusd exactly as you would run radiusd 
#	(you can rename it to radiusd if you wish)
#
# To build on a platform type "make EXT=platform build" where platform
# is replaced by the one of the following values.  For example, to build
# on SunOS 4.1.4 type "make EXT=sun4_4.1 build"
# 

CC              = gcc
COPT            = -O -g
CPPFLAGS        = -DNOSHADOW
LIBS            = $(RADLIBS)

TARGET=radiusd
# EXT=
SRCDIR=.
OBJDIR=./$(EXT)
SLIBS= $(OBJDIR)/sdiclient.a $(OBJDIR)/aegcli.a

# use the following defaults to build with iPass support

SSL_CFLAGS =    -DUSE_SSL
SSL_LDFLAGS =

# IPINCDIR =      /usr/ipass/include
# IPLIBDIR =      /usr/ipass/lib
IPINCDIR =      ../ipass/$(EXT)/usr/ipass/include
IPLIBDIR =	$(OBJDIR)

# uncomment rsaref if you're building a USA Domestic binary
#
SSL_LIBS =      -lssl -lcrypto #-lrsaref
ILIBS =	$(SSL_LIBS)

# use the following line for Solaris
# ILIBS =                -lip $(SSL_LIBS) -lnsl -lsocket
# use following for SunOS
ILIBS =                -lip $(SSL_LIBS)

# use this line for BSDI
# ILIBS =         -lip $(SSL_LIBS)

# ILIBS =   -lip $(AUTH_LIBS) $(SSL_LIBS) $(IPASS_LIBS)

ICFLAGS= $(COPT) $(CPPFLAGS) $(SSL_CFLAGS) -I$(IPINCDIR) $(IPASS_CFLAGS)

ILDFLAGS= -L$(IPLIBDIR) $(SSL_LDFLAGS)
 
#
# End of iPass configuration.
#

# comment out next line for BSD/OS 2.1 and 4.0
include $(SRCDIR)/conf/$(EXT)


CFLAGS          = $(COPT) $(CPPFLAGS)

HEADERS		= $(SRCDIR)/conf.h $(SRCDIR)/md5.h $(SRCDIR)/radius.h \
		  $(SRCDIR)/users.h

SDHEADERS	= $(SRCDIR)/sdacmvls.h $(SRCDIR)/sdconf.h $(SRCDIR)/sdi_athd.h \
		  $(SRCDIR)/sdi_size.h $(SRCDIR)/sdi_type.h $(SRCDIR)/activcard.h aegapi.h
RAD_CSRC        = $(SRCDIR)/acct.c \
		  $(SRCDIR)/dict.c $(SRCDIR)/ipass.c $(SRCDIR)/log.c \
		  $(SRCDIR)/md5.c $(SRCDIR)/menu.c $(SRCDIR)/pass.c \
		  $(SRCDIR)/proxy.c $(SRCDIR)/users.c $(SRCDIR)/util.c \
		  $(SRCDIR)/version.c $(SRCDIR)/radiusd.c $(SRCDIR)/vports.c
RAD_OBJS1        = $(OBJDIR)/radiusd.o \
		  $(OBJDIR)/acct.o $(OBJDIR)/dict.o \
		  $(OBJDIR)/ipass.o $(OBJDIR)/vports.o \
		  $(OBJDIR)/log.o $(OBJDIR)/md5.o $(OBJDIR)/menu.o \
		  $(OBJDIR)/proxy.o $(OBJDIR)/users.o $(OBJDIR)/util.o
RAD_OBJS2	 = $(OBJDIR)/pass.o $(OBJDIR)/version.o
RAD_OBJS	 = $(RAD_OBJS1) $(RAD_OBJS2)
SRAD_OBJS        = $(OBJDIR)/sradiusd.o $(OBJDIR)/acct.o $(OBJDIR)/dict.o \
		  $(OBJDIR)/ipass.o $(OBJDIR)/vports.o \
		  $(OBJDIR)/log.o $(OBJDIR)/md5.o \
		  $(OBJDIR)/menu.o $(OBJDIR)/pass.o $(OBJDIR)/proxy.o \
		  $(OBJDIR)/users.o $(OBJDIR)/util.o \
		  $(OBJDIR)/securid.o $(OBJDIR)/activcard.o \
		  $(OBJDIR)/sversion.o
IRAD_OBJS        = $(OBJDIR)/radiusd.o $(OBJDIR)/acct.o $(OBJDIR)/dict.o \
		  $(OBJDIR)/iipass.o $(OBJDIR)/vports.o \
		  $(OBJDIR)/log.o $(OBJDIR)/md5.o \
		  $(OBJDIR)/menu.o $(OBJDIR)/pass.o $(OBJDIR)/proxy.o \
		  $(OBJDIR)/users.o $(OBJDIR)/util.o \
		  $(OBJDIR)/iversion.o
TEST_OBJS	= $(OBJDIR)/users.o $(OBJDIR)/dict.o \
		  $(OBJDIR)/util.o $(OBJDIR)/log.o $(OBJDIR)/version.o

.PRECIOUS: $(HEADERS) ($SDHEADERS) $(RAD_CSRC) builddbm.c

CMDS		= $(OBJDIR)/radiusd $(OBJDIR)/builddbm
ALLCMDS         = $(OBJDIR)/radiusd $(OBJDIR)/builddbm $(OBJDIR)/testuser \
		  $(OBJDIR)/dbmkeys $(OBJDIR)/dbmrec $(OBJDIR)/radtest \
		  $(OBJDIR)/md5test

build:	$(OBJDIR) $(CMDS)

all:	$(OBJDIR) $(ALLCMDS)

clean:
	-rm -f $(ALLCMDS)
	-rm -f $(OBJDIR)/*.o

clobber: clean
	sccs clean

strip:
	strip $(CMDS)
allstrip:
	strip $(ALLCMDS)
b: $(OBJDIR)/builddbm
i: $(OBJDIR)/iradiusd
m: $(OBJDIR)/md5test
r: $(OBJDIR)/radiusd
s: $(OBJDIR)/sradiusd
t: $(OBJDIR)/radtest

$(OBJDIR):
	- mkdir -p $(OBJDIR)

$(OBJDIR)/radiusd: $(RAD_OBJS)
	$(CC) $(CFLAGS) -o $@ $(RAD_OBJS) $(LIBS)


$(OBJDIR)/builddbm: $(OBJDIR)/builddbm.o $(OBJDIR)/version.o $(OBJDIR)/log.o $(HEADERS)
	$(CC) $(CFLAGS) -o $@ $(OBJDIR)/builddbm.o $(OBJDIR)/version.o $(OBJDIR)/log.o $(LIBS)

$(OBJDIR)/md5test: $(SRCDIR)/md5test.c $(HEADERS) $(OBJDIR)/md5.o
	$(CC) $(CFLAGS) -o $@ $(SRCDIR)/md5test.c $(OBJDIR)/md5.o 

$(OBJDIR)/radtest: $(SRCDIR)/radtest.c $(HEADERS) $(OBJDIR)/md5.o $(OBJDIR)/dict.o $(OBJDIR)/util.o $(OBJDIR)/log.o
	$(CC) $(CFLAGS) -o $@ $(SRCDIR)/radtest.c $(OBJDIR)/md5.o $(OBJDIR)/dict.o $(OBJDIR)/util.o $(OBJDIR)/log.o $(LIBS)

$(OBJDIR)/testuser: $(SRCDIR)/testuser.c $(HEADERS) $(TEST_OBJS)
	$(CC) $(CFLAGS) -o $@ $(SRCDIR)/testuser.c $(TEST_OBJS) $(LIBS)

$(OBJDIR)/dbmkeys: $(SRCDIR)/dbmkeys.c
	$(CC) $(CFLAGS) -o $@ $(SRCDIR)/dbmkeys.c $(LIBS)

$(OBJDIR)/dbmrec: $(SRCDIR)/dbmrec.c $(HEADERS) $(TEST_OBJS)
	$(CC) $(CFLAGS) -o $@ $(SRCDIR)/dbmrec.c $(TEST_OBJS) $(LIBS)

$(OBJDIR)/builddbm.o:	$(SRCDIR)/builddbm.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/builddbm.c
$(OBJDIR)/radiusd.o:	$(SRCDIR)/radiusd.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/radiusd.c
$(OBJDIR)/users.o:	$(SRCDIR)/users.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/users.c
$(OBJDIR)/dict.o:	$(SRCDIR)/dict.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/dict.c
$(OBJDIR)/util.o:	$(SRCDIR)/util.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/util.c
$(OBJDIR)/md5.o:	$(SRCDIR)/md5.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/md5.c
$(OBJDIR)/acct.o:	$(SRCDIR)/acct.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/acct.c
$(OBJDIR)/version.o:	$(SRCDIR)/version.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/version.c
$(OBJDIR)/menu.o:	$(SRCDIR)/menu.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/menu.c
$(OBJDIR)/log.o:	$(SRCDIR)/log.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/log.c
$(OBJDIR)/proxy.o:	$(SRCDIR)/proxy.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/proxy.c
$(OBJDIR)/ipass.o:	$(SRCDIR)/ipass.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/ipass.c
$(OBJDIR)/pass.o:	$(SRCDIR)/pass.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/pass.c
$(OBJDIR)/vports.o:	$(SRCDIR)/vports.c
	$(CC) -c -o $@ $(CFLAGS) $(SRCDIR)/vports.c
#
# SecurID and Activcard support
#
sradiusd: $(OBJDIR)/sradiusd
$(OBJDIR)/sradiusd: $(SRAD_OBJS)
	$(CC) $(CFLAGS) -o $@ $(SRAD_OBJS) $(SLIBS) $(LIBS)
$(OBJDIR)/securid.o:	$(SRCDIR)/securid.c $(SDHEADERS)
	$(CC) -c -o $@ $(CFLAGS) -DSECURID -DACTIVCARD $(SRCDIR)/securid.c
$(OBJDIR)/sversion.o:	$(SRCDIR)/version.c
	$(CC) -c -o $@ -DSECURID -DACTIVCARD $(CFLAGS) $(SRCDIR)/version.c
$(OBJDIR)/sradiusd.o:	$(SRCDIR)/radiusd.c $(SDHEADERS)
	$(CC) -c -o $@ $(CFLAGS) -DSECURID -DACTIVCARD $(SRCDIR)/radiusd.c
#
$(OBJDIR)/activcard.o:	$(SRCDIR)/activcard.c $(SDHEADERS)
	$(CC) -c -o $@ $(CFLAGS) -DSECURID -DACTIVCARD $(SRCDIR)/activcard.c
#
# Ipass support
#
iradiusd: $(OBJDIR)/iradiusd
$(OBJDIR)/iradiusd: $(IRAD_OBJS)
	$(CC) $(ILDFLAGS) -o $@ $(IRAD_OBJS) $(ILIBS)
$(OBJDIR)/iipass.o:	$(SRCDIR)/ipass.c
	$(CC) -c -o $@ $(ICFLAGS) -DIPASS $(SRCDIR)/ipass.c
$(OBJDIR)/iversion.o:	$(SRCDIR)/version.c
	$(CC) -c -o $@ $(ICFLAGS) -DIPASS $(SRCDIR)/version.c
