#:ts=8
#
#    $Id: Makefile,v 3.7 1994/05/02 05:36:42 mj Exp mj $
#
#    Makefile for FIDOGATE software
#
#
SHELL		= /bin/sh

#
# ----- Start configuration defines ------------------------------------------
#
BINDIR		= /usr/local/bin
LIBDIR		= /usr/local/lib/fidonet
SPOOLDIR	= /usr/spool/fidonet

OWNER		= news
GROUP		= news

PERM_PROG	= 755
PERM_DATA	= 644
PERM_SETUID	= 4755
PERM_DIR	= 755

#
# C compiler / flags
#
CC		= gcc
YACC		= bison -y
AR		= ar
#RANLIB		= @echo >/dev/null
RANLIB		= ranlib

CFLAGS		= -g -Wall
LFLAGS		= -g -L.

#LIBS		= -lfidogate -lPW
#LIBS		= -lfidogate -lx
LIBS		= -lfidogate

INSTALL_PROG	= install -g $(GROUP) -o $(OWNER) -m $(PERM_PROG)
INSTALL_DATA	= install -g $(GROUP) -o $(OWNER) -m $(PERM_DATA)
INSTALL_SETUID	= install -g $(GROUP) -o $(OWNER) -m $(PERM_SETUID)
INSTALL_DIR	= install -g $(GROUP) -o $(OWNER) -m $(PERM_DIR) -d

#
# ----- End configuration defines --------------------------------------------
#
# Normally it should not be necessary to change anything below this line
#

LIB		= libfidogate.a

OBJS		= address.o aliases.o areas.o binkley.o\
		  bounce.o bufstring.o charset.o config.o crc32.o\
		  date.o fopen.o getopt.o getopt1.o\
		  gettime.o hosts.o lock.o log.o mail.o maus.o\
		  message.o misc.o msgid.o node.o packet.o\
		  parsedate.o read.o rfcaddr.o rfcheader.o\
		  sequencer.o textlist.o version.o wildmat.o\
		  xalloc.o xstrtok.o


GATE		= fido2rfc rfc2fido toaddr fidorun fidoin

UTIL		= mail2news out-attach pktdebug ffx ffxqt

#
# Compiling
#
.c.o:
	$(CC) $(CFLAGS) -c $<

.o:
	$(CC) $(LFLAGS) -o $* $*.o $(LIBS)


gate:		paths.mak $(GATE)

util:		paths.mak $(UTIL)

all:		gate util


$(LIB):		$(OBJS)
	rm -f $(LIB)
	$(AR) rv $(LIB) $(OBJS)
	$(RANLIB) $(LIB)

parsedate.c:	parsedate.y
	@echo "expect 6 shift/reduce conflicts"
	$(YACC) parsedate.y
	mv y.tab.c parsedate.c

paths.mak:	Makefile
	@echo '/*'                                          > paths.mak
	@echo ' * Automatically generated --- do not edit!' >>paths.mak
	@echo ' */'                                         >>paths.mak
	@echo '#define BINDIR   "$(BINDIR)"'                >>paths.mak
	@echo '#define LIBDIR   "$(LIBDIR)"'                >>paths.mak
	@echo '#define SPOOLDIR "$(SPOOLDIR)"'              >>paths.mak
	diff paths.mak paths.h || cp paths.mak paths.h


rfc2fido:	$(LIB)
fido2rfc:	$(LIB)
toaddr:		toaddr.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o toaddr toaddr.o fakelog.o $(LIBS)
fidoin:		fidoin.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o fidoin fidoin.o fakelog.o $(LIBS)

fidorun:	fidorun.sh
	sed -e 's+??SPOOL??+$(SPOOLDIR)+g' \
		-e 's+??LIB??+$(LIBDIR)+g' fidorun.sh >fidorun
	chmod +x fidorun

mail2news:	mail2news.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o mail2news mail2news.o fakelog.o $(LIBS)
out-attach:	out-attach.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o out-attach out-attach.o fakelog.o $(LIBS)
pktdebug:	pktdebug.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o pktdebug pktdebug.o fakelog.o $(LIBS)

ffx:		ffx.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o ffx ffx.o fakelog.o $(LIBS)
ffxqt:		ffxqt.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o ffxqt ffxqt.o fakelog.o $(LIBS)

testdate:	testdate.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o testdate testdate.o fakelog.o $(LIBS)
testdate.o:	parsedate.c
	$(CC) $(CFLAGS) -DTEST -c parsedate.c -o testdate.o

testrfc:	testrfc.o fakelog.o $(LIB)
	$(CC) $(LFLAGS) -o testrfc testrfc.o fakelog.o $(LIBS)
testrfc.o:	rfcheader.c
	$(CC) $(CFLAGS) -DTEST -c rfcheader.c -o testrfc.o


install-gate:
	$(INSTALL_PROG)   fido2rfc  $(LIBDIR)
	$(INSTALL_PROG)   fidorun   $(LIBDIR)
	$(INSTALL_PROG)   toaddr    $(LIBDIR)
	$(INSTALL_PROG)   fidoin    $(LIBDIR)
	$(INSTALL_SETUID) rfc2fido  $(LIBDIR)

install-util:
	$(INSTALL_SETUID) ffx   $(LIBDIR)
	$(INSTALL_PROG)   ffxqt $(LIBDIR)
	$(INSTALL_PROG)   mail2news $(LIBDIR)
	$(INSTALL_PROG)   out-attach $(BINDIR)

install-dirs:
	$(INSTALL_DIR)    $(LIBDIR)
	$(INSTALL_DIR)    $(SPOOLDIR)
	$(INSTALL_DIR)    $(SPOOLDIR)/in
	$(INSTALL_DIR)    $(SPOOLDIR)/in/mail
	$(INSTALL_DIR)    $(SPOOLDIR)/in/news
	$(INSTALL_DIR)    $(SPOOLDIR)/in/bad
	$(INSTALL_DIR)    $(SPOOLDIR)/in/out
	$(INSTALL_DIR)    $(SPOOLDIR)/unsecure
	$(INSTALL_DIR)    $(SPOOLDIR)/out

install:	install-gate

install-all:	install-gate install-util
	

clean:
	rm -f testdate testdate.c testrfc testrfc.c
	rm -f $(FFX) $(UTIL) $(GATE) $(LIB)
	rm -f *~ *.bak *.o tags TAGS *core* paths.tmp


#
# Dependencies
#
depend:
	$(CC) -MM *.c >.depend

depend-all:
	$(CC) -M *.c >.depend
		
include .depend
