# Makefile for Dungeon Bash

OBJS=astar.o bmagic.o cfgfile.o combat.o display.o hexpi.o loadsave.o main.o map.o misc.o mon1.o mon2.o mon3.o obj1.o obj2.o permobj.o permons.o pmon2.o radiance.o rng.o rooms.o spiralpath.o u.o vector.o vision.o

GAME=dungeonbash
SRCGEN=srcgen
MAJVERS=1
MINVERS=130
PATCHVERS=1

# If you are using a compiler other than g++, you may well need to review the
# compiler options in CXXFLAGS.

CXXFLAGS=-c -g -Wall -Wwrite-strings -Wredundant-decls -DMAJVERS=$(MAJVERS) -DMINVERS=$(MINVERS) -DPATCHVERS=$(PATCHVERS) -D_POSIX_SOURCE -O2 -Werror
LINKFLAGS=-lpanel -lncurses -g

# The following definitions are used for Unixy systems where the administrator
# wants to have a shared playground. You will need to tweak them to match your
# system, and also settings in dbashcfg.hh, if you want to produce a multi-user
# install.
BININSTDIR=/usr/local/games
BININSTUSER=games
BININSTGROUP=bin
BININSTMODE=04755
MANINSTDIR=/usr/local/man
MANINSTMODE=0644
PLAYGROUND=/var/local/dungeonbash
PLAYGROUNDMODE=0755
GLOBALCFGDIR=/etc/dungeonbash
GLOBALCFGDIRMODE=0755

all: $(GAME)

install: all
	install -D -o $(BININSTUSER) -g $(BININSTGROUP) -m $(BININSTMODE) $(GAME) $(BININSTDIR)/$(GAME)
	install -D -m $(MANINSTMODE) man/$(GAME).6 $(MANINSTDIR)/man6/$(GAME).6
	install -D -m $(MANINSTMODE) man/dunbashrc.5 $(MANINSTDIR)/man5/dunbashrc.5
	install -d -o $(BININSTUSER) -g $(BININSTGROUP) -m $(PLAYGROUNDMODE) $(PLAYGROUND)
	install -d -o $(BININSTUSER) -g $(BININSTGROUP) -m $(PLAYGROUNDMODE) $(PLAYGROUND)/save
	install -d -m $(GLOBALCFGDIRMODE) $(GLOBALCFGDIR)

$(GAME): $(OBJS)
	$(CXX) $(OBJS) $(LINKFLAGS) -o $(GAME)

$(SRCGEN): srcgen.o pmparse.o poparse.o
	$(CXX) $^ -o $@

archive: distclean
	(cd .. && tar cvzf dungeonbash-$(MAJVERS).$(MINVERS).$(PATCHVERS).tar.gz -h dungeonbash-$(MAJVERS).$(MINVERS).$(PATCHVERS)/ )

distclean: clean
	-rm -f dunbash.log msglog.txt

clean:
	-rm -f *.o $(GAME) $(SRCGEN) dunbash.sav.gz permons.cc pmonid.hh permobj.cc pobjid.hh core

astar.o: astar.cc monsters.hh dunbash.hh dbashcfg.hh

bmagic.o: bmagic.cc dunbash.hh bmagic.hh pmonid.hh pobjid.hh dbashcfg.hh

cfgfile.o: cfgfile.cc cfgfile.hh

combat.o: combat.cc combat.hh dunbash.hh pmonid.hh pobjid.hh dbashcfg.hh

display.o: display.cc dunbash.hh dbashcfg.hh pobjid.hh pmonid.hh

main.o: main.cc combat.hh dunbash.hh monsters.hh pobjid.hh dbashcfg.hh

map.o: map.cc dunbash.hh dbashcfg.hh

mon1.o: mon1.cc dunbash.hh monsters.hh pmonid.hh pobjid.hh dbashcfg.hh pmonid.hh

mon2.o: mon2.cc dunbash.hh bmagic.hh monsters.hh dbashcfg.hh pmonid.hh

mon3.o: mon3.cc dunbash.hh monsters.hh dbashcfg.hh pmonid.hh

obj1.o: obj1.cc dunbash.hh objects.hh pobjid.hh dbashcfg.hh

obj2.o: obj2.cc  dunbash.hh objects.hh pobjid.hh pmonid.hh dbashcfg.hh

permobj.o: permobj.cc indie.hh dbashcfg.hh

permobj.cc pobjid.hh: permobj.txt $(SRCGEN)
	./$(SRCGEN) -o permobj.txt

permons.o: permons.cc dunbash.hh dbashcfg.hh

permons.cc pmonid.hh: permons.txt $(SRCGEN)
	./$(SRCGEN) -m permons.txt

pmon2.o: pmon2.cc dunbash.hh monsters.hh dbashcfg.hh pmonid.hh

rooms.o: rooms.cc dunbash.hh monsters.hh objects.hh pobjid.hh pmonid.hh rooms.hh

spiralpath.o: spiralpath.cc

u.o: u.cc combat.hh dunbash.hh pmonid.hh pobjid.hh player.hh dbashcfg.hh

vector.o: vector.cc dunbash.hh dbashcfg.hh

vision.o: vision.cc dunbash.hh player.hh monsters.hh dbashcfg.hh

srcgen.o: srcgen.cc pobj1.hh pmon1.hh dbashcfg.hh

spiralpath.cc: $(SRCGEN)
	./$(SRCGEN) -s

# vim:noexpandtab:ts=8
