#---------------------------------------------------------------------------
#
#                      ix/MBox  M A K E F I L E
#             Bulletin Board System for UNIX(-Derivations)
#			
#			   Volker Schuermann
#		      Wuppertal, FRG, 26.10.1991
#
#
#	  	           Modified for SVR3    
#		
#	      Walter Buerger <walterb@weller.ruhr.sub.org>
#              Ralf Heidelberg <ralf@heibox.ruhr.sub.org>
#		  Solingen/Wuppertal, FRG, 08.11.1991
#
#
#                        Modified for ISC 2.21
#
#	   	   Hergo Pape <hergo@ivcmd.BOERDE.DE>
#		       Magdeburg, FRG, 16.11.1991
#
#		
#			     DIFF-Support
#
#		Ralf Heidelberg <ralf@heibox.ruhr.sub.org>
#			Wuppertal, FRG, 07.01.1992
#
#
#		       Modified for ST Minix/c86
#      
#		      Olaf <olaf@oski.toppoint.de>
#      		          Kiel, FRG, 14.01.1992
#
#
#                           SVR4 Support by 
#
#                Andreas Laumann <andreas@xenox.w.open.de>
#	               Wuppertal, FRG, 30.05.1992
#
#
#---------------------------------------------------------------------------
# CFLAGS: 
# 
# -D_MBOX         Has to be set ALWAYS!
# -D_SYS7         UNIX System 7 (MINIX, COHERENT, ...)
# -D_MINIX        MINIX special stuff
# -D_ISC          Interactive UNIX goodies
# -D_SCO          For SCO UNIX only
# -D_SVR4         For AT&T's System V Rel 4 
# -D_LONGNAMES    Long filenames allowed (SVR4, BSD, ULTRIX, ...)
# -D_ESTDIO       Earl Chew's "estdio.h" and GNU C 1.37
# -D_CORELEFT     To check your memory (-D_CORELEFT=10000)
# -D_DATESTAMP    Add time&date to console LOGFILE
# -D_NOINDEX      Index files for NEWS will be created interactive for
#		  each group that is called by a user
#		  Otherwise MB-DAEMON has to be called by [cron] daily
# -D_BAUDRATE     If you've a HST-Modem with FIXED BAUDRATE
# -D_MULTIMEDIA   Local "Multimedia"-Features (i.e. read RTF-Files etc.)
# -D_CNEWS	  To prevent problems with C-NEWS' aliasing mechanism
#---------------------------------------------------------------------------
# This is a workaround for the System V (not SVR4) /bin/sh bug 

SHELL = /bin/sh

# The following definition tells all ix/MBox BBS parts where they have to 
# live in the future. 

MBOXHOME=/local/mbox

# All BBS binaries will be stored in the BIN dircetory ... except [mbrsh]
# NOTE that the path to BIN has to be in all users 'SET'!

BIN=/usr/bin

#---------------------------------------------------------------------------
# And now some predefined settings for various compilers/systems:
#
# MINIX 386 (BCC)
 CC= bcc
 LN= ln
 CHMEM= chmem
 CFLAGS= -D_MINIX -D_SYS7 -D_MBOX -D_BAUDRATE -D_MULTIMEDIA \
	-DHOME="\"$(MBOXHOME)"\" -DADDRMODE
 LIB=
 CONVERT= mv a.out $@
 CHOWN= chown $(OWNER).$(GROUP) 
 CHGRP= :
 STRIP= strip $@
 GETCH= getch.o
#
#
# MINIX 386 & ESTDIO.H
# CC= cc
# LN= ln
# CHMEM= chmem
# CFLAGS= -D_MINIX -D_SYS7 -D_ESTDIO -D_MBOX -DHOME="\"$(MBOXHOME)"\"
# LIB= -lestdio
# CONVERT= mv a.out $@
# CHOWN= chown $(OWNER).$(GROUP) 
# CHGRP= :
# STRIP= strip $@
# GETCH= getch.o
#
#
# MINIX 386 (GCC 1.37)
# CC= gcc
# LN= ln
# CHMEM= : 
# CFLAGS= -O -D_MINIX -D_SYS7 -D_MBOX -D_ESTDIO -DHOME="\"$(MBOXHOME)"\" \
#	-D_BAUDRATE -D_MULTIMEDIA	
# LIB=
# CONVERT= /usr/local/bin/gcc2minix < a.out > $@
# CHOWN= chown $(OWNER).$(GROUP) 
# CHGRP= :
# STRIP= strip $@
# GETCH= getch.o
#
#
# ESIX SVR3 
# CC= cc
# LN= ln
# CHMEM= :
# CFLAGS= -O -D_MBOX -DHOME="\"$(MBOXHOME)"\"
# LIB= -lcurses -s
# CONVERT= mv a.out $@
# CHOWN= chown $(OWNER) 
# CHGRP= chgrp $(GROUP)
# STRIP= $@
# GETCH= SysV.getch.o
#
#
# ISC 2.21 & "Shared Libs" 
# CC= gcc
# LN= ln
# CHMEM= :
# CFLAGS= -O -D_MBOX -D_ISC -traditional -DHOME="\"$(MBOXHOME)"\"
# LIB= -ltermcap -lcurses -lc_s -s
# CONVERT= mv a.out $@
# CHOWN= chown $(OWNER) 
# CHGRP= chgrp $(GROUP)
# STRIP= :
# GETCH= SysV.getch.o
#
#
# Dell 2.1 (SVR4) & GCC 2.1
# CC= gcc
# LN= ln
# CHMEM= :
# CFLAGS= -traditional -g -D_MBOX -D_SVR4 -D_DATESTAMP -D_BAUDRATE \
#	 -D_LONGNAMES -D_MULTIMEDIA -D_CNEWS -DHOME="\"$(MBOXHOME)"\"
# LIB= -ltermlib
# DBM= 
# CONVERT= mv a.out $@
# CHOWN= chown $(OWNER) 
# CHGRP= chgrp $(GROUP)
# STRIP= :
# GETCH= SysV.getch.o

# This is the pager which BLED uses to show his helpfile 
BLPAGER=/bin/cat

# In this directory you hide your helpfiles and manuals
HELPDIR=/usr/doc


# Sorry, but SETUID root.root is still necessary ...
OWNER=root
GROUP=root


MBOX.OBJ=main.o $(GETCH) tools.o getline.o \
	intro.o nerror.o show.o	loop.o help.o admin.o mail.o control.o \
	misc.o lesen.o lesen2.o pd.o portinfo.o befehl.o misc2.o \
	postfach.o ctrlx.o makro.o weiterl.o coreleft.o games.o suchen.o \
	baudrate.o outdial.o faces.o

BLED.OBJ=bled.o $(GETCH) bltools.o blgetline.o derror.o

XMD.OBJ=xmd.o tools.o derror.o

MBRSH.OBJ=mbrsh.o

MBD.OBJ=tools.o mb-daemon.o derror.o

DIFF_FILES=SysV.getch.c admin.c befehl.c bled.c control.c coreleft.c \
	ctrlx.c defs.h derror.c games.c getch.c getline.c help.c intro.c \
	lesen.c lesen2.c loop.c mail.c main.c makro.c mb-daemon.c mbox.h \
	mbrsh.c misc.c misc2.c nerror.c patchlevel.h pd.c portinfo.c \
	postfach.c show.c suchen.c tools.c weiterl.c xmd.c baudrate.c \
	outdial.c faces.c

PROGS=mbox bled mb-daemon mbrsh xmd

default:; @echo ''
	  @echo 'One of the following:'
	  @echo ''
	  @echo 'make all       <-   Create every object file'
	  @echo 'make world     <-   Make directories and set permissions'
	  @echo 'make inst      <-   Install the BBS (make all, world, etc.)'
	  @echo 'make english   <-   Prepare for english version'
	  @echo 'make german    <-   Prepare for german version'
	  @echo 'make clean     <-   Remove object files'
	  @echo 'make mbox      <-   Make the BBS itself (ix/MBox BBS)'
	  @echo 'make mb-daemon <-   Compile "mb-daemon" (NEWS Scanner)'
	  @echo 'make xmd       <-   Create "xmd" (Mailing Agent)'
	  @echo 'make mbrsh     <-   Build "mbrsh" (External Shell)'
	  @echo 'make bled      <-   Make "bled" (B[etter] L[ine] ED[itor])'
	  @echo ''
	  @echo 'Active definitions:'
	  @echo ''
	  @echo 'Compiler [$(CC)]'
	  @echo 'CFLAGS   [$(CFLAGS)]'
	  @echo 'Lib(s)   [$(LIB)]'
	  @echo 'Getch    [$(GETCH)]'
	  @echo 'Root-ID  [$(OWNER).$(GROUP)]'
	  @echo ''

all: $(PROGS)
	@echo ''
	@echo '- All files are made' 
	@echo ''

mbox:	$(MBOX.OBJ)
	@echo ''
	@echo '- The BBS is going to be compiled...'
	@echo ''
	$(CC) $(CFLAGS) $(MBOX.OBJ) $(LIB) 
	@$(CONVERT)
	@$(CHOWN) $@
	@$(CHGRP) $@
	@chmod +x mbox
	@chmod ug+s mbox
	@$(CHMEM) +250000 mbox
	@$(STRIP)

bled:	$(BLED.OBJ) 
	@echo ''
	@echo '- The Editor (BLED) is going to be compiled...'
	@echo ''
	$(CC) $(CFLAGS) $(BLED.OBJ) $(LIB) 
	@$(CONVERT)
	@$(CHMEM) +10000 bled	
	@$(STRIP)
	@chmod +x bled

xmd:    $(XMD.OBJ) 
	@echo ''
	@echo '- The Mailing Agent (xmd) is going to be compiled...'
	@echo ''
	$(CC) $(CFLAGS) $(XMD.OBJ) $(LIB) 
	@$(CONVERT)
	@$(STRIP)
	@chmod +x xmd

mbrsh:  $(MBRSH.OBJ) 
	@echo ''
	@echo '- The external SHELL (mbrsh) is going to be compiled...'
	@echo ''
	$(CC) $(CFLAGS) $(MBRSH.OBJ) $(LIB) 
	@$(CONVERT)
	@$(STRIP)
	@chmod +x mbrsh

mb-daemon:    $(MBD.OBJ) 
	@echo ''
	@echo '- The NEWS Scanner (mb-daemon) is going to be compiled...'
	@echo ''
	$(CC) $(CFLAGS) $(MBD.OBJ) $(LIB) 
	@$(CONVERT)
	@chmod +x mb-daemon
	@chmod ug+s mb-daemon
	@$(CHMEM) +64000 mb-daemon		
	@$(STRIP)

inst:	world all
	@echo
	@echo -n '- The BBS is going to be installed...'
	@cp mbox $(BIN)
	@cp bled $(BIN)
	@cp mbrsh $(MBOXHOME)
	@cp mb-daemon $(BIN)
	@cp xmd $(BIN)
	@cp bled.doc $(HELPDIR)
	@$(CHOWN) $(MBOXHOME)/* $(MBOXHOME)/etc/*
	@$(CHGRP) $(MBOXHOME)/* $(MBOXHOME)/etc/*
	@chmod +s $(BIN)/mbox
	@chmod +s $(BIN)/mb-daemon
	@echo  'done.'
	@echo

copy:
	cp mbox bled mb-daemon xmd $(BIN)
	cp mbrsh $(MBOXHOME)

english:;
	@echo
	@echo -n '- Preparing english version...'
	@rm $(MBOXHOME)/src/mbox.msg
	@ln $(MBOXHOME)/src/mbox.english $(MBOXHOME)/src/mbox.msg
	@rm $(MBOXHOME)/etc/help.*
	@ln $(MBOXHOME)/etc/english.befehle $(MBOXHOME)/etc/help.befehle
	@ln $(MBOXHOME)/etc/english.hilfe $(MBOXHOME)/etc/help.hilfe
	@ln $(MBOXHOME)/etc/english.shorthelp $(MBOXHOME)/etc/help.shorthelp
	@echo 'done.'
	@echo ''

german:;
	@echo
	@echo -n '- Preparing german version...'
	@rm $(MBOXHOME)/src/mbox.msg
	@ln $(MBOXHOME)/src/mbox.deutsch $(MBOXHOME)/src/mbox.msg
	@rm $(MBOXHOME)/etc/help.*
	@ln $(MBOXHOME)/etc/deutsch.befehle $(MBOXHOME)/etc/help.befehle
	@ln $(MBOXHOME)/etc/deutsch.hilfe $(MBOXHOME)/etc/help.hilfe
	@ln $(MBOXHOME)/etc/deutsch.shorthelp $(MBOXHOME)/etc/help.shorthelp
	@echo 'done.'
	@echo ''

world:;	@echo
	@echo -n '- Making directories...'
	@if test -d $(MBOXHOME) ; then echo -n ''; else mkdir $(MBOXHOME) ; fi
	@if test -d $(BIN) ; then echo -n ''; else mkdir $(BIN) ; fi
	@if test -d $(MBOXHOME)/etc ; then echo -n ''; \
		else mkdir $(MBOXHOME)/etc ; fi
	@if test -d $(MBOXHOME)/lib ; then echo -n ''; \
		else mkdir $(MBOXHOME)/lib ; fi
	@if test -d $(MBOXHOME)/src ; then echo -n ''; \
		else mkdir $(MBOXHOME)/src ; fi
	@if test -d $(MBOXHOME)/usr ; then echo -n ''; \
		else mkdir $(MBOXHOME)/usr ; fi
	@$(CHOWN) $(MBOXHOME) $(MBOXHOME)/*
	@$(CHGRP) $(MBOXHOME) $(MBOXHOME)/*
	@chmod ug+rwx $(MBOXHOME)/lib
	@chmod o-rwx $(MBOXHOME)/lib
	@chmod ug+rwx $(MBOXHOME)/src
	@chmod o-rwx $(MBOXHOME)/src
	@chmod ug+rwx $(MBOXHOME)/etc
	@chmod o-rwx $(MBOXHOME)/etc
	@chmod ug+rwx $(MBOXHOME)/usr
	@chmod o-rwx $(MBOXHOME)/usr
	@echo 'done.'
	@echo ''


clean:;	
	@echo ''
	@echo -n '- Old stuff is going to be deleted...' 
	@rm -f *.o mbox mbrsh bled xmd mb-daemon bltools.c blgetline.c
	@echo 'done.'
	@echo ''

blgetline.o:	mbox.h patchlevel.h
	@if test -f blgetline.c ; then echo -n '' ; \
		else $(LN) getline.c blgetline.c ; fi
	$(CC) -c $(CFLAGS) blgetline.c

bltools.o:	mbox.h patchlevel.h
	@rm -f bltools.c
	@cat undef.c > bltools.c
	@cat tools.c >> bltools.c
	$(CC) -c $(CFLAGS) bltools.c

bled.o:	mbox.h patchlevel.h
	$(CC) -c $(CFLAGS) -DHILFE="\"$(BLPAGER) $(HELPDIR)/bled.doc"\" bled.c



# For automagic update service (Beta-Testers only) ...
DIFF	 = /usr/bin/cdiff
SRC      = /mbox/src
SRC_ORIG = /mbox/1.6
ADRESSE  = "volkers@unnet.w.open.DE"


diff: $(DIFF_FILES)
	@echo DiffMailer by ralf@heibox.ruhr.sub.org >$@
	@echo Project: ix/MBox 1.6 >>$@
	@echo Adresse: $(ADRESSE)
	@echo Folgende Aenderungen sind in $? vorzunehmen >>$@
	@date >>$@
	@echo >>$@
	@for f in $? ; do \
	echo ----- $$f -----; \
	echo ----- $$f ----- >>$@; \
	$(DIFF) $(SRC)/$$f $(SRC_ORIG) | cat >>$@; \
	done
	@cat diff | mail -s "ix/MBox PATCHES" volkers@unnet.w.open.de


admin.o:		mbox.h defs.h
befehl.o:		mbox.h defs.h
bled.o:			mbox.h defs.h
baudrate.o:		mbox.h defs.h
control.o:		mbox.h defs.h
derror.o:		mbox.h defs.h
faces.o:		mbox.h defs.h
games.o:		mbox.h defs.h
getline.o:		mbox.h defs.h
help.o:			mbox.h defs.h
intro.o:		mbox.h defs.h
lesen:			mbox.h defs.h
lesen2.o:		mbox.h defs.h
loop.o:			mbox.h defs.h
mail.o:			mbox.h defs.h
main.o:			mbox.h defs.h
makro.o:		mbox.h defs.h
mbd.o:			mbox.h defs.h
mbrsh.o:		mbox.h defs.h
misc.o:			mbox.h defs.h
misc2.o:		mbox.h defs.h
nerror.o:		mbox.h defs.h
outdial.o:		mbox.h defs.h
pd.o:			mbox.h defs.h
portinfo.o:		mbox.h defs.h
postfach.o:		mbox.h defs.h
show.o:			mbox.h defs.h
suchen.o:		mbox.h defs.h
tools.o:		mbox.h defs.h
weiterl.o:		mbox.h defs.h
xmd.o:			mbox.h defs.h


