#	MDG Multiuser Dungeon Game -- Makefile
#
#	@(#) MDG, Copyright 1990 John C. Gonnerman
#	This program is subject to the general MDG 
#	copyright statement (see enclosed file, Copyright).
#
# Sample Makefile for program - ISC UNIX SysV.
#-------------------------------------------------------------------
CPYRGHT	= MDG, Copyright 1990 John C. Gonnerman
VERSION	= v1.6 (patched ECSC MIPT)

GAMEDIR	= /usr/local/games
MDGDIR	= $(GAMEDIR)/lib/mdgdir

LIBDIR	= 
LIBS	= -linet -ltermlib
INCS	=
DEFS	=

#--- Default C compiler ---
OPTIM   = 
CC      = cc
LD	= cc
CCDEP	= gcc
LDFLAGS = 
STRIP	= true

#--- GNU C compiler - ANSI mode ---
#OPTIM   = -O -fomit-frame-pointer -fcombine-regs -fstrength-reduce -fcaller-saves -finline-functions
#DEBUG	= -g
#CC	= gcc 
#LD	= gcc
#CCDEP	= gcc

#------- End of configurable part of makefile -------#

SHELL	= /bin/sh
INSTALL	= /etc/install
STDTAGS	= all clean depend install optim tags
CPPFLAGS= $(DEFS) $(INCS)
CFLAGS	= $(DEBUG) $(OPTIM) $(CPPFLAGS)

DOBJSA	= dmain.o seg.o monsters.o msghandler.o findplayer.o godpower.o
DOBJSB	= crypt.o players.o random.o combat.o effect.o ranged.o speak.o dmsg.o
DOBJSC	= spells.o improve.o dident.o magic.o traps.o loadconfig.o

GOBJSA	= gmain.o gident.o show.o spells.o 
GOBJSB	= input.o help.o loadconfig.o dayclock.o

SOBJS	= stopdaemon.o loadconfig.o strstr.o

COBJS	= clock.o loadconfig.o

EOBJS	= cmain.o dident.o gident.o spells.o random.o crypt.o

IOBJS	= ident.o strstr.o

VOBJS	= asc2bin.o crypt.o

OBJS	= $(DOBJSA) $(DOBJSB) $(DOBJSC)	$(GOBJSA) $(GOBJSB)\
	  $(SOBJS) $(EOBJS) $(IOBJS) $(VOBJS)

SRCS	= $(DOBJSA:.o=.c) $(DOBJSB:.o=.c) $(DOBJSC:.o=.c)\
	  $(GOBJSA:.o=.c) $(GOBJSB:.o=.c) $(SOBJS:.o=.c) \
	  $(EOBJS:.o=.c)  $(IOBJS:.o=.c)  $(VOBJS:.o=.c)

PROGS = mdg_daemon mdg mdg_stop mdg_save ident mdc mdg_clock\
	asc2bin bin2asc

FILES = NoCopyright default map.start note.start item.start monster.start

all:	$(PROGS)

optim:
	make DEBUG= LDSTRIP=-s all

mdg_daemon: $(DOBJSA) $(DOBJSB) $(DOBJSC)
	$(CC) $(LDFLAGS) -o mdg_daemon $(DOBJSA) $(DOBJSB) $(DOBJSC) $(LIBS)

mdg:	$(GOBJSA) $(GOBJSB)
	$(CC) $(LDFLAGS) -o mdg $(GOBJSA) $(GOBJSB) $(LIBS)

mdg_clock: $(COBJS)
	$(CC) $(LDFLAGS) -o mdg_clock $(COBJS) $(LIBS)

mdg_save: mdg_stop
	-ln mdg_stop mdg_save

mdg_stop: $(SOBJS)
	$(CC) $(LDFLAGS) -o mdg_stop $(SOBJS) $(LIBS)

mdc:	$(EOBJS)
	$(CC) $(LDFLAGS) -o mdc $(EOBJS) $(LIBS)
	
ident:	$(IOBJS)
	$(CC) $(LDFLAGS) -o ident $(IOBJS) $(LIBS)

asc2bin:$(VOBJS)
	$(CC) $(LDFLAGS) -o asc2bin $(VOBJS) $(LIBS)

bin2asc: asc2bin
	-ln asc2bin bin2asc

clean:
	rm -f $(PROGS) $(OBJS) *.b *[~#] TAGS *.dmp *.out *.inp core

tags:
	etags -t $(SRCS)

install:$(MDGDIR) $(MDGDIR)/bin $(PROGS) files
	$(STRIP) $(PROGS)
	mcs -d -a "@(#) $(CPYRGHT), $(VERSION)" $(PROGS)
	cp $(PROGS) $(MDGDIR)/bin
	(cd $(MDGDIR)/bin; chmod +s mdc mdg_daemon;\
	 rm -f bin2asc; ln asc2bin bin2asc;\
	 rm -f mdg_stop; ln mdg_save mdg_stop)
	cp mdg mdc $(GAMEDIR)

files:	$(MDG_DIR) $(MDGDIR)/players $(FILES)
	cp $(FILES) $(MDGDIR)
	(cd $(MDGDIR); chmod 700 $(FILES))
	asc2bin default $(MDGDIR)/players/default

$(MDGDIR):
	mkdir $(MDGDIR)
	chmod 755 $(MDGDIR)

$(MDGDIR)/bin:
	mkdir $(MDGDIR)/bin
	chmod 750 $(MDGDIR)/bin

$(MDGDIR)/players:
	mkdir $(MDGDIR)/players
	chmod 700 $(MDGDIR)/players

.SUFFIXES: .dep .c

RMDEP:
	@rm -f .depend

depend:	RMDEP $(DOBJSA:.o=.dep) $(DOBJSB:.o=.dep) $(DOBJSC:.o=.dep)\
	$(GOBJSA:.o=.dep) $(GOBJSB:.o=.dep) $(SOBJS:.o=.dep)\
	$(EOBJS:.o=.dep) $(IOBJS:.o=.dep) $(VOBJS:.o=.dep)

.c.dep:
	@echo $*.c
	@$(CCDEP) $(CPPFLAGS) -M $< >>.depend

.c:
	$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@

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

.c.a:
	$(CC) -c $(CFLAGS) $<
	$(AR) $(ARFLAGS) $@ $*.o
	rm -f $*.o

include .depend
