# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#

ROOT    = ..
SHELL   = /bin/sh

#
# Pieces and other resources directories, and engine and tools directories.
#
PIECES	= ./Pieces
LABELS	= ./Labels
BUTTONS	= ./Buttons
MISC	= ./Misc
ENGINE	= ./Engine
TOOLS	= ./Tools
PNGCACHE= pngcache.zip

#
# Standard method to compile .inf files.
#
INFORM_OPTS	= -~S
GLULX_INFORM	= $(TOOLS)/inform
GLULX_FLAGS	= '$$MAX_STATIC_DATA=200000' '$$MAX_ARRAYS=256'
.SUFFIXES:
.SUFFIXES:	.inf .ulx
.inf.ulx:
	$(GLULX_INFORM) $(INFORM_OPTS) $(GLULX_FLAGS) $<

#
# List of all image resources required.
#
IMAGES	=  PIC1  PIC2							\
	   PIC3  PIC4  PIC5  PIC6  PIC7  PIC8  PIC9  PIC10 PIC11	\
	   PIC12 PIC13 PIC14 PIC15 PIC16 PIC17 PIC18 PIC19 PIC20	\
	   PIC21 PIC22 PIC23 PIC24 PIC25 PIC26 PIC27 PIC28 PIC29	\
	   PIC30 PIC31 PIC32 PIC33 PIC34 PIC35 PIC36 PIC37 PIC38	\
	   PIC39 PIC40 PIC41 PIC42 PIC43 PIC44 PIC45 PIC46 PIC47	\
	   PIC48 PIC49 PIC50 PIC51 PIC52 PIC53 PIC54 PIC55 PIC56	\
	   PIC57 PIC58 PIC59 PIC60 PIC61 PIC62 PIC63 PIC64 PIC65	\
	   PIC66							\
	   PIC67 PIC68 PIC69 PIC70 PIC71 PIC72 PIC73 PIC74 PIC75	\
	   PIC76 PIC77 PIC78 PIC79 PIC80 PIC81 PIC82 PIC83 PIC84	\
	   PIC85 PIC86 PIC87 PIC88 PIC89 PIC90 PIC91			\
	   PIC92 PIC93 PIC94 PIC95 PIC96

#
# Default make target.
#
default:	all

#
# Copy image resources.
#
PIC1:	$(PIECES)/sq32w.png
	cp $< $@
PIC2:	$(PIECES)/sq32b.png
	cp $< $@
PIC3:	$(PIECES)/wk32n.png
	cp $< $@
PIC4:	$(PIECES)/wq32n.png
	cp $< $@
PIC5:	$(PIECES)/wr32n.png
	cp $< $@
PIC6:	$(PIECES)/wb32n.png
	cp $< $@
PIC7:	$(PIECES)/wn32n.png
	cp $< $@
PIC8:	$(PIECES)/wp32n.png
	cp $< $@
PIC9:	$(PIECES)/bk32n.png
	cp $< $@
PIC10:	$(PIECES)/bq32n.png
	cp $< $@
PIC11:	$(PIECES)/br32n.png
	cp $< $@
PIC12:	$(PIECES)/bb32n.png
	cp $< $@
PIC13:	$(PIECES)/bn32n.png
	cp $< $@
PIC14:	$(PIECES)/bp32n.png
	cp $< $@
PIC15:	$(PIECES)/wk32w.png
	cp $< $@
PIC16:	$(PIECES)/wq32w.png
	cp $< $@
PIC17:	$(PIECES)/wr32w.png
	cp $< $@
PIC18:	$(PIECES)/wb32w.png
	cp $< $@
PIC19:	$(PIECES)/wn32w.png
	cp $< $@
PIC20:	$(PIECES)/wp32w.png
	cp $< $@
PIC21:	$(PIECES)/bk32w.png
	cp $< $@
PIC22:	$(PIECES)/bq32w.png
	cp $< $@
PIC23:	$(PIECES)/br32w.png
	cp $< $@
PIC24:	$(PIECES)/bb32w.png
	cp $< $@
PIC25:	$(PIECES)/bn32w.png
	cp $< $@
PIC26:	$(PIECES)/bp32w.png
	cp $< $@
PIC27:	$(PIECES)/wk32b.png
	cp $< $@
PIC28:	$(PIECES)/wq32b.png
	cp $< $@
PIC29:	$(PIECES)/wr32b.png
	cp $< $@
PIC30:	$(PIECES)/wb32b.png
	cp $< $@
PIC31:	$(PIECES)/wn32b.png
	cp $< $@
PIC32:	$(PIECES)/wp32b.png
	cp $< $@
PIC33:	$(PIECES)/bk32b.png
	cp $< $@
PIC34:	$(PIECES)/bq32b.png
	cp $< $@
PIC35:	$(PIECES)/br32b.png
	cp $< $@
PIC36:	$(PIECES)/bb32b.png
	cp $< $@
PIC37:	$(PIECES)/bn32b.png
	cp $< $@
PIC38:	$(PIECES)/bp32b.png
	cp $< $@
PIC39:	$(LABELS)/1.png
	cp $< $@
PIC40:	$(LABELS)/2.png
	cp $< $@
PIC41:	$(LABELS)/3.png
	cp $< $@
PIC42:	$(LABELS)/4.png
	cp $< $@
PIC43:	$(LABELS)/5.png
	cp $< $@
PIC44:	$(LABELS)/6.png
	cp $< $@
PIC45:	$(LABELS)/7.png
	cp $< $@
PIC46:	$(LABELS)/8.png
	cp $< $@
PIC47:	$(LABELS)/a.png
	cp $< $@
PIC48:	$(LABELS)/b.png
	cp $< $@
PIC49:	$(LABELS)/c.png
	cp $< $@
PIC50:	$(LABELS)/d.png
	cp $< $@
PIC51:	$(LABELS)/e.png
	cp $< $@
PIC52:	$(LABELS)/f.png
	cp $< $@
PIC53:	$(LABELS)/g.png
	cp $< $@
PIC54:	$(LABELS)/h.png
	cp $< $@
PIC55:	$(LABELS)/dash.png
	cp $< $@
PIC56:	$(LABELS)/eq.png
	cp $< $@
PIC57:	$(LABELS)/hash.png
	cp $< $@
PIC58:	$(LABELS)/plus.png
	cp $< $@
PIC59:	$(LABELS)/x.png
	cp $< $@
PIC60:	$(LABELS)/l0.png
	cp $< $@
PIC61:	$(LABELS)/lk.png
	cp $< $@
PIC62:	$(LABELS)/lq.png
	cp $< $@
PIC63:	$(LABELS)/lr.png
	cp $< $@
PIC64:	$(LABELS)/lb.png
	cp $< $@
PIC65:	$(LABELS)/ln.png
	cp $< $@
PIC66:	$(LABELS)/err.png
	cp $< $@
PIC67:	$(BUTTONS)/l1.png
	cp $< $@
PIC68:	$(BUTTONS)/l2.png
	cp $< $@
PIC69:	$(BUTTONS)/l3.png
	cp $< $@
PIC70:	$(BUTTONS)/l4.png
	cp $< $@
PIC71:	$(BUTTONS)/l5.png
	cp $< $@
PIC72:	$(BUTTONS)/l6.png
	cp $< $@
PIC73:	$(BUTTONS)/l7.png
	cp $< $@
PIC74:	$(BUTTONS)/l8.png
	cp $< $@
PIC75:	$(BUTTONS)/cw.png
	cp $< $@
PIC76:	$(BUTTONS)/cb.png
	cp $< $@
PIC77:	$(BUTTONS)/nu.png
	cp $< $@
PIC78:	$(BUTTONS)/nd.png
	cp $< $@
PIC79:	$(BUTTONS)/uu.png
	cp $< $@
PIC80:	$(BUTTONS)/ud.png
	cp $< $@
PIC81:	$(BUTTONS)/qu.png
	cp $< $@
PIC82:	$(BUTTONS)/qd.png
	cp $< $@
PIC83:	$(BUTTONS)/lu.png
	cp $< $@
PIC84:	$(BUTTONS)/ld.png
	cp $< $@
PIC85:	$(BUTTONS)/su.png
	cp $< $@
PIC86:	$(BUTTONS)/sd.png
	cp $< $@
PIC87:	$(BUTTONS)/bu.png
	cp $< $@
PIC88:	$(BUTTONS)/bd.png
	cp $< $@
PIC89:	$(MISC)/glkchessb.png
	cp $< $@
PIC90:	$(MISC)/gpl.png
	cp $< $@
PIC91:	$(MISC)/click.png
	cp $< $@
PIC92:	$(MISC)/gameover.png
	cp $< $@
PIC93:	$(MISC)/gamedraw.png
	cp $< $@
PIC94:	$(MISC)/saving.png
	cp $< $@
PIC95:	$(MISC)/loading.png
	cp $< $@
PIC96:	$(MISC)/loadfail.png
	cp $< $@

#
# Build the image resource cache only if absent.  Mostly it'll just be
# part of the source distribution.  Then unzip it to get images.
#
images:
	@if [ ! -f $(PNGCACHE) ]; then					\
		cd $(PIECES); $(MAKE) all; cd ..;			\
		cd $(LABELS); $(MAKE) all; cd ..;			\
		cd $(BUTTONS); $(MAKE) all; cd ..;			\
		cd $(MISC); $(MAKE) all; cd ..;				\
		for pic in $(IMAGES); do				\
			[ -f $$pic ] || $(MAKE) $$pic;			\
		done;							\
		zip -9 $(PNGCACHE) $(IMAGES);				\
	fi
	unzip -qqu $(PNGCACHE)

#
# Build blorbtar if needed.
#
$(TOOLS)/blorbtar:
	cd $(TOOLS) && $(MAKE)

#
# Targets.
#
all:	glkchess.blb

glkchess.blb:	STORY0 images $(TOOLS)/blorbtar
	$(TOOLS)/blorbtar c $@ STORY0 $(IMAGES)

mscp.h:	$(ENGINE)/mscp.inf
	cp $< $@

glkboard.ulx:	glkboard.inf mscp.h infglk.h

STORY0:	glkboard.ulx
	cp $< $@

clean:
	rm -f STORY0 PIC* GLKCHESS.PGN GLKCHESS.BAK
	rm -f *.ulx *.blb

distclean:	clean
	cd $(PIECES) && $(MAKE) clean
	cd $(LABELS) && $(MAKE) clean
	cd $(BUTTONS) && $(MAKE) clean
	cd $(MISC) && $(MAKE) clean
	cd $(ENGINE) && $(MAKE) clean
	cd $(TOOLS) && $(MAKE) clean

maintainer-clean:	distclean
	rm -f glkchess_src.zip glkchess.zip
	rm -f pngcache.zip
	rm -f mscp.h

#
# Distribution target.
#
dist:
	$(MAKE) maintainer-clean all
	zip -9 glkchess.zip glkchess.blb glkchess.gif README COPYING
	$(MAKE) distclean
	zip -9 -r glkchess_src.zip * -x glkchess.zip
