
#### Makefile for drac

## Tuneables

# Paths

INSTALL = install
EBIN = /usr/local/sbin
INSTLIBDIR = /usr/local/lib
INSTINCLDIR = /usr/include
MAN = /usr/local/man/man
INSTALLPAM = /lib/security
DB_DIR = /var/drac
SETUP_DIR = /etc/rc.d/init.d
SETUP_NAME = rpc.dracd
SETUP_SCRIPT = rpc.dracd-setup.redhat

# OS-Dependant settings

# Choose one of this pair...
# -DTI_RPC	# Transport-independant RPC
# -DSOCK_RPC	# Socket RPC

# Choose one of this pair...
# -DFCNTL_LOCK	# fcntl() locking
# -DFLOCK_LOCK	# flock() locking

# Choose one of this pair...
# -DSYSINFO	# hostname from sysinfo()
# -DGETHOST	# hostname from gethostname()

# If rpcgen -C is specified below...
# -DDASH_C	# ANSI-C mode

# Settings for postfix and exim

# Do not set these for sendmail
# -DREQ_HASH	# requires hash format
# -DCIDR_KEY	# keys in CIDR format
# -DTERM_KD	# keys and data nul-terminated

# If your sendmail uses Berkely DB v.1 and it resides
# int /usr/include/db1/db.h add -DUSE_DB1

DEFS = -DSOCK_RPC -DGETHOST -DDASH_C -DFCNTL_LOCK

# Compiler flags 
CC = cc
RANLIB = :
CFLAGS = $(DEFS) -g -fPIC -I.
#CFLAGS = $(DEFS) -g -I/usr/local/src/db/db.1.85/PORT/sunos.5.2/include
LDLIBS = -ldb
#LDLIBS = -L/usr/local/src/db/db.1.85/PORT/sunos.5.2 -lnsl -ldb
TSTLIBS = -L. -ldrac
RPCGENFLAGS = -C
#RPCGENFLAGS = -C

# Man sections
MANLIB = 3
MANADM = 8

## Nothing to change after this point

# Package files

DOCFILES = COPYRIGHT Changes INSTALL PORTING README version.h dracauth.3 \
	rpc.dracd.1m dracd.allow-sample dracd-setup dracd-setup.linux
MAKEFILE = Makefile
RPC_SRC = drac.x
LIB_SRC = dracauth.c
SVC_SRC = rpc.dracd.c
TST_SRC = testing.c
PACKAGE = $(DOCFILES) $(MAKEFILE) $(RPC_SRC) $(LIB_SRC) $(SVC_SRC) $(TST_SRC)
PAM_SRC = pam_drac.c

# Final targets

CLIENT     = testing
SERVER     = rpc.dracd
LIBRAR     = libdrac.a
CLIHEADER  = dracauth.h
PAM_MODULE = pam_drac.so

# rpcgen output

RPC_H = drac.h
RPC_XDR = drac_xdr.c
RPC_SVC = drac_svc.c
RPC_CLNT = drac_clnt.c
RPC_ALL = $(RPC_H) $(RPC_XDR) $(RPC_SVC) $(RPC_CLNT)

# Object files

LIB_OBJ  = dracauth.o
SVC_OBJ  = rpc.dracd.o
TST_OBJ  = testing.o
H_OBJS   = drac_xdr.o drac_svc.o drac_clnt.o $(SVC_OBJ) $(LIB_OBJ)
L_OBJS   = $(LIB_OBJ) drac_xdr.o drac_clnt.o
S_OBJS   = $(SVC_OBJ) drac_xdr.o drac_svc.o
PAM_OBJS = pam_drac.o

# Rules

all: $(CLIENT) $(SERVER) $(PAM_MODULE)

$(RPC_ALL): $(RPC_SRC) 
	rpcgen $(RPCGENFLAGS) $(RPC_SRC)

$(H_OBJS): $(RPC_H) 

$(LIB_OBJ) $(SVC_OBJ): $(MAKEFILE)

$(LIBRAR): $(L_OBJS)
	rm -f $@
	ar cq $@ $(L_OBJS)
	$(RANLIB) $@

$(CLIENT): $(TST_OBJ) $(LIBRAR)
	$(CC) -o $(CLIENT) $(TST_OBJ) $(TSTLIBS)

$(SERVER): $(S_OBJS) 
	$(CC) -o $(SERVER) $(S_OBJS) $(LDLIBS)

$(PAM_MODULE):$(PAM_OBJS) $(L_OBJS)
	ld -x --shared -o $(PAM_MODULE) $(PAM_OBJS) $(L_OBJS)

clean:
	rm -f core $(RPC_ALL) $(H_OBJS) $(TST_OBJ) $(CLIENT) \
		$(SERVER) $(LIBRAR) $(PAM_MODULE) $(PAM_OBJS)

tar: $(PACKAGE)
	tar cf drac.tar $(PACKAGE)

install: $(SERVER) $(PAM_MODULE)
	groupadd drac || echo "group drac was found in the system"
	useradd -g drac -s /bin/nologin -c "PbS daemon" drac || echo "user drac was found in the system"
	[ -e $(DB_DIR) ] || mkdir -m 0755 $(DB_DIR)
	chown drac:drac $(DB_DIR)
	$(INSTALL) -c -o root -g root -m 0755 $(SERVER) $(EBIN)
	$(INSTALL) -c -o root -g root -m 0755 $(PAM_MODULE) $(INSTALLPAM)
	$(INSTALL) -c -o root -g root -m 0755 $(SETUP_SCRIPT) $(SETUP_DIR)/$(SETUP_NAME)

install-devel:
	$(INSTALL) -c -o root -g root -m 0755 $(LIBRAR) $(INSTLIBDIR)
	$(INSTALL) -c -o root -g root -m 0644 $(CLIHEADER) $(INSTINCLDIR)

install-man: $(SERVER).1m dracauth.3
	$(INSTALL) -c -m 0444 $(SERVER).1m $(MAN)$(MANADM)/$(SERVER).$(MANADM)
	$(INSTALL) -c -m 0444 dracauth.3 $(MAN)$(MANLIB)/dracauth.$(MANLIB)

