# V-System Hack buildtemplate
# Builds versions for m68k and vax V, plus BSD Unix

VPATH= ../mi

# on some systems the termcap library is in -ltermcap
TERMLIB = -ltermlib

# make hack
#ifdef UNIX
GAME = hack
INCLUDES = -I../$(MACHINE) -I../mi
o=o
#else UNIX
GAME = hack.$(MACHINE)
INCLUDES = -I../$(MACHINE) -I../mi -Dvoid=int -DV_System
o=$(OBJSUFFIX)
#endif UNIX

VHACKCSRC = hack.Decl.c\
	hack.apply.c hack.bones.c hack.c hack.cmd.c hack.do.c\
	hack.do_name.c hack.do_wear.c hack.dog.c hack.eat.c hack.end.c\
	hack.engrave.c hack.fight.c hack.invent.c\
	hack.lev.c hack.main.c hack.makemon.c hack.mhitu.c\
	hack.mklev.c hack.mkmaze.c hack.mkobj.c hack.mkshop.c\
	hack.mon.c hack.monst.c hack.o_init.c hack.objnam.c\
	hack.options.c hack.pager.c hack.potion.c hack.pri.c\
	hack.read.c hack.rip.c hack.rumors.c hack.save.c\
	hack.search.c hack.shk.c hack.shknam.c hack.steal.c\
	hack.termcap.c hack.timeout.c hack.topl.c\
	hack.track.c hack.trap.c hack.tty.c hack.unix.c\
	hack.u_init.c hack.vault.c\
	hack.wield.c hack.wizard.c hack.worm.c hack.worn.c hack.zap.c\
	hack.version.c rnd.c alloc.c

#ifdef UNIX
HACKCSRC = $(VHACKCSRC) hack.ioctl.c
#else
HACKCSRC = $(VHACKCSRC)
#endif UNIX

CSOURCES = $(HACKCSRC) makedefs.c

HSOURCES = hack.h hack.mfndpos.h config.h\
	def.edog.h def.eshk.h def.flag.h def.func_tab.h def.gold.h\
	def.mkroom.h\
	def.monst.h def.obj.h def.objclass.h def.objects.h\
	def.permonst.h def.rm.h def.trap.h def.wseg.h

SOURCES = $(CSOURCES) $(HSOURCES)

AUX = data help hh rumors hack.6 hack.sh

VHOBJ = hack.Decl.$o hack.apply.$o hack.bones.$o hack.$o hack.cmd.$o\
	hack.do.$o hack.do_name.$o hack.do_wear.$o hack.dog.$o hack.eat.$o\
	hack.end.$o hack.engrave.$o hack.fight.$o hack.invent.$o\
	hack.lev.$o hack.main.$o hack.makemon.$o hack.mhitu.$o hack.mklev.$o\
	hack.mkmaze.$o hack.mkobj.$o hack.mkshop.$o hack.mon.$o\
	hack.monst.$o hack.o_init.$o hack.objnam.$o hack.options.$o\
	hack.pager.$o hack.potion.$o hack.pri.$o\
	hack.read.$o hack.rip.$o hack.rumors.$o hack.save.$o\
	hack.search.$o hack.shk.$o hack.shknam.$o hack.steal.$o\
	hack.termcap.$o hack.timeout.$o hack.topl.$o\
	hack.track.$o hack.trap.$o\
	hack.tty.$o hack.unix.$o hack.u_init.$o hack.vault.$o hack.wield.$o\
	hack.wizard.$o hack.worm.$o hack.worn.$o hack.zap.$o\
	hack.version.$o rnd.$o alloc.$o
#ifdef UNIX
HOBJ = $(VHOBJ) hack.ioctl.$o
#else
HOBJ = $(VHOBJ)
#endif

$(GAME): $(HOBJ)
	@echo "Loading ..."
	@$(CC) $(MIFLAGS) $(INCLUDES) $(MDFLAGS) -o $(GAME) $(HOBJ) $(TERMLIB)

# makedefs should be fixed to run under V or Unix.  Problem is
# that we have to arrange to run the appropriate version for the
# machine we are running build on, not the one we are building for!
# For now, we always build and run the Unix version.

../mi/makedefs: makedefs.c
	cc -o ../mi/makedefs makedefs.c

hack.onames.h:	../mi/makedefs def.objects.h
	sh -c "cd ../mi; makedefs > hack.onames.h"


lint: $(HACKCSRC)
# lint cannot have -p here because (i) capitals are meaningful:
# [Ww]izard, (ii) identifiers may coincide in the first six places:
# doweararm() versus dowearring().
# If invoked under Unix, need to sed out bogus error messages about _flsbuf.
#
	@echo $(LINT) -axbh -DLINT $(MIFLAGS) $(INCLUDES) ...
#ifdef UNIX
	@$(LINT) -axbh -DLINT $(MIFLAGS) $(INCLUDES) $< | sed '/_flsbuf/d'
#else UNIX
	@$(LINT) -axbh -DLINT $(MIFLAGS) $(INCLUDES) $<
#endif UNIX

install:
#ifdef UNIX
	install -m 4711 -o games -c -s hack /usr/local/bin
	for file in help hh rumors data ; do \
	  install -m 644 -o games -c $${file} /usr/local/lib/hack ; done
#else UNIX
	$(NETINSTALL) -p $(GAME) $(VSYS)/bin
	$(NETINSTALL) -p "data help hh rumors" $(VSYS)/run/hack
#endif UNIX

clean:
	rm -f *.$o $(GAME) makedefs hack.onames.h date.h

#Correct for slight "build" brain damage
./date.h: date.h
./hack.onames.h: hack.onames.h

date.h:
	rm -f date.h
	../mi/makedate > date.h

depend: $(CSOURCES)
	build $(MFLAGS) hack.onames.h date.h
#ifdef UNIX
	makedep -N -I. -I../mi $<
#else UNIX
	makedep -N -t $(MACHINE) -I. -I../mi $<
#endif UNIX

relink:
	rm -f *.$(MACHINE)
