*
* DO NOT CHANGE THIS MAKEFILE DIRECTLY
*
* THERE ARE NO CONFIGURATION PARAMETERS IN THIS FILE
*

#include "config.h"
#undef global
#undef SHELL

#ifndef COMPILER_FLAGS
#define COMPILER_FLAGS
#endif

#ifndef EXTRA_LIB
#define EXTRA_LIB
#endif

#ifndef LOADER_FLAGS
#define LOADER_FLAGS
#endif

#ifndef NNTP
#undef NNTP_EXTRA_LIB
#endif

#ifndef NNTP_EXTRA_LIB
#define NNTP_EXTRA_LIB
#endif

* Symmetry style parallel make

#undef PARALLEL
#ifdef PARALLEL_MAKE
#define PARALLEL &
#else
#define PARALLEL
#endif

#ifdef ACCOUNTING
#define ACCOUNT nnacct
#else
#ifdef AUTHORIZE
#define ACCOUNT nnacct
#else
#define ACCOUNT
#endif
#endif
------------------ MAKE WILL CUT HERE -------------
*
* Notice:  ymakefile is made from xmakefile by the Makefile.
*

CC =	 COMPILER
CPP =	 PREPROC
LDFLAGS = LDEBUG LOADER_FLAGS EXTRA_LIB
CFLAGS = -Iconf COMPILER_FLAGS CDEBUG

*
* Resulting programs
*

BIN_PROG =	nn nnusage nngrab nnstats ACCOUNT
BIN_LINK =	nncheck nnadmin nntidy nngoback nngrep nnpost nnbatch nnview
LIB_PROG =	aux upgrade_rc
#ifdef NOV
MASTER_PROG =	back_act nnspew
NN.1 = nn.1.nov
#else
MASTER_PROG =	nnmaster back_act nnspew
NN.1 = nn.1.nnmaster
#endif

*
* Compilation
*

SHELL = /bin/sh

MASTER = master.o collect.o expire.o proto.o hostname.o \
	global.o options.o active.o db.o nntp.o \
	pack_date.o pack_name.o pack_subject.o news.o digest.o

NN = 	nn.o admin.o proto.o global.o options.o db.o nntp.o \
	init.o variable.o term.o keymap.o macro.o regexp.o \
	menu.o more.o newsrc.o group.o folder.o dir.o aux.o \
	sort.o articles.o sequence.o kill.o active.o fullname.o \
	answer.o reroute.o hostname.o save.o unshar.o decode.o execute.o \
	pack_date.o pack_name.o pack_subject.o news.o digest.o match.o \
	chset.o printconf.o
#ifdef NOV
NOVOBJ = awksplit.o hash.o hdbm.o libnov.o split.o
#else
NOVOBJ =
#endif

ACCT = account.o global.o options.o proto.o hostname.o 


all:	$(BIN_PROG) $(LIB_PROG) $(MASTER_PROG) inst

client: $(BIN_PROG) $(LIB_PROG) inst

master: $(MASTER_PROG) inst

nn:	PARALLEL $(NN) $(NOVOBJ)
	@echo linking nn
	@$(CC) -o nn $(CFLAGS) $(NN) $(NOVOBJ) $(LDFLAGS) TERMLIB NNTP_EXTRA_LIB

nnmaster: PARALLEL $(MASTER)
	@echo linking nnmaster
	@$(CC) -o nnmaster $(CFLAGS) $(MASTER) $(LDFLAGS) NNTP_EXTRA_LIB

nnstats: nnstats.sh prefix
	cat prefix nnstats.sh > nnstats ; chmod +x nnstats

nnusage: nnusage.sh prefix
	cat prefix nnusage.sh > nnusage ; chmod +x nnusage

nngrab:	nngrab.sh prefix
	cat prefix nngrab.sh > nngrab ; chmod +x nngrab

aux:	 aux.sh prefix
	cat prefix aux.sh > aux ; chmod +x aux

upgrade_rc: upgrade_rc.sh prefix
	cat prefix upgrade_rc.sh > upgrade_rc ; chmod +x upgrade_rc

nnacct: PARALLEL $(ACCT)
	@echo linking nnacct
	@$(CC) -o nnacct $(CFLAGS) $(ACCT) $(LDFLAGS)

back_act: back_act.sh prefix
	cat prefix back_act.sh > back_act ; chmod +x back_act

nnspew:	nnspew.sh prefix
	cat prefix nnspew.sh > nnspew ; chmod +x nnspew

prefix:	config.h mkprefix
	./mkprefix prefix < /dev/null > prefix

mkprefix: PARALLEL prefix.o global.o
	$(CC) -o mkprefix $(CFLAGS) prefix.o global.o $(LDFLAGS)

*
* Configuration counter updating
*

update.h:	config.h patchlevel.h Makefile
	@sh -c "[ -f update.h ] || (echo 0 > update.h)"
	@sh -c "expr `cat update.h` + 1 > update1.h && mv update1.h update.h"
	@echo configuration number updated to `cat update.h`

*
* Installation
*

cvt-help:	PARALLEL config.h cvt-help.c
	$(CC) -o cvt-help cvt-help.c $(LDFLAGS)

usercheck:	PARALLEL config.h usercheck.c
	$(CC) -o usercheck usercheck.c $(LDFLAGS)

inst: config.h xmakefile inst.sh cvt-help usercheck mkprefix man/nn.1
	@echo building install script: ./inst
	@./mkprefix full < /dev/null > inst
	@echo BIN_PROG='"'$(BIN_PROG)'"' >> inst
	@echo BIN_LINK='"'$(BIN_LINK)'"' >> inst
	@echo LIB_PROG='"'$(LIB_PROG)'"' >> inst
	@echo MASTER_PROG='"'$(MASTER_PROG)'"' >> inst
	@cat inst.sh >> inst
	@chmod 755 inst

* create the proper man page

man/nn.1:	man/nn.1.nov man/nn.1.nnmaster
	cp -p man/$(NN.1) man/nn.1

*
* Clean -- remove compiled programs
*

clean:
	rm -f $(BIN_PROG) $(LIB_PROG) $(MASTER_PROG) cvt-help usercheck
	rm -f prefix mkprefix inst
	rm -f man/nn.1

*
* dependencies
*

account.o:	account.c account.h config.h global.h execute.h options.h \
		proto.h
active.o:	active.c active.h config.h data.h global.h db.h master.h \
		newsrc.h
admin.o:	admin.c admin.h config.h data.h global.h db.h execute.h \
		group.h keymap.h nn.h proto.h nn_term.h
answer.o:	answer.c answer.h config.h data.h global.h aux.h db.h \
		fullname.h group.h hostname.h init.h keymap.h kill.h \
		match.h news.h nn.h nntp.h options.h printconf.h regexp.h \
		reroute.h nn_term.h variable.h
articles.o:	articles.c articles.h config.h data.h global.h db.h keymap.h \
		kill.h match.h news.h newsrc.h regexp.h sort.h nn_term.h
aux.o:		aux.c aux.h config.h data.h global.h chset.h execute.h \
		keymap.h news.h nn.h nntp.h reroute.h nn_term.h
chset.o:	chset.c chset.h config.h
collect.o:	collect.c collect.h config.h global.h db.h news.h digest.h \
		master.h news.h nntp.h pack_date.h pack_name.h pack_subject.h
db.o:		db.c db.h config.h data.h global.h answer.h articles.h \
		keymap.h libnov.h nntp.h nn_term.h pack_date.h pack_name.h \
		pack_subject.h hash.h newsoverview.h
decode.o:	decode.c decode.h config.h data.h global.h keymap.h save.h \
		nn_term.h
digest.o:	digest.c digest.h config.h data.h global.h debug.h keymap.h \
		news.h pack_name.h nn_term.h
dir.o:		dir.c dir.h config.h data.h global.h articles.h keymap.h \
		nn_term.h
execute.o:	execute.c execute.h config.h data.h global.h folder.h \
		keymap.h nn_term.h
expire.o:	expire.c expire.h config.h global.h db.h keymap.h master.h \
		nntp.h nn_term.h
folder.o:	folder.c folder.h config.h data.h global.h articles.h \
		db.h digest.h dir.h keymap.h match.h menu.h news.h \
		pack_date.h pack_name.h pack_subject.h regexp.h save.h \
		sort.h nn_term.h
fullname.o:	fullname.c fullname.h config.h data.h global.h
global.o:	global.c data.h global.h config.h execute.h keymap.h nn.h \
		patchlevel.h nn_term.h update.h
group.o:	group.c group.h config.h data.h global.h articles.h db.h \
		folder.h keymap.h macro.h match.h menu.h newsrc.h nn.h \
		nntp.h regexp.h sort.h nn_term.h variable.h
hostname.o:	hostname.c hostname.h config.h
init.o:		init.c init.h config.h data.h global.h articles.h admin.h \
		answer.h db.h execute.h folder.h group.h hostname.h \
		keymap.h kill.h macro.h menu.h newsrc.h nn.h printconf.h \
		save.h sequence.h sort.h nn_term.h variable.h
keymap.o:	keymap.c keymap.h config.h data.h global.h init.h nn_term.h
kill.o:		kill.c kill.h config.h data.h global.h db.h keymap.h \
		match.h menu.h regexp.h nn_term.h
macro.o:	macro.c macro.h config.h data.h global.h db.h init.h \
		keymap.h menu.h nn_term.h variable.h
master.o:	master.c master.h config.h global.h active.h collect.h db.h \
		digest.h execute.h expire.h news.h nntp.h options.h proto.h
match.o:	match.c match.h config.h data.h global.h regexp.h
menu.o:		menu.c menu.h config.h data.h global.h articles.h \
		answer.h db.h execute.h folder.h group.h init.h keymap.h \
		kill.h macro.h match.h more.h newsrc.h regexp.h save.h \
		sort.h nn_term.h 
more.o:		more.c more.h config.h data.h global.h articles.h answer.h \
		db.h execute.h folder.h group.h init.h keymap.h kill.h \
		macro.h match.h menu.h news.h regexp.h save.h nn_term.h
news.o:		news.c news.h config.h data.h global.h digest.h more.h nntp.h
newsrc.o:	newsrc.c newsrc.h config.h data.h global.h articles.h \
		active.h db.h keymap.h nn.h options.h regexp.h nn_term.h
nn.o:		nn.c nn.h config.h data.h global.h admin.h answer.h \
		articles.h db.h execute.h folder.h group.h init.h keymap.h \
		kill.h libnov.h macro.h match.h menu.h newsrc.h nntp.h \
		options.h proto.h regexp.h sequence.h nn_term.h
nntp.o:		nntp.c nntp.h config.h data.h global.h fullname.h hash.h \
		hostname.h keymap.h libnov.h nn_term.h patchlevel.h \
		newsoverview.h
options.o:	options.c options.h config.h data.h global.h nn.h variable.h
pack_date.o:	pack_date.c pack_date.h config.h data.h global.h
pack_name.o:	pack_name.c pack_name.h config.h data.h global.h
pack_subject.o:	pack_subject.c pack_subject.h config.h data.h global.h
prefix.o:	prefix.c config.h data.h global.h execute.h
printconf.o:	printconf.c printconf.h config.h data.h global.h
proto.o:	proto.c proto.h config.h data.h global.h hostname.h
regexp.o:	regexp.c regexp.h config.h data.h global.h keymap.h nn_term.h
reroute.o:	reroute.c reroute.h config.h data.h global.h
save.o:		save.c save.h config.h data.h global.h db.h decode.h \
		digest.h folder.h keymap.h more.h news.h nn_term.h unshar.h
sequence.o:	sequence.c sequence.h config.h data.h global.h db.h \
		debug.h keymap.h macro.h nn.h nn_term.h variable.h
sort.o:		sort.c sort.h config.h data.h global.h  articles.h
term.o:		term.c nn_term.h config.h data.h global.h execute.h \
		folder.h keymap.h macro.h nn.h regexp.h
unshar.o:	unshar.c unshar.h config.h data.h global.h keymap.h nn_term.h
variable.o:	variable.c variable.h config.h data.h global.h chset.h \
		folder.h init.h keymap.h regexp.h sort.h nn_term.h

awksplit.o:	awksplit.c awksplit.h config.h split.h
hash.o:		hash.c hash.h config.h hdbm.h
hdbm.o:		hdbm.c hdbm.h config.h hdbmint.h 
libnov.o:	libnov.c libnov.h config.h data.h global.h awksplit.h \
		digest.h hash.h newsoverview.h news.h nntp.h split.h
split.o:	split.c split.h config.h

* link debugging version

nn1:	$(NN)
	$(CC) -o nn1 -Mnn1 $(CFLAGS) $(NN) $(LDFLAGS) TERMLIB NNTP_EXTRA_LIB

nnmaster1: $(MASTER)
	$(CC) -o nnmaster1 -Mnnmaster1 $(CFLAGS) $(MASTER) $(LDFLAGS) NNTP_EXTRA_LIB

lint:
	echo LINTING NN
	lint -Iconf -u $(NN:.o=.c)
*	echo LINTING MASTER
*	lint -Iconf -u $(MASTER:.o=.c)
	echo LINTING NOVOBJ
	lint -Iconf -u $(NOVOBJ:.o=.c)
