#ifndef XCOMM
#define XCOMM #
#endif

XCOMM Copyright (C) 1993 Nathan Sidwell
XCOMM RCS $Id: Imakefile,v 4.57 1995/12/22 11:32:07 nathan Exp $

XCOMM specify if this is a transputer target
XCOMM #define transputerbuild 1

XCOMM For full details of the switches herein, read the README file
XCOMM Imake file for xmris V4.04 23 July 1995
VERSION = 4.04
APP = xmris

/* Imake compatibility */
#ifndef MakeDir
#define MakeDir(dir)	mkdir dir
#endif

#ifndef InstallManPageAliases
#define InstallManPageAliases(name,dir,target) \
install.man :: @@\
	ln -s ./name.$(MANSUFFIX) $(DESTDIR)dir/target.$(MANSUFFIX) @@
#endif

#ifndef NullParameter
#define NullParameter
#endif

/* to inhibit app defaults installation */
/* #undef InstallAppDefFiles */

XCOMM compiler options
XCOMM
#if HasGcc
EXTRACCOPTIONS = -Wall -Wpointer-arith -Wwrite-strings -Wtraditional
#endif /* HasGcc */
#if defined(LinuxArchitecture)
#define STATICDEBUG -static
#else
#define STATICDEBUG
#endif
XCOMM Is it a knr compiler which _doesn't_ have void?
KNR = 
XCOMM KNR = -DSTRICTKNR
XCOMM do you trust the code?
XCOMM NDEBUG =
XCOMM NDEBUG = -DNDEBUG
XCOMM Allow debugging?
XCOMM CDEBUGFLAGS = -g STATICDEBUG
XCOMM debug event loop?
XCOMM CDEBUGFLAGS += -DDEBUGEVENTLOOP
#ifdef HPArchitecture
CCOPTIONS = -Aa -D_HPUX_SOURCE
EXTRA_LOAD_FLAGS = -lV3
#endif

XCOMM system environment
XCOMM
XCOMM don't you have gettimeofday?
TIME =
XCOMM TIME = -DUSETIME
XCOMM don't you have lockf or flock?
LOCK =
LOCK = -DUSELOCKFILE

XCOMM game defaults, you probably only want to alter the SCORE
XCOMM
/* You must specify a fixed width font that exists. */
/* #define thefont "-*-courier-*-r-*-*-18-*-*-*-m-*-*-*" */
XCOMM where is the high score file?
XCOMM SCORE = $(LOCAL)/lib/$(APP)
SCORE = $(LIBDIR)/$(APP)
/* to install default gardens not in app_defaults/$(APP)
/* #define InstallDefaultGardens $(SCORE)/gardens */

XCOMM The following defines are needed for some implementations and/or sites.
XCOMM It is xmkmf's job to get these right in the first place.
XCOMM If you have to declare any of these, X may not be installed correctly.
XCOMM
XCOMM DEC station 5000 appears to require these includes
XCOMM STD_INCLUDES = -I/usr/include/mit
XCOMM and they require these two libraries changed
XCOMM XLIB = -lXext-mit -lX11-mit
XCOMM required for setuid, try one or the other, (the first is better)
XCOMM EXTRA_LOAD_FLAGS = -R$(USRLIBDIR)$${LD_RUN_PATH+\:$$LD_RUN_PATH}
XCOMM EXTRA_LOAD_FLAGS = -static
XCOMM some X implementations and openwindows require the maths library
XCOMM MATHSLIB = -lm

XCOMM install parameters
XCOMM
#if transputerbuild
XCOMM open access on the score file, 'cos transputers can't do setuid
INSTSCOREFLAGS = -m 777
#else
XCOMM owner and access rights for executable & score directory
XCOMM these are set for a setuid xmris
OWNER = -o games
INSTSCOREFLAGS = $(OWNER) -m 755
INSTMRISFLAGS = $(OWNER) $(INSTUIDFLAGS)
XCOMM normal install locations
THEBINDIR = $(BINDIR)
THEMANDIR = $(MANDIR)
XCOMM for open access you want 777 and $(INSTPGMFLAGS),
XCOMM (the personal score files go in users' home dirs.)
XCOMM INSTSCOREFLAGS = -m 777
XCOMM INSTMRISFLAGS = $(INSTPGMFLAGS)
XCOMM If you're not installing in the default locations
XCOMM DESTDIR = 
XCOMM THEBINDIR = $(LOCAL)/bin
XCOMM THEMANDIR = $(LOCAL)/man/man6
#endif /* transputerbuild */

#ifndef thefont
#define thefont "-*-courier-*-r-*-*-18-*-*-*-m-*-*-*"
#else
XLSFONT = xlsfont
#endif /* thefont */
FONT = thefont

#ifndef InstallDefaultGardens
#ifdef InstallAppDefFiles
#define InstallDefaultGardens $(DESTDIR)/$(XAPPLOADDIR)/$(APP)
#endif
#endif

#if transputerbuild
#define object tco
XCOMM transputer tools
TOOLSET = /inmos/prod/d4314a
ICC = $(TOOLSET)/tools/icc -WT
ILINK = $(TOOLSET)/tools/ilink
ICOLLECT = $(TOOLSET)/tools/icollect
ILINKOPT = -f startup.lnk
IINCLUDE = $(TOOLSET)/libs/
IXINCLUDE = /inmos/prod/iq/f011a/libs/ /inmos/prod/iq/f011a/include/
ITCPIPINCLUDE = /inmos/swgprod/s507b/libs/c/
ISEARCH = $(IINCLUDE) $(IXINCLUDE) $(ITCPIPINCLUDE)
IXLIBS = iXt.lib iXmu.lib iXext.lib iXlib.lib iXau.lib iXc.lib
ILIBS = isockc.lib libc.lib
TRANSPUTER = -t8
ICFLAGS = -DTRANSPUTER $(ICDEBUGFLAGS) $(DEFINES)
XCOMM Unfortunately -O for the inmos compiler specifies output file, not optimize
XCOMM ICDEBUGFLAGS = -g
.SUFFIXES : .tco

.c.tco :
	ISEARCH="$(ISEARCH)" $(ICC) $(TRANSPUTER) $(ICFLAGS) $(OUTPUT_OPTION) $<

#else
#define object o
#endif /* transputerbuild */

XCOMM default args for RCS ci and co
XCOMM override from the command line to do other things
CIFLAGS = -u
COFLAGS = -l
RCSFLAGS =

DEFINES = $(EXTRACCOPTIONS) -DFONT_NAME='$(FONT)' $(NDEBUG) \
	-DSCORE_DIR='"$(SCORE)"' $(LOCK) $(TIME) $(KNR) -DSCROLLBARBUGFIX
LOCAL_LIBRARIES = $(XAWLIB) $(XTOOLLIB) $(XMULIB) $(XLIB) $(MATHSLIB)
DEPLIBS = $(DEPXLIB)

XCOMM filenames or stems
COMMONHDRS = patchlevel.h ansiknr.h defcom.h common.h
MRISHDRS = xmris.h defmris.h
MREDHDRS = xmred.h defmred.h
COMMONSRCS = defcom.c makecom.c
GARDENS = alphabet.gdn digits.gdn puzzle.gdn xmred.gdn
FILES = CHANGES CHANGES.4.01 CHANGES.4.02 CHANGES.4.03 CHANGES.4.04 \
	README COPYRIGHT Imakefile \
	xmris.man xmred.man Xmris-ad.src
MRISSRCS = apple.c defmris.c demo.c draw.c makemris.c \
	monster.c move.c player.c scoring.c timer.c xmris.c
MRISOBJS = $(MRISSRCS:.c=.object)
SCRAMSRCS = scram.c
SCRAMOBJS = $(SCRAMSRCS:.c=.o)
WIDGETSRCS = Drag.c Icon.c PixmapList.c
WIDGETOBJS = $(WIDGETSRCS:.c=.object)
WIDGETHDRS = $(WIDGETSRCS:.c=.h)
MREDSRCS = all.c control.c defmred.c dialogs.c garden.c makemred.c \
	menubar.c xmred.c
MREDOBJS = $(MREDSRCS:.c=.object)
XCOMM name all the sprites -- these are root names
APPLE = bitmaps/apple/apldcy.r bitmaps/apple/aplnorm.r \
	bitmaps/apple/aplrock.r bitmaps/apple/aplrot.r \
	bitmaps/apple/aplspl.r bitmaps/apple/gstnorm.r \
	bitmaps/apple/gstrock.r bitmaps/apple/aplsmall.r \
	bitmaps/apple/bigedge.r bitmaps/apple/smledge.r
BOARD = bitmaps/board/cherry.r bitmaps/board/digits.r \
	bitmaps/board/seat.r bitmaps/board/ball.r
CHOMP = bitmaps/chomp/hchmpc.r bitmaps/chomp/hchmpo.r \
	bitmaps/chomp/schmpc.r bitmaps/chomp/schmpo.r
DRONE = bitmaps/drone/hdronw1.r bitmaps/drone/hdronw2.r \
	bitmaps/drone/hdronf.r \
	bitmaps/drone/sdronw1.r bitmaps/drone/sdronw2.r \
	bitmaps/drone/sdronf.r
ICON = bitmaps/icon/solidi.r bitmaps/icon/shelli.r \
	bitmaps/icon/solidm.r bitmaps/icon/shellm.r \
	bitmaps/icon/solidr.r bitmaps/icon/shellr.r \
	bitmaps/icon/solids.r bitmaps/icon/shells.r \
	bitmaps/icon/solidt.r bitmaps/icon/shellt.r
MUNCH = bitmaps/munch/hmnchw1.r bitmaps/munch/hmnchw2.r \
	bitmaps/munch/hmnchf.r \
	bitmaps/munch/smnchw1.r bitmaps/munch/smnchw2.r \
	bitmaps/munch/smnchf.r
NORMAL = bitmaps/normal/hnormw1.r bitmaps/normal/hnormw2.r \
	bitmaps/normal/hnormf.r bitmaps/normal/hden.r \
	bitmaps/normal/snormw1.r bitmaps/normal/snormw2.r \
	bitmaps/normal/snormf.r bitmaps/normal/sden.r
PLAYER = bitmaps/player/hplyrf.r \
	bitmaps/player/hplyrh1.r bitmaps/player/hplyrh2.r \
	bitmaps/player/hplyrp1.r bitmaps/player/hplyrp2.r \
	bitmaps/player/hplyrs1.r bitmaps/player/hplyrs2.r \
	bitmaps/player/hplyrw1.r bitmaps/player/hplyrw2.r \
	bitmaps/player/splyrf.r \
	bitmaps/player/splyrp1.r bitmaps/player/splyrp2.r \
	bitmaps/player/splyrs1.r bitmaps/player/splyrs2.r \
	bitmaps/player/splyrw1.r bitmaps/player/splyrw2.r \
	bitmaps/player/splyrd1.r bitmaps/player/splyrd2.r \
	bitmaps/player/splyrh1.r bitmaps/player/splyrh2.r
PRIZE = bitmaps/prize/cake.r bitmaps/prize/spanner.r \
	bitmaps/prize/brolly.r bitmaps/prize/mushrm.r bitmaps/prize/clock.r \
	bitmaps/prize/gem1.r bitmaps/prize/gem2.r bitmaps/prize/gem3.r
XTRA = bitmaps/xtra/hxtraf.r bitmaps/xtra/hxtraw1.r bitmaps/xtra/hxtraw2.r \
	bitmaps/xtra/sxtraf.r bitmaps/xtra/sxtraw1.r bitmaps/xtra/sxtraw2.r \
	bitmaps/xtra/xtrbold.r bitmaps/xtra/xtrfaint.r
EDIT = bitmaps/edit/bigearw.r bitmaps/edit/bigsarw.r \
	bitmaps/edit/smlearw.r bitmaps/edit/smlsarw.r bitmaps/edit/path.r \
	bitmaps/edit/red.r bitmaps/edit/green.r bitmaps/edit/blue.r \
	bitmaps/edit/include.r bitmaps/edit/iconi.r bitmaps/edit/boardi.r \
	bitmaps/edit/warnon.r bitmaps/edit/warnoff.r
BITMAPS = bitmaps/bitmaps/edge.r bitmaps/bitmaps/fill0.r \
	bitmaps/bitmaps/fill1.r bitmaps/bitmaps/fill2.r \
	bitmaps/bitmaps/fill3.r bitmaps/bitmaps/rect.r \
	bitmaps/bitmaps/oblong.r bitmaps/bitmaps/mris.r \
	bitmaps/bitmaps/msit.r bitmaps/bitmaps/mred.r \
	bitmaps/bitmaps/ghosting.r
ALLFILES = $(FILES) $(GARDENS) $(COMMONHDRS) $(MRISHDRS) $(MREDHDRS) \
	$(COMMONSRCS) $(MRISSRCS) $(SCRAMSRCS) $(MREDSRCS) \
	$(WIDGETSRCS) $(WIDGETHDRS) \
	$(APPLE:.r=.bw) $(APPLE:.r=.rgb) $(BOARD:.r=.bw) $(BOARD:.r=.rgb) \
	$(CHOMP:.r=.bw) $(CHOMP:.r=.rgb) $(DRONE:.r=.bw) $(DRONE:.r=.rgb) \
	$(ICON:.r=.bw) $(ICON:.r=.rgb) $(MUNCH:.r=.bw) $(MUNCH:.r=.rgb) \
	$(NORMAL:.r=.bw) $(NORMAL:.r=.rgb) $(PLAYER:.r=.bw) $(PLAYER:.r=.rgb) \
	$(PRIZE:.r=.bw) $(PRIZE:.r=.rgb) $(XTRA:.r=.bw) $(XTRA:.r=.rgb) \
	$(EDIT:.r=.bw) $(EDIT:.r=.rgb) $(BITMAPS:.r=.h)

XCOMM using alltarget can cause gnumake to try and make a target called all.
XCOMM the reason is the All Target macro has no rules, so gnumake tries
XCOMM to find an implicit one. Other makes just give up.
all :: initialize
	@echo "NOTE:You might get lots of warnings about discarding const from"
	@echo "NOTE:pointer target type. Ignore these. It's because the X header"
	@echo "NOTE:files aren't const correct. Fiddle with XrmOptionDescRec in"
	@echo "NOTE:Xresource.h and String in Intrinsic.h by adding an _Xconst."
	@#keep gnumake happy

#if transputerbuild
all :: xmris.btl xmred.btl
	@#keep gnumake happy

#else
all :: xmris xmred
	@#keep gnumake happy

#endif /* transputerbuild */
all :: README.xmris README.xmred Xmris.ad
	@#keep gnumake happy

XCOMM rules to make sure the initialize thing is done
clean :: initialize
	@#keep gnumake happy

install :: initialize
	@#keep gnumake happy

XCOMM xmris build
#if transputerbuild
xmris.btl : xmris.lku
	$(ICOLLECT) -t xmris.lku

xmris.lku : $(MRISOBJS)
	$(ILINK) $(TRANSPUTER) $(MRISOBJS) $(ILINKOPT) -o xmris.lku \
	  $(IXLIBS) $(ILIBS)

clean ::
	$(RM) xmris.lku xmris.cfb

#else
NormalProgramTarget(xmris,$(MRISOBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),)


InstallProgramWithFlags(xmris,$(THEBINDIR),$(INSTMRISFLAGS))

install :: $(THEBINDIR)/xmris
	$(RM) $(THEBINDIR)/xmsit
	$(LN) ./xmris $(THEBINDIR)/xmsit

#endif /* transputerbuild */

XCOMM xmred build
#if transputerbuild
xmred.btl : xmred.lku
	$(ICOLLECT) -t xmred.lku

xmred.lku : $(MREDOBJS)
	$(ILINK) $(TRANSPUTER) $(MREDOBJS) $(ILINKOPT) -o xmred.lku \
	  $(IXLIBS) $(ILIBS)

clean ::
	$(RM) xmred.lku xmred.cfb

#else
NormalProgramTarget(xmred,$(MREDOBJS) $(WIDGETOBJS),$(DEPLIBS),$(LOCAL_LIBRARIES) -lm,)

InstallProgram(xmred,$(THEBINDIR))

#endif /* transputerbuild */
#if !transputerbuild
XCOMM manual pages
README.xmris : xmris.man
	$(RM) README.xmris
	nroff -man xmris.man > README.xmris

README.xmred : xmred.man
	$(RM) README.xmred
	nroff -man xmred.man > README.xmred

InstallManPage(xmris,$(THEMANDIR))

InstallManPageAliases(xmris,$(THEMANDIR),xmsit)

InstallManPage(xmred,$(THEMANDIR))

#endif /* transputerbuild */
XCOMM application resource files
InstallAppDefaults(Xmris)

Xmris.ad : Xmris-ad.src
	sed -e 's@SCORE@$(SCORE)@' -e s@FONT@$(FONT)@ < Xmris-ad.src > Xmris.ad

XCOMM score directory install
install ::
	MakeDir($(SCORE))
	@#not all $(INSTALL) have a -d flag, have to do it explicitly
	@echo installing $(INSTSCOREFLAGS) $(SCORE)
	@set -- $(INSTSCOREFLAGS) ; \
	while [ $$# -ne 0 ] ; \
	do \
	case "$$1" in \
	"-o") shift ; chown $$1 $(SCORE) ; echo owner is $$1 ;; \
	"-m") shift ; chmod $$1 $(SCORE) ;; \
	"-g") shift ; chgrp $$1 $(SCORE) ; echo group is $$1 ;; \
	*) echo unknown option '$$1' ;; \
	esac ; \
	shift ; \
	done

#ifdef InstallDefaultGardens
XCOMM install default gardens
install :: $(GARDENS)
	MakeDir(InstallDefaultGardens)
	@set dummy $(GARDENS) ; shift ; \
	while [ $$# != 0 ] ; \
	do \
	  (set -x ; $(INSTALL) -c $(INSTAPPFLAGS) $$1 InstallDefaultGardens/$$1) ; \
	  shift ; \
	done
#endif /* InstallDefaultGardens */

XCOMM scram program
NormalProgramTarget(scram,$(SCRAMOBJS),,,)

clean ::
	$(RM) $(MRISOBJS)
	$(RM) Xmris.ad
	$(RM) $(MREDOBJS)
	$(RM) $(WIDGETOBJS)
	$(RM) $(SCRAMOBJS)

XCOMM tar is somewhat complicated because we want it to untar into an xmris
XCOMM subdirectory with the correct version number (ie xmris.4.00)
XCOMM this is done by cd'ing up, creating a link of the correct name to
XCOMM where we are and then tarring the files in here with the directory
XCOMM prefix tacked on. But we don't know the directory name we're in so
XCOMM we have to determine that, and if it is already what we want, then
XCOMM don't make a link
tar : $(ALLFILES) README.xmris README.xmred
	@if [ ! -f Makefile.std ] ; then \
	  echo No Makefile.std, winging it ; \
	  cp Makefile Makefile.std ; \
	elif [ `ls -t Makefile Makefile.std | \
	    sed '2,$$d'` = Makefile ] ; then \
	  echo Warning:Makefile.std is older than Makefile ; \
	fi
	@echo Tarring \& feathering into $(APP).$(VERSION).tgz
	@DIR=`pwd | sed "s+/.*/++"` ; rm="" ; \
	if [ ! -x ../$(APP).$(VERSION) ] ; then \
	  rm="$(RM) ../$(APP).$(VERSION)" ; \
	  $(LN) ./$$DIR ../$(APP).$(VERSION) ; \
	fi ; \
	(cd .. ;  tar cf - `set README.xmris README.xmred Makefile.std \
	    $(ALLFILES) ; \
	  while [ $$# -ne 0 ] ; \
	  do echo $(APP).$(VERSION)/$$1 ; shift ; \
	  done`) | \
	gzip -f > $(APP).$(VERSION).tgz ; \
	$$rm

XCOMM checkin all the checked out files
XCOMM you can use MSG to set the checkin message
checkin : $(ALLFILES)
	@ARGS='$(CIFLAGS)' ; \
	echo Checking in locked files with $${ARGS:-'no options'}
	@ARGS='$(MSG)' ; \
	FILELIST=`set $(ALLFILES) ; \
	  (while [ $$# -ne 0 ] ; \
	  do if [ -w $$1 ] ; then echo $$1 ; fi ; \
	    shift ; \
	  done) | sort` ; \
	if [ -z "$$FILELIST" ] ; then \
	  echo Nothing to do, all up to date ; \
	elif [ 0$${ARGS:+1} -ne 0 ] ; then \
	  echo Label \''$(MSG)'\' ; \
	  ci $(CIFLAGS) -m"$(MSG)" $$FILELIST ; \
	else \
	  ci $(CIFLAGS) $$FILELIST ; \
	fi ; \

XCOMM checkout all the files, with COFLAGS args
checkout :
	@ARGS='$(COFLAGS)' ; \
	echo Checking out all files with $${ARGS:-'no options'}
	@co $(COFLAGS) `set $(ALLFILES) ; \
	  while [ $$# -ne 0 ] ; \
	  do if [ ! -w $$1 ] ; then echo $$1 ; fi ; \
	    shift ; \
	  done`

rcs : checkin
	@ARGS='$(RCSFLAGS)' ; \
	echo RCSing all files with $${ARGS:-'no options'}
	rcs $(RCSFLAGS) $(ALLFILES)

XCOMM upload a tar file into this directory
upload :
	@arc=$(APP).$(VERSION).tgz ; \
	if [ ! -r $$arc ] ; then \
	  arc=$(APP).tgz ; \
	fi ; \
	echo Uploading from tar file $$arc ; \
	echo Locking files about to be uploaded ; \
	for file in `gunzip -c $$arc | tar tf -` ; \
	do \
	  base=`echo $$file | sed 's+^[^/]*/++'` ; \
	  if [ ! -w $$base ] ; then \
	    if [ -r `echo ./$$base | sed 's+/[^/]*$$++'`/RCS/`echo $$base | sed 's+.*/++'`,v ] ; then \
	      co -l $$base ; \
	    fi ; \
	  fi ; \
	done ; \
	echo Commencing upload from $$arc ; \
	DIR=`pwd | sed "s+/.*/++"` ; rm="" ; \
	if [ ! -x ../$(APP).$(VERSION) ] ; then \
	  rm="$(RM) ../$(APP).$(VERSION)" ; \
	  $(LN) ./$$DIR ../$(APP).$(VERSION) ; \
	fi ; \
	(cd .. ; gunzip -c $(APP).$(VERSION)/$$arc | tar xvf -) ; \
	$$rm ; \
	echo Chmoding files which were uploaded ; \
	for file in `gunzip -c $$arc | tar tf -` ; \
	do \
	  chmod +w `echo $$file | sed 's+^[^/]*/++'` ; \
	done ; \
	echo Upload from $$arc complete ; \
	echo Don\'t for get to check them all in now

Makefile.std :: initialize
	cp Makefile Makefile.std
	@echo You may want to edit Makefile.std now

XCOMM these are the object dependencies
$(MRISOBJS) : xmris.h common.h ansiknr.h patchlevel.h

makemris.object : defmris.h defcom.h makecom.c

defmris.object : defmris.h defcom.h defcom.c bitmaps/sprites

draw.object : digits.gdn

$(MREDOBJS) : xmred.h common.h ansiknr.h patchlevel.h

all.object : Drag.h Icon.h PixmapList.h

control.object : Drag.h Icon.h

defmred.object : defmred.h defcom.h defcom.c bitmaps/sprites xmred.gdn

makemred.object : defmred.h defcom.h makecom.c Icon.h PixmapList.h

$(SCRAMOBJS) : ansiknr.h

Drag.object : Drag.h

Icon.object : Drag.h Icon.h

PixmapList.object : PixmapList.h Drag.h

XCOMM dependencies for single files
XCOMM can't use $(@:.o=.c) or similar clever thing, 'cos its incompatible
XCOMM gnumake is clever enough to perform a check out using implicit rules
#define SINGLEDEPEND(root,target,depend) root.target : root.depend @@
SINGLEDEPEND(apple,object,c)
SINGLEDEPEND(defmris,object,c)
SINGLEDEPEND(demo,object,c)
SINGLEDEPEND(draw,object,c)
SINGLEDEPEND(makemris,object,c)
SINGLEDEPEND(monster,object,c)
SINGLEDEPEND(move,object,c)
SINGLEDEPEND(player,object,c)
SINGLEDEPEND(scoring,object,c)
SINGLEDEPEND(timer,object,c)
SINGLEDEPEND(xmris,object,c)
SINGLEDEPEND(scram,object,c)
SINGLEDEPEND(Drag,object,c)
SINGLEDEPEND(Icon,object,c)
SINGLEDEPEND(PixmapList,object,c)
SINGLEDEPEND(all,object,c)
SINGLEDEPEND(control,object,c)
SINGLEDEPEND(defmred,object,c)
SINGLEDEPEND(dialogs,object,c)
SINGLEDEPEND(garden,object,c)
SINGLEDEPEND(makemred,object,c)
SINGLEDEPEND(menubar,object,c)
SINGLEDEPEND(xmred,object,c)
XCOMM sprite rules
SPRITEMARKERS = bitmaps/apple/sprites bitmaps/board/sprites \
	bitmaps/icon/sprites bitmaps/player/sprites bitmaps/normal/sprites \
	bitmaps/munch/sprites bitmaps/xtra/sprites bitmaps/drone/sprites \
	bitmaps/chomp/sprites bitmaps/prize/sprites bitmaps/edit/sprites \
	bitmaps/bitmaps/sprites
clean ::
	$(RM) $(APPLE:.r=.h)
	$(RM) $(BOARD:.r=.h)
	$(RM) $(CHOMP:.r=.h)
	$(RM) $(DRONE:.r=.h)
	$(RM) $(ICON:.r=.h)
	$(RM) $(MUNCH:.r=.h)
	$(RM) $(NORMAL:.r=.h)
	$(RM) $(PLAYER:.r=.h)
	$(RM) $(PRIZE:.r=.h)
	$(RM) $(XTRA:.r=.h)
	$(RM) $(EDIT:.r=.h)
	$(RM) bitmaps/sprites $(SPRITEMARKERS)

XCOMM makes the sprites from the rgb and bw images

bitmaps/sprites : $(SPRITEMARKERS)
	touch $@

bitmaps/apple/sprites : $(APPLE:.r=.h)
	touch $@

bitmaps/board/sprites : $(BOARD:.r=.h)
	touch $@

bitmaps/chomp/sprites : $(CHOMP:.r=.h)
	touch $@

bitmaps/drone/sprites : $(DRONE:.r=.h)
	touch $@

bitmaps/icon/sprites : $(ICON:.r=.h)
	touch $@

bitmaps/munch/sprites : $(MUNCH:.r=.h)
	touch $@

bitmaps/normal/sprites : $(NORMAL:.r=.h)
	touch $@

bitmaps/player/sprites : $(PLAYER:.r=.h)
	touch $@

bitmaps/prize/sprites : $(PRIZE:.r=.h)
	touch $@

bitmaps/xtra/sprites : $(XTRA:.r=.h)
	touch $@

bitmaps/edit/sprites : $(EDIT:.r=.h)
	touch $@

bitmaps/bitmaps/sprites : $(BITMAPS:.r=.h)
	touch $@

XCOMM sprite building rule, again clever make stuff is incompatible 
#define SPRITEBUILD(root,flags,noswap,swap,edge) \
root.h : ./scram root.rgb root.bw					@@\
	./scram root flags noswap + swap + edge

SPRITEBUILD(bitmaps/apple/apldcy,,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/apple/aplnorm,,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/apple/aplrock,,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/apple/aplrot,,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/apple/aplspl,,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/apple/gstnorm,,\
COLOR_APPLE_FAINT COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE,\
COLOR_BACKGROUND COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE,\
COLOR_APPLE_FAINT)

SPRITEBUILD(bitmaps/apple/gstrock,,\
COLOR_APPLE_FAINT COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE,\
COLOR_BACKGROUND COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE,\
COLOR_APPLE_FAINT)

SPRITEBUILD(bitmaps/apple/aplsmall,,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_APPLE_1 COLOR_APPLE_2 COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/apple/bigedge,-s,COLOR_APPLE_FAINT,COLOR_APPLE_FAINT,)

SPRITEBUILD(bitmaps/apple/smledge,-s,COLOR_APPLE_FAINT,COLOR_APPLE_FAINT,)

SPRITEBUILD(bitmaps/board/cherry,+s,\
COLOR_WHITE COLOR_CHERRY COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_CHERRY COLOR_BLACK COLOR_CHERRY_STALK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/board/ball,+n,COLOR_BALL,COLOR_BALL,COLOR_BLACK)

SPRITEBUILD(bitmaps/board/digits,-s,\
COLOR_BACKGROUND COLOR_BLACK,COLOR_BACKGROUND COLOR_WHITE,)

SPRITEBUILD(bitmaps/board/seat,-s,\
COLOR_SEAT COLOR_BLACK,COLOR_SEAT COLOR_WHITE,)

SPRITEBUILD(bitmaps/chomp/hchmpc,,\
COLOR_CHOMP COLOR_BLACK COLOR_WHITE COLOR_CHOMP_LIP COLOR_BLACK COLOR_BLACK,\
COLOR_CHOMP COLOR_CHOMP COLOR_BLACK COLOR_CHOMP_LIP COLOR_BLACK COLOR_WHITE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/chomp/hchmpo,,\
COLOR_CHOMP COLOR_BLACK COLOR_WHITE COLOR_CHOMP_LIP COLOR_BLACK COLOR_BLACK,\
COLOR_CHOMP COLOR_CHOMP COLOR_BLACK COLOR_CHOMP_LIP COLOR_BLACK COLOR_WHITE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/chomp/schmpc,,\
COLOR_WHITE COLOR_CHOMP COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_CHOMP COLOR_CHOMP COLOR_BLACK,)

SPRITEBUILD(bitmaps/chomp/schmpo,,\
COLOR_WHITE COLOR_CHOMP COLOR_CHOMP_TONGUE COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_CHOMP COLOR_CHOMP_TONGUE COLOR_CHOMP COLOR_BLACK,)

SPRITEBUILD(bitmaps/drone/hdronf,,\
COLOR_WHITE COLOR_DRONE COLOR_BLACK COLOR_WHITE,\
COLOR_BLACK COLOR_DRONE COLOR_WHITE COLOR_WHITE,COLOR_BLACK)

SPRITEBUILD(bitmaps/drone/hdronw1,,\
COLOR_WHITE COLOR_DRONE COLOR_BLACK COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK COLOR_DRONE COLOR_WHITE COLOR_WHITE COLOR_BACKGROUND,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/drone/hdronw2,,\
COLOR_WHITE COLOR_DRONE COLOR_BLACK COLOR_WHITE COLOR_BLACK,\
COLOR_BLACK COLOR_DRONE COLOR_WHITE COLOR_WHITE COLOR_BACKGROUND,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/drone/sdronf,,\
COLOR_DRONE COLOR_BLACK COLOR_BLACK,\
COLOR_DRONE COLOR_DRONE COLOR_BLACK,)

SPRITEBUILD(bitmaps/drone/sdronw1,,\
COLOR_WHITE COLOR_DRONE COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_DRONE COLOR_DRONE COLOR_BLACK,)

SPRITEBUILD(bitmaps/drone/sdronw2,,\
COLOR_WHITE COLOR_DRONE COLOR_DRONE_TONGUE COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_DRONE COLOR_DRONE_TONGUE COLOR_DRONE COLOR_BLACK,)

SPRITEBUILD(bitmaps/icon/solidi,-s,COLOR_LETTER_GOT,COLOR_LETTER_GOT,)

SPRITEBUILD(bitmaps/icon/solidm,-s,COLOR_LETTER_GOT,COLOR_LETTER_GOT,)

SPRITEBUILD(bitmaps/icon/solidr,-s,COLOR_LETTER_GOT,COLOR_LETTER_GOT,)

SPRITEBUILD(bitmaps/icon/solids,-s,COLOR_LETTER_GOT,COLOR_LETTER_GOT,)

SPRITEBUILD(bitmaps/icon/solidt,-s,COLOR_LETTER_GOT,COLOR_LETTER_GOT,)

SPRITEBUILD(bitmaps/icon/shelli,-s,COLOR_LETTER_NOT_GOT,COLOR_LETTER_NOT_GOT,)

SPRITEBUILD(bitmaps/icon/shellm,-s,COLOR_LETTER_NOT_GOT,COLOR_LETTER_NOT_GOT,)

SPRITEBUILD(bitmaps/icon/shellr,-s,COLOR_LETTER_NOT_GOT,COLOR_LETTER_NOT_GOT,)

SPRITEBUILD(bitmaps/icon/shells,-s,COLOR_LETTER_NOT_GOT,COLOR_LETTER_NOT_GOT,)

SPRITEBUILD(bitmaps/icon/shellt,-s,COLOR_LETTER_NOT_GOT,COLOR_LETTER_NOT_GOT,)

SPRITEBUILD(bitmaps/munch/hmnchf,,\
COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_BLACK COLOR_WHITE COLOR_BLACK,\
COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_BLACK COLOR_WHITE COLOR_WHITE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/munch/hmnchw1,,\
COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_BLACK COLOR_WHITE COLOR_BLACK COLOR_BLACK,\
COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_MUNCH_2 COLOR_WHITE COLOR_BLACK COLOR_WHITE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/munch/hmnchw2,,\
COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_BLACK COLOR_WHITE COLOR_BLACK COLOR_BLACK,\
COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_MUNCH_2 COLOR_WHITE COLOR_BLACK COLOR_WHITE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/munch/smnchf,,\
COLOR_WHITE COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_MUNCH_1 COLOR_MUNCH_2 \
COLOR_BLACK,)

SPRITEBUILD(bitmaps/munch/smnchw1,,COLOR_WHITE COLOR_MUNCH_1 \
COLOR_MUNCH_2 COLOR_BLACK COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_WHITE COLOR_MUNCH_1 \
COLOR_MUNCH_2 COLOR_BLACK,)

SPRITEBUILD(bitmaps/munch/smnchw2,,\
COLOR_WHITE COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_MUNCH_1 COLOR_MUNCH_2 COLOR_MUNCH_1 COLOR_MUNCH_2 \
COLOR_BLACK,)

SPRITEBUILD(bitmaps/normal/hden,-s,\
COLOR_NORMAL COLOR_NORMAL COLOR_WHITE COLOR_BLACK,\
COLOR_NORMAL COLOR_NORMAL COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/normal/hnormf,-s,\
COLOR_NORMAL COLOR_NORMAL COLOR_WHITE COLOR_BLACK,\
COLOR_NORMAL COLOR_NORMAL COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/normal/hnormw1,-s,\
COLOR_NORMAL COLOR_NORMAL COLOR_WHITE COLOR_BLACK,\
COLOR_NORMAL COLOR_NORMAL COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/normal/hnormw2,-s,\
COLOR_NORMAL COLOR_NORMAL COLOR_WHITE COLOR_BLACK,\
COLOR_NORMAL COLOR_NORMAL COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/normal/sden,,\
COLOR_WHITE COLOR_NORMAL COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_NORMAL COLOR_WHITE COLOR_BLACK,)

SPRITEBUILD(bitmaps/normal/snormf,,\
COLOR_WHITE COLOR_NORMAL COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_NORMAL COLOR_NORMAL COLOR_BLACK,)

SPRITEBUILD(bitmaps/normal/snormw1,,\
COLOR_WHITE COLOR_NORMAL COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_NORMAL COLOR_NORMAL COLOR_BLACK,)

SPRITEBUILD(bitmaps/normal/snormw2,,\
COLOR_WHITE COLOR_NORMAL COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_NORMAL COLOR_NORMAL COLOR_BLACK,)

SPRITEBUILD(bitmaps/player/hplyrf,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrh1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrh2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrp1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND \
COLOR_BLACK,COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND COLOR_WHITE,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrp2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND \
COLOR_BLACK,COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND COLOR_WHITE,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrs1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrs2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrw1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/hplyrw2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BACKGROUND,\
COLOR_PLAYER_BOBBLE COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK \
COLOR_PLAYER_BOOT COLOR_BACKGROUND,COLOR_BLACK)

SPRITEBUILD(bitmaps/player/splyrf,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrp1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrp2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrs1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrs2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrw1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrw2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrd1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrd2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrh1,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/player/splyrh2,,COLOR_PLAYER_BOBBLE \
COLOR_PLAYER COLOR_PLAYER_FACE COLOR_BLACK COLOR_BLACK COLOR_BLACK \
COLOR_BLACK COLOR_PLAYER_BOOT,COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_BLACK COLOR_PLAYER_BOBBLE COLOR_PLAYER \
COLOR_PLAYER_FACE COLOR_PLAYER_BOOT,)

SPRITEBUILD(bitmaps/prize/cake,+s,\
COLOR_CAKE_ICING COLOR_CAKE COLOR_BLACK COLOR_CAKE_JAM,\
COLOR_CAKE_ICING COLOR_CAKE COLOR_BLACK COLOR_CAKE_JAM,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/prize/spanner,+s,COLOR_SPANNER_SHADOW COLOR_SPANNER,\
COLOR_SPANNER_SHADOW COLOR_SPANNER, COLOR_BLACK)

SPRITEBUILD(bitmaps/prize/brolly,+s,\
COLOR_BROLLY_1 COLOR_BROLLY_2 COLOR_BROLLY_HANDLE COLOR_BLACK,\
COLOR_BROLLY_1 COLOR_BROLLY_2 COLOR_BROLLY_HANDLE COLOR_BLACK,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/prize/mushrm,+s,\
COLOR_MUSHROOM_STALK COLOR_MUSHROOM_CAP COLOR_BLACK COLOR_WHITE,\
COLOR_MUSHROOM_STALK COLOR_MUSHROOM_CAP COLOR_BLACK COLOR_WHITE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/prize/clock,+s,\
COLOR_CLOCK_FACE COLOR_BLACK COLOR_CLOCK_BELL COLOR_CLOCK_EDGE,\
COLOR_CLOCK_FACE COLOR_BLACK COLOR_CLOCK_BELL COLOR_CLOCK_EDGE,\
COLOR_BLACK)

SPRITEBUILD(bitmaps/prize/gem1,,COLOR_WHITE COLOR_GEM_1 \
COLOR_GEM_2 COLOR_BLACK COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_GEM_1 COLOR_GEM_2 COLOR_WHITE COLOR_GEM_1 COLOR_GEM_2 \
COLOR_BLACK,)

SPRITEBUILD(bitmaps/prize/gem2,,COLOR_WHITE COLOR_GEM_1 \
COLOR_GEM_2 COLOR_BLACK COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_GEM_1 COLOR_GEM_2 COLOR_WHITE COLOR_GEM_1 COLOR_GEM_2 \
COLOR_BLACK,)

SPRITEBUILD(bitmaps/prize/gem3,,COLOR_WHITE COLOR_GEM_1 \
COLOR_GEM_2 COLOR_BLACK COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_GEM_1 COLOR_GEM_2 COLOR_WHITE COLOR_GEM_1 COLOR_GEM_2 \
COLOR_BLACK,)

SPRITEBUILD(bitmaps/xtra/sxtraf,,\
COLOR_WHITE COLOR_XTRA COLOR_BLACK,COLOR_BLACK COLOR_XTRA COLOR_XTRA,)

SPRITEBUILD(bitmaps/xtra/sxtraw1,,\
COLOR_WHITE COLOR_XTRA COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_XTRA COLOR_WHITE COLOR_XTRA COLOR_BLACK,)

SPRITEBUILD(bitmaps/xtra/sxtraw2,,\
COLOR_WHITE COLOR_XTRA COLOR_BLACK COLOR_BLACK COLOR_BLACK,\
COLOR_WHITE COLOR_XTRA COLOR_WHITE COLOR_XTRA COLOR_BLACK,)

SPRITEBUILD(bitmaps/xtra/hxtraf,-s,\
COLOR_XTRA COLOR_WHITE COLOR_BLACK,COLOR_XTRA COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/xtra/hxtraw1,-s,\
COLOR_XTRA COLOR_WHITE COLOR_BLACK,COLOR_XTRA COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/xtra/hxtraw2,-s,\
COLOR_XTRA COLOR_WHITE COLOR_BLACK,COLOR_XTRA COLOR_BLACK COLOR_WHITE,)

SPRITEBUILD(bitmaps/xtra/xtrbold,-s,\
- COLOR_LETTER_GOT,- COLOR_LETTER_GOT,)

SPRITEBUILD(bitmaps/xtra/xtrfaint,-s,\
- COLOR_LETTER_NOT_GOT,- COLOR_LETTER_NOT_GOT,)

SPRITEBUILD(bitmaps/edit/bigearw,-s,COLOR_APPLE_FAINT,COLOR_APPLE_FAINT,)

SPRITEBUILD(bitmaps/edit/bigsarw,-s,COLOR_APPLE_FAINT,COLOR_APPLE_FAINT,)

SPRITEBUILD(bitmaps/edit/smlearw,-s,COLOR_APPLE_FAINT,COLOR_APPLE_FAINT,)

SPRITEBUILD(bitmaps/edit/smlsarw,-s,COLOR_APPLE_FAINT,COLOR_APPLE_FAINT,)

SPRITEBUILD(bitmaps/edit/path,-s,COLOR_BACKGROUND,COLOR_BACKGROUND,)

SPRITEBUILD(bitmaps/edit/red,-s,COLOR_RED_FORE,COLOR_RED_FORE,)

SPRITEBUILD(bitmaps/edit/green,-s,COLOR_GREEN_FORE,COLOR_GREEN_FORE,)

SPRITEBUILD(bitmaps/edit/blue,-s,COLOR_BLUE_FORE,COLOR_BLUE_FORE,)

SPRITEBUILD(bitmaps/edit/include,-s -c -m,\
COLOR_BACKGROUND COLOR_BORDER COLOR_BACKGROUND COLOR_RED_FORE \
COLOR_BACKGROUND COLOR_BLUE_FORE COLOR_BACKGROUND COLOR_GREEN_FORE,\
COLOR_BACKGROUND COLOR_BORDER COLOR_BACKGROUND COLOR_RED_FORE \
COLOR_BACKGROUND COLOR_BLUE_FORE COLOR_BACKGROUND COLOR_GREEN_FORE,)

SPRITEBUILD(bitmaps/edit/iconi,-s -c -m,COLOR_BACKGROUND COLOR_FOREGROUND,\
COLOR_BACKGROUND COLOR_FOREGROUND,)

SPRITEBUILD(bitmaps/edit/boardi,-s -c -m,COLOR_BACKGROUND COLOR_FOREGROUND,\
COLOR_BACKGROUND COLOR_FOREGROUND,)

SPRITEBUILD(bitmaps/edit/warnon,-s -c -m,COLOR_BACKGROUND COLOR_FOREGROUND,\
COLOR_BACKGROUND COLOR_FOREGROUND,)

SPRITEBUILD(bitmaps/edit/warnoff,-s -c -m,COLOR_BACKGROUND COLOR_FOREGROUND,\
COLOR_BACKGROUND COLOR_FOREGROUND,)

.DONE :
	@echo "Hurrah!"

.FAILED :
	@echo "Bummer!"

XCOMM initialize rule is done before all makes. Not all makes
XCOMM have a .INIT implicit rule, so I don't use that
initialize :
	@echo Checking a few things
	@if [ `ls -t Makefile Imakefile | sed '2,$$d'` = Imakefile ] ; then \
	  echo Warning:Makefile is older than Imakefile ; \
	fi
	@if [ ! -d `echo '$(SCORE)' | sed 's=/[^/]*$$=='` ] ; then \
	  echo The parent of $(SCORE) does not exist ; \
	fi
	@if [ $(FONT) = "" ] ; then true ; \
	elif echo $(FONT) | grep -c -- '-m-.*-.*-.*$$' > /dev/null ; then \
	  if [ "$(XLSFONTS)" = "" -o "$(DISPLAY)" = "" ] ; then \
	    XLSFONTS="" ; \
	  elif [ -x $(XLSFONTS) ] ; then \
	    XLSFONTS=$(XLSFONTS) ; \
	  elif [ -x $(BINDIR)/$(XLSFONTS) ] ; then \
	    XLSFONTS=$(BINDIR)/$(XLSFONTS) ; \
	  elif [ -x /usr/bin/X11/$(XLSFONTS) ] ; then \
	    XLSFONTS=/usr/bin/X11/$(XLSFONTS) ; \
	  else \
	    XLSFONTS="" ; \
	  fi ; \
	  if [ "$$XLSFONTS" = "" ] ; then \
	    true ; \
	  elif [ `$$xlsfonts -o -fn "$(FONT)" 2> /dev/null | wc -l` -eq 0 ] ; then \
	    echo Warning:Font $(FONT) not found ; \
	  fi ; \
	else \
	  echo Warning:Font $(FONT) is not fixed width ; \
	fi
	@echo "Geronimo!"

XCOMM default rule looks for an RCS file to check out
XCOMM not required for gmake, as that already has a rule for it
.DEFAULT :
	@if echo $@ | grep -cv '^/' > /dev/null && \
	  [ -f `echo ./$@ | sed 's+^\(.*/\)\([^/]*\)$$+\1RCS/\2,v+'` ] ; then \
	    co $(COFLAGS) $@ ; \
	else \
	  echo Cannot make $@ and cannot find one made. ; \
	  exit 1 ; \
	fi
