
#############################################################################
#
# Makefile for Eagles BBS version 3
# 
#############################################################################

# This is the configurable part. Put anything OS-dependent here.
# You do not need to worry with LEX, YACC, or YFLAGS unless you want to
# modify the menu parser.

LIBFTPDIR	=	libftp
PICODIR		=	pico.BBS
HELVISDIR	=	helvis-1.8H1
IRCDIR		=	ircii-2.8.H1
TOOLSDIR	=	tools

# your C compiler of choice
#CC= gcc
CC= cc

# your C linker of choice
LD=$(CC)

# archiver of choice
AR=ar

# ranlib, if applicable. SunOS, OSF/1, NeXT, A/UX use RANLIB=ranlib.
#RANLIB=echo Not using ranlib:
RANLIB=ranlib

# special include paths?
INCLUDES=

# special libs? Solaris needs -lsocket -lnsl -L/usr/ccs/lib here.
# Unixware needs -lsocket -lnsl (and maybe -L/usr/ucblib -lucb)
LIBS=

# flags for the compiler -- NeXT wants -pipe -s -O4 -arch m68040
#CCFLAGS=-g -O2 -DBIT8 -DNO_STRCASECMP=1
CCFLAGS=-g -DBIT8 -DNO_STRCASECMP=1

# flags for the linker -- NeXT wants -s -O4
#=================================
LDFLAGS=-g -L/usr1/FTP/DarkNET-2.5
#=================================

# flags for the archiver -- remove s if using ranlib, add c for NeXT
#ARFLAGS=rs
ARFLAGS=r

# zipper for srcdist and bindist targets, if desired
ZIP=gzip

# scanner generator: lex or flex
LEX=flex

# parser: yacc or bison
YACC=bison

# flags for parser
YFLAGS=-d -o y.tab.c

# default install directory for the install script
#====================
#INSTALLDIR=/home/bbs
INSTALLDIR=/usr1/bbs
#====================

# The rest shouldn't need messing with.

##############################################################################

CFLAGS=$(CCFLAGS) $(INCLUDES)

all: lbbs chatd $(PICODIR)/pico $(HELVISDIR)/helvis tools

$(PICODIR)/pico:
	cd $(PICODIR); make

$(HELVISDIR)/helvis:
	cd $(HELVISDIR); make

irc:
	cd $(IRCDIR); configure --prefix=$(INSTALLDIR); make

$(TOOLSDIR)/hana $(TOOLSDIR)/pseudo:
	cd $(TOOLSDIR); make

BINS	= lbbs chatd addacct delacct bbslog bbfinger bbsmaild $(PICODIR)/pico $(HELVISDIR)/helvis

SCRIPTS=mkftplist.pl

DOCS=README ChangeLog EBBS-Guide ReleaseNotes

##############################################################################
# BBS Library make
##############################################################################

LIBOBJS=record.o util.o name.o log.o utable.o login.o passwd.o home.o init.o \
acct.o misc.o headers.o readbits.o board.o files.o exec.o uldl.o chat.o \
talk.o netmail.o edit.o lang.o routing.o

libbbs.a: $(LIBOBJS)
	-rm -f libbbs.a
	$(AR) $(ARFLAGS) libbbs.a $(LIBOBJS)
	$(RANLIB) libbbs.a

# Here are the makes for the external utility programs.

addacct.o: addacct.c server.h common.h
	$(CC) -c $(CFLAGS) addacct.c

addacct: addacct.o libbbs.a
	$(CC) $(LDFLAGS) -o addacct addacct.o libbbs.a $(LIBS)

delacct.o: delacct.c server.h common.h
	$(CC) -c $(CFLAGS) delacct.c

delacct: delacct.o libbbs.a 
	$(CC) $(LDFLAGS) -o delacct delacct.o libbbs.a $(LIBS)

bbslog.o: bbslog.c server.h common.h
	$(CC) -c $(CFLAGS) bbslog.c

bbslog: bbslog.o libbbs.a 
	$(CC) $(LDFLAGS) -o bbslog bbslog.o libbbs.a $(LIBS)

bbfinger.o: bbfinger.c server.h common.h
	$(CC) -c $(CFLAGS) bbfinger.c

bbfinger: bbfinger.o modes.o libbbs.a 
	$(CC) $(LDFLAGS) -o bbfinger bbfinger.o modes.o libbbs.a $(LIBS)

bbsmaild.o: bbsmaild.c server.h common.h
	$(CC) -c $(CFLAGS) bbsmaild.c

bbsmaild: bbsmaild.o libbbs.a
	$(CC) $(LDFLAGS) -o bbsmaild bbsmaild.o libbbs.a $(LIBS)

############################################################################
# BBS daemon make
############################################################################

#bbsd: packet.o libbbs.a
#     cd server; make CC=$(CC) CFLAGS=$(CFLAGS) LD=$(LD) LDFLAGS=$(LDFLAGS) LI
#
#DLIBS=libbbs.a
#
#DOBJS=bbsd.o packet.o xfer.o
#
#bbsd: $(DOBJS) $(DLIBS)
#     $(LD) $(LDFLAGS) -o bbsd $(DOBJS) $(DLIBS) $(LIBS)

############################################################################
# Chat daemon make
############################################################################

chatserv.o: chatserv.c
	$(CC) -c $(CFLAGS) chatserv.c

chatconf.o: chatconf.c
	$(CC) -c $(CFLAGS) chatconf.c

chatd: chatserv.o chatconf.o libbbs.a
	$(LD) $(LDFLAGS) -o chatd chatserv.o chatconf.o libbbs.a $(LIBS)

############################################################################
# BBS client make
############################################################################

#bbs: packet.o pbbs/libpbbs.a y.tab.c lex.yy.c
#     cd client; make CC=$(CC) CFLAGS=$(CFLAGS) LD=$(LD) LDFLAGS=$(LDFLAGS) AR

############################################################################
# Local client make
############################################################################

LLIBS=libbbs.a pbbs/libpbbs.a $(LIBFTPDIR)/libftp.a

LOBJS=client.o menus.o complete.o system.o c_users.o readmenu.o c_mail.o \
modes.o c_boards.o c_post.o readnew.o c_files.o c_chat.o c_irc.o c_talk.o \
c_lists.o c_msg.o nmenus.o env.o y.tab.o lex.yy.o

PLIBOBJS=pbbs/term.o pbbs/screen.o pbbs/io.o pbbs/stuff.o \
pbbs/more.o pbbs/vedit.o pbbs/hangul.o

pbbs/term.o: pbbs/term.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) term.c

pbbs/screen.o: pbbs/screen.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) screen.c

pbbs/io.o: pbbs/io.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) io.c

pbbs/stuff.o: pbbs/stuff.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) stuff.c

pbbs/more.o: pbbs/more.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) more.c

pbbs/vedit.o: pbbs/vedit.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) vedit.c

pbbs/hangul.o: pbbs/hangul.c
	cd pbbs; $(CC) -c -I.. $(CFLAGS) hangul.c

pbbs/libpbbs.a: $(PLIBOBJS)
	-rm -f pbbs/libpbbs.a
	$(AR) $(ARFLAGS) pbbs/libpbbs.a $(PLIBOBJS)
	$(RANLIB) pbbs/libpbbs.a

$(LIBFTPDIR)/libftp.a:
	cd libftp; make

lex.yy.c:  menu.l
	$(LEX) menu.l

lex.yy.o: lex.yy.c y.tab.o

y.tab.c: gram.y
	$(YACC) $(YFLAGS) gram.y

lbbs: $(LOBJS) $(LLIBS)
	$(LD) $(LDFLAGS) -o lbbs $(LOBJS) $(LLIBS) $(LIBS) -ltermcap #-lresolv

srcdist:
	rm -f ebbssrc.tar ebbssrc.tar.gz 
	tar -cvf ebbssrc.tar [A-Z]* *.[chly] *.pl pbbs/*.c pbbs/*.h config/*
	$(ZIP) ebbssrc.tar

bindist: $(BINS) 
	rm -f ebbsbin.tar ebbsbin.tar.gz
	if [ ! -d deliv ]; then \
	  mkdir deliv deliv/bin deliv/boards deliv/etc deliv/tmp; \
	  mkdir deliv/home deliv/home/SYSOP deliv/home/SYSOP/mail; \
	fi
	cp $(DOCS) deliv
	cp $(BINS) deliv/bin
	cp $(SCRIPTS) deliv/bin
	chmod 6755 deliv/bin/lbbs
	cp config/* deliv/etc
	(cd deliv/bin; strip $(BINS))	
	(cd deliv; tar -cvf ../ebbsbin.tar .)
	$(ZIP) ebbsbin.tar        

install: $(BINS) $(TOOLSDIR)/hana $(TOOLSDIR)/pseudo
	./Install.sh $(INSTALLDIR)
#	cd $(IRCDIR); make install

clean:
	rm -f *.o pbbs/*.o *~ pbbs/*~ config/*~ *# y.output $(BINS)
#	rm -f lex.yy.c y.tab.c y.tab.h
	rm -f libbbs.a pbbs/libpbbs.a
	cd $(LIBFTPDIR); make clean
	cd $(PICODIR); make clean
	cd $(IRCDIR); make clean
	cd $(HELVISDIR); make clean
	cd $(TOOLSDIR); make clean

clobber: clean
	rm -f $(BINS) libbbs.a pbbs/libpbbs.a


acct.o : acct.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
addacct.o : addacct.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
bbfinger.o : bbfinger.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
bbslog.o : bbslog.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
# bbsmaild.o : bbsmaild.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
#  perms.h 
board.o : board.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
c_boards.o : c_boards.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
c_chat.o : c_chat.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
c_files.o : c_files.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
c_irc.o : c_irc.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
c_lists.o : c_lists.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
c_mail.o : c_mail.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
c_msg.o : c_msg.c c_msg.h 
c_post.o : c_post.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
c_talk.o : c_talk.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
c_users.o : c_users.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
chat.o : chat.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
chatconf.o : chatconf.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
chatserv.o : chatserv.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
client.o : client.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
complete.o : complete.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
delacct.o : delacct.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
edit.o : edit.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
env.o : env.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
exec.o : exec.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
files.o : files.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
headers.o : headers.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
home.o : home.c osdeps.h 
init.o : init.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
lang.o : lang.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
log.o : log.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
login.o : login.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
menus.o : menus.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
misc.o : misc.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
modes.o : modes.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
name.o : name.c common.h osdeps.h modes.h retval.h clntcmds.h myctype.h 
netmail.o : netmail.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
nmenus.o : nmenus.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
packet.o : packet.c common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  packet.h 
packfmt.o : packfmt.c common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  packet.h 
passwd.o : passwd.c common.h osdeps.h modes.h retval.h clntcmds.h myctype.h 
readbits.o : readbits.c server.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h 
readmenu.o : readmenu.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
readnew.o : readnew.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
record.o : record.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
routing.o : routing.c client.h common.h osdeps.h modes.h retval.h clntcmds.h \
  myctype.h perms.h clientui.h pbbs/io.h c_msg.h 
system.o : system.c client.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h clientui.h pbbs/io.h c_msg.h 
talk.o : talk.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
uldl.o : uldl.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
utable.o : utable.c server.h common.h osdeps.h modes.h retval.h clntcmds.h myctype.h \
  perms.h 
util.o : util.c common.h osdeps.h modes.h retval.h clntcmds.h myctype.h 
