# BuildSystemHeader added automatically
/**/# $Header: [Imakefile,v 1.1.1.2 93/02/02 15:18:21 sencan Exp ]$
#ifdef MipsArchitecture
#define MIPSASM
#endif

#ifdef MIPSASM
ASMSRCS = cfbglyphcopy.s cfbglyphimage.s \
	  cfbtsrectcopy.s loadstore.s cfbslinecopy.s r4_scrub.s
ASMOBJS = cfbglyphimage.o cfbglyphimage6.o cfbglyphimage8.o cfbglyphimage10.o \
	  cfbglyphimage16.o cfbtsrectcopy.o loadstore.o r4_scrub.o

#else
ASMSRCS = loadstore.s r4_scrub.s
ASMOBJS = loadstore.o r4_scrub.o
#endif

SRCS =	 cfbscrinit.c cfbcmap.c cfbwindow.c cfbgc.c cfbpixmap.c cfbmskbits.c \
	 cfbfgbg.c cfbbstore.c cfbpntwin.c cfbgetsp.c cfbsetsp.c \
	 cfbfillsp.c cfbtilesp.c \
	 cfbbitblt.c bitblt.c cfbplane.c \
	 cfbfillrct.c cfbpntarea.c cfbtilearea.c \
	 cfbpolypnt.c cfbline.c \
	 cfbbres.c cfbpoly.c cfbpolycon.c \
	 cfbzerarc.c cfbfillarc.c \
	 cfbplygblt.c \
	 cfbglyph.c cfbtegblt.c \
	 cfbdraw.c \
	 ${ASMSRCS}

# Try to order .o files so that frequently used ones are all together, and
# thus live on the same pages.  Frequently used is defined as anything that
# writes in copy mode with no planemask per operation.

OBJS =   cfbscrinit.o cfbcmap.o cfbwindow.o cfbgc.o cfbpixmap.o cfbmskbits.o \
	 cfbbstore.o cfbfgbg.o cfbpntwin.o cfbgetsp.o cfbsetsp.o \
	 cfbfillspcopy.o cfbtilespcopy.o \
	 cfbbitblt.o bitbltcopy.o cfbplane.o \
	 cfbfillrct.o cfbpntcopy.o cfbtilecopy.o \
	 cfbpolypntcopy.o cfbline.o cfbsegment.o \
	 cfbbrescopy.o cfbslinecopy.o cfbssegcopy.o \
	 cfbpoly.o cfbpolyconcopy.o \
	 cfbzerarccopy.o cfbfillarccopy.o \
	 cfbpgbcopy.o cfbpgbcopy6.o cfbpgbcopy8.o cfbpgbcopy10.o \
	 cfbpgbcopy16.o cfbimgblt.o \
	 cfbglyphcopy.o cfbglyphcopy6.o cfbglyphcopy8.o cfbglyphcopy10.o \
	 cfbglyphcopy16.o \
	 cfbtegblt.o cfbtegblt6.o cfbtegblt8.o cfbtegblt10.o cfbtegblt16.o \
	 cfbdraw.o \
	 ${ASMOBJS} \
	 \
	 cfbtilespcopyx.o bitbltcopyx.o cfbtilecopyx.o \
	 \
	 cfbfillspxor.o cfbtilespxor.o bitbltxor.o \
	 cfbpntxor.o cfbtilexor.o \
	 cfbpolypntxor.o cfbbresxor.o cfbslinexor.o cfbssegxor.o \
	 cfbpolyconxor.o \
	 cfbzerarcxor.o cfbfillarcxor.o \
	 cfbpgbxor.o cfbglyphxor.o \
	 \
	 cfbfillspgen.o cfbtilespgen.o bitbltgen.o \
	 cfbpntgen.o cfbtilegen.o \
	 cfbpolypntgen.o cfbbresgen.o cfbslinegen.o cfbsseggen.o \
	 cfbpolycongen.o \
	 cfbzerarcgen.o cfbfillarcgen.o \
	 cfbpgbgen.o cfbglyphgen.o cfbimgbltgen.o cfbtegbltgen.o



STD_DEFINES = ServerDefines -DCFB8
   INCLUDES = -I. -I../../../include -I$(INCLUDESRC) -I../../mfb \
              -I$(FONTSRC)/include -I../../mi
   LINTLIBS = ../../../dix/llib-ldix.ln \
	      ../../../os/4.2bsd/llib-los.ln \
	     ../../mfb/llib-lmfb.ln ../../mi/llib-lmi.ln

NormalLibraryObjectRule()
NormalLibraryTarget(cfb,$(OBJS))
LintLibraryTarget(cfb,$(SRCS))

lint:
	@echo 'Expect the following warnings from lint:'
	@echo '  cfbpntwin.c: srcStartOver set but not used'
	@echo '  cfbfillsp.c: srcStartOver set but not used'
	@echo '  cfbbitblt.c: tmpDst set but not used (4 of these)'
	@echo '-------'

NormalLintTarget($(SRCS))

DependTarget()

loadstore.o:
	$(RM) $@
	$(CC) -c -O loadstore.s

cfbfillsp.o:
	$(RM) $@; touch $@

cfbfillspcopy.o: cfbfillsp.c cfbfillsp.o
	$(RM) $@ cfbfillspcopy.c
	$(LN) cfbfillsp.c cfbfillspcopy.c
	$(CC) -DCFBSOLIDFS=cfbSolidFSCopy -DCFBSTIPPLEFS=cfbStippleFSCopy \
	-DCFBSTIPPLEFS32=cfbStippleFS32Copy  \
	-DCFBOPAQUESTIPPLEFS32=cfbOpqStippleFS32Copy \
	-DCFBOPAQUESTIPPLEFS=cfbOpqStippleFSCopy -DCFBFILL=DFCOPY \
	-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
	 -c $(CFLAGS) cfbfillspcopy.c
	$(RM) cfbfillspcopy.c

cfbfillspxor.o: cfbfillsp.c cfbfillsp.o
	$(RM) $@ cfbfillspxor.c
	$(LN) cfbfillsp.c cfbfillspxor.c
	$(CC) -DCFBSOLIDFS=cfbSolidFSXor -DCFBSTIPPLEFS=cfbStippleFSXor \
	-DCFBSTIPPLEFS32=cfbStippleFS32Xor \
	-DCFBOPAQUESTIPPLEFS32=cfbOpqStippleFS32Xor \
	-DCFBOPAQUESTIPPLEFS=cfbOpqStippleFSXor -DCFBFILL=DFXOR \
	-DCFBFILLLEFT=DFXORLEFT -DCFBFILLRIGHT=DFXORRIGHT \
	$(CFLAGS) -c cfbfillspxor.c
	$(RM) cfbfillspxor.c

cfbfillspgen.o: cfbfillsp.c cfbfillsp.o
	$(RM) $@ cfbfillspgen.c
	$(LN) cfbfillsp.c cfbfillspgen.c
	$(CC) -DCFBSOLIDFS=cfbSolidFSGeneral \
	-DCFBSTIPPLEFS=cfbStippleFSGeneral \
	-DCFBSTIPPLEFS32=cfbStippleFS32General \
	-DCFBOPAQUESTIPPLEFS32=cfbOpqStippleFS32General \
	-DCFBOPAQUESTIPPLEFS=cfbOpqStippleFSGeneral -DCFBFILL=DFGENERAL \
	-DCFBFILLLEFT=DFGENERALLEFT -DCFBFILLRIGHT=DFGENERALRIGHT \
	$(CFLAGS) -c cfbfillspgen.c
	$(RM) cfbfillspgen.c

cfbpolycon.o:
	$(RM) $@; touch $@

cfbpolyconcopy.o: cfbpolycon.c cfbpolycon.o
	$(RM) $@ cfbpolyconcopy.c
	$(LN) cfbpolycon.c cfbpolyconcopy.c
	$(CC) -DCFBSOLIDCVPOLY=cfbSoCvPolyCopy \
	-DCFBFILL=DFCOPY  -DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
	 -c $(CFLAGS) cfbpolyconcopy.c
	$(RM) cfbpolyconcopy.c

cfbpolyconxor.o: cfbpolycon.c cfbpolycon.o
	$(RM) $@ cfbpolyconxor.c
	$(LN) cfbpolycon.c cfbpolyconxor.c
	$(CC) -DCFBSOLIDCVPOLY=cfbSoCvPolyXor \
	-DCFBFILL=DFXOR -DCFBFILLLEFT=DFXORLEFT -DCFBFILLRIGHT=DFXORRIGHT \
	$(CFLAGS) -c cfbpolyconxor.c
	$(RM) cfbpolyconxor.c

cfbpolycongen.o: cfbpolycon.c cfbpolycon.o
	$(RM) $@ cfbpolycongen.c
	$(LN) cfbpolycon.c cfbpolycongen.c
	$(CC) -DCFBSOLIDCVPOLY=cfbSoCvPolyGeneral \
	-DCFBFILL=DFGENERAL \
	-DCFBFILLLEFT=DFGENERALLEFT -DCFBFILLRIGHT=DFGENERALRIGHT \
	$(CFLAGS) -c cfbpolycongen.c
	$(RM) cfbpolycongen.c

cfbtilesp.o:
	$(RM) $@; touch $@

cfbtilespcopy.o: cfbtilesp.c cfbtilesp.o
	$(RM) $@ cfbtilespcopy.c
	$(LN) cfbtilesp.c cfbtilespcopy.c
	$(CC) -DCFBTILEFS=cfbTileFSCopy -DCFBTILEFS4=cfbTileFS4Copy \
	-DCFBCOPY=DCCOPY \
	-DCFBCOPYLEFT=DCCOPYLEFT -DCFBCOPYRIGHT=DCCOPYRIGHT \
	 -c $(CFLAGS) cfbtilespcopy.c
	$(RM) cfbtilespcopy.c

cfbtilespcopyx.o: cfbtilesp.c cfbtilesp.o
	$(RM) $@ cfbtilespcopyx.c
	$(LN) cfbtilesp.c cfbtilespcopyx.c
	$(CC) -DCFBTILEFS=cfbTileFSCopySPM -DCFBTILEFS4=cfbTileFS4CopySPM \
	-DCFBCOPY=DCCOPYSPM \
	-DCFBCOPYLEFT=DCCOPYSPMLEFT -DCFBCOPYRIGHT=DCCOPYSPMRIGHT \
	$(CFLAGS) -c cfbtilespcopyx.c
	$(RM) cfbtilespcopyx.c

cfbtilespxor.o: cfbtilesp.c cfbtilesp.o
	$(RM) $@ cfbtilespxor.c
	$(LN) cfbtilesp.c cfbtilespxor.c
	$(CC) -DCFBTILEFS=cfbTileFSXor -DCFBTILEFS4=cfbTileFS4Xor \
	-DCFBCOPY=DCXOR \
	-DCFBCOPYLEFT=DCXORLEFT -DCFBCOPYRIGHT=DCXORRIGHT \
	$(CFLAGS) -c cfbtilespxor.c
	$(RM) cfbtilespxor.c

cfbtilespgen.o: cfbtilesp.c cfbtilesp.o
	$(RM) $@ cfbtilespgen.c
	$(LN) cfbtilesp.c cfbtilespgen.c
	$(CC) -DCFBTILEFS=cfbTileFSGeneral -DCFBTILEFS4=cfbTileFS4General \
	-DCFBCOPY=DCGENERAL \
	-DCFBCOPYLEFT=DCGENERALLEFT -DCFBCOPYRIGHT=DCGENERALRIGHT \
	$(CFLAGS) -c cfbtilespgen.c
	$(RM) cfbtilespgen.c

bitblt.o:
	$(RM) $@; touch $@

bitbltcopy.o: bitblt.c bitblt.o
	$(RM) $@ bitbltcopy.c
	$(LN) bitblt.c bitbltcopy.c
	$(CC) -DCFBDOBITBLT=cfbBitbltCopy -DCFBCOPY=DCCOPY \
	-DCFBCOPYLEFT=DCCOPYLEFT -DCFBCOPYRIGHT=DCCOPYRIGHT $(CFLAGS) \
	-c bitbltcopy.c
	$(RM) bitbltcopy.c

bitbltcopyx.o: bitblt.c bitblt.o
	$(RM) $@ bitbltcopyx.c
	$(LN) bitblt.c bitbltcopyx.c
	$(CC) -DCFBDOBITBLT=cfbBitbltCopySPM -DCFBCOPY=DCCOPYSPM \
	-DCFBCOPYLEFT=DCCOPYSPMLEFT -DCFBCOPYRIGHT=DCCOPYSPMRIGHT $(CFLAGS) \
	-c bitbltcopyx.c
	$(RM) bitbltcopyx.c

bitbltxor.o: bitblt.c bitblt.o
	$(RM) $@ bitbltxor.c
	$(LN) bitblt.c bitbltxor.c
	$(CC) -DCFBDOBITBLT=cfbBitbltXor -DCFBCOPY=DCXOR \
	-DCFBCOPYLEFT=DCXORLEFT -DCFBCOPYRIGHT=DCXORRIGHT $(CFLAGS) \
	-c bitbltxor.c
	$(RM) bitbltxor.c

bitbltgen.o: bitblt.c bitblt.o
	$(RM) $@ bitbltgen.c
	$(LN) bitblt.c bitbltgen.c
	$(CC) -DCFBDOBITBLT=cfbBitbltGeneral -DCFBCOPY=DCGENERAL \
	-DCFBCOPYLEFT=DCGENERALLEFT -DCFBCOPYRIGHT=DCGENERALRIGHT $(CFLAGS) \
	-c bitbltgen.c
	$(RM) bitbltgen.c

cfbsegment.o: cfbline.c cfbline.o
	$(RM) $@ cfbsegment.c
	$(LN) cfbline.c cfbsegment.c
	$(CC) -DSEGMENTS $(CFLAGS) -c cfbsegment.c
	$(RM) cfbsegment.c

cfbbres.o:
	$(RM) $@; touch $@

cfbbrescopy.o: cfbbres.c cfbbres.o
	$(RM) $@ cfbbrescopy.c
	$(LN) cfbbres.c cfbbrescopy.c
	$(CC) -DCFBBRESS=cfbBresSCopy -DCFBVERTS=cfbVertSCopy \
		-DCFBHORZS=cfbHorzSCopy -DCFBOOBRESS=cfbOODashCopy \
		-DCFBDBRESS=cfbDDashCopy -DCFBFILL=DFCOPY $(CFLAGS) -c \
		cfbbrescopy.c
	$(RM) cfbbrescopy.c

cfbbresxor.o: cfbbres.c cfbbres.o
	$(RM) $@ cfbbresxor.c
	$(LN) cfbbres.c cfbbresxor.c
	$(CC) -DCFBBRESS=cfbBresSXor -DCFBVERTS=cfbVertSXor \
		-DCFBHORZS=cfbHorzSXor -DCFBOOBRESS=cfbOODashXor \
		-DCFBDBRESS=cfbDDashXor -DCFBFILL=DFXOR $(CFLAGS) -c \
		cfbbresxor.c
	$(RM) cfbbresxor.c

cfbbresgen.o: cfbbres.c cfbbres.o
	$(RM) $@ cfbbresgen.c
	$(LN) cfbbres.c cfbbresgen.c
	$(CC) -DCFBBRESS=cfbBresSGeneral -DCFBVERTS=cfbVertSGeneral \
		-DCFBHORZS=cfbHorzSGeneral -DCFBOOBRESS=cfbOODashGeneral \
		-DCFBDBRESS=cfbDDashGeneral -DCFBFILL=DFGENERAL $(CFLAGS) -c \
		cfbbresgen.c
	$(RM) cfbbresgen.c

cfbsline.o:
	$(RM) $@; touch $@

#ifdef MIPSASM
cfbslinecopy.o: cfbslinecopy.s
	@echo 'Expect 4 Warnings from assembler about end of basic block'
	$(RM) $@
	$(CC) -DCFBLINES1=cfbLineS1Copy -O -c cfbslinecopy.s

#else MIPSASM
cfbslinecopy.o: cfbsline.c cfbsline.o
	$(RM) $@ cfbslinecopy.c
	$(LN) cfbsline.c cfbslinecopy.c
	$(CC) -DCFBLINES1=cfbLineS1Copy -DCFBBRESS=cfbBresSCopy \
		-DCFBFILL=DFCOPY -DCFBFILLLEFT=DFCOPYLEFT \
		$(CFLAGS) -c cfbslinecopy.c
	$(RM) cfbslinecopy.c
#endif

cfbslinexor.o: cfbsline.c cfbsline.o
	$(RM) $@ cfbslinexor.c
	$(LN) cfbsline.c cfbslinexor.c
	$(CC) -DCFBLINES1=cfbLineS1Xor -DCFBBRESS=cfbBresSXor \
		-DCFBFILL=DFXOR -DCFBFILLLEFT=DFXORLEFT \
		$(CFLAGS) -c cfbslinexor.c
	$(RM) cfbslinexor.c

cfbslinegen.o: cfbsline.c cfbsline.o
	$(RM) $@ cfbslinegen.c
	$(LN) cfbsline.c cfbslinegen.c
	$(CC) -DCFBLINES1=cfbLineS1General -DCFBBRESS=cfbBresSGeneral \
		-DCFBFILL=DFGENERAL -DCFBFILLLEFT=DFGENERALLEFT \
		$(CFLAGS) -c cfbslinegen.c
	$(RM) cfbslinegen.c

#ifdef MIPSASM
cfbssegcopy.o: cfbslinecopy.s cfbsline.o
	$(RM) $@ cfbssegcopy.s
	$(LN) cfbslinecopy.s cfbssegcopy.s
	@echo 'Expect 4 Warnings from assembler about end of basic block'
	$(CC) -DCFBLINES1=cfbSegS1Copy -DSEGMENTS \
		-c -O cfbssegcopy.s
	$(RM) cfbssegcopy.s
#else MIPSASM
cfbssegcopy.o: cfbsline.c cfbsline.o
	$(RM) $@ cfbssegcopy.c
	$(LN) cfbsline.c cfbssegcopy.c
	$(CC) -DCFBSEGS1=cfbSegS1Copy -DCFBBRESS=cfbBresSCopy -DSEGMENTS \
		-DCFBFILL=DFCOPY -DCFBFILLLEFT=DFCOPYLEFT \
		$(CFLAGS) -c cfbssegcopy.c
	$(RM) cfbssegcopy.c
#endif

cfbssegxor.o: cfbsline.c cfbsline.o
	$(RM) $@ cfbssegxor.c
	$(LN) cfbsline.c cfbssegxor.c
	$(CC) -DCFBSEGS1=cfbSegS1Xor -DCFBBRESS=cfbBresSXor -DSEGMENTS \
		-DCFBFILL=DFXOR -DCFBFILLLEFT=DFXORLEFT \
		$(CFLAGS) -c cfbssegxor.c
	$(RM) cfbssegxor.c

cfbsseggen.o: cfbsline.c cfbsline.o
	$(RM) $@ cfbsseggen.c
	$(LN) cfbsline.c cfbsseggen.c
	$(CC) -DCFBSEGS1=cfbSegS1General -DCFBBRESS=cfbBresSGeneral -DSEGMENTS \
		-DCFBFILL=DFGENERAL -DCFBFILLLEFT=DFGENERALLEFT \
		$(CFLAGS) -c cfbsseggen.c
	$(RM) cfbsseggen.c

cfbpolypnt.o:
	$(RM) $@; touch $@

cfbpolypntcopy.o: cfbpolypnt.c cfbpolypnt.o
	$(RM) $@ cfbpolypntcopy.c
	$(LN) cfbpolypnt.c cfbpolypntcopy.c
	$(CC) -DCFBPOLYPOINT=cfbPolyPointCopy -DCFBFILL=DFCOPY \
		$(CFLAGS) -c cfbpolypntcopy.c
	$(RM) cfbpolypntcopy.c

cfbpolypntxor.o: cfbpolypnt.c cfbpolypnt.o
	$(RM) $@ cfbpolypntxor.c
	$(LN) cfbpolypnt.c cfbpolypntxor.c
	$(CC) -DCFBPOLYPOINT=cfbPolyPointXor -DCFBFILL=DFXOR \
		$(CFLAGS) -c cfbpolypntxor.c
	$(RM) cfbpolypntxor.c

cfbpolypntgen.o: cfbpolypnt.c cfbpolypnt.o
	$(RM) $@ cfbpolypntgen.c
	$(LN) cfbpolypnt.c cfbpolypntgen.c
	$(CC) -DCFBPOLYPOINT=cfbPolyPointGeneral -DCFBFILL=DFGENERAL \
		$(CFLAGS) -c cfbpolypntgen.c
	$(RM) cfbpolypntgen.c


cfbzerarc.o:
	$(RM) $@; touch $@

cfbzerarccopy.o: cfbzerarc.c cfbzerarc.o
	$(RM) $@ cfbzerarccopy.c
	$(LN) cfbzerarc.c cfbzerarccopy.c
	$(CC) -DCFBZEROPOLYARC=cfbZeroPolyArcCopy -DCFBFILL=DFCOPY \
		$(CFLAGS) -c cfbzerarccopy.c
	$(RM) cfbzerarccopy.c

cfbzerarcxor.o: cfbzerarc.c cfbzerarc.o
	$(RM) $@ cfbzerarcxor.c
	$(LN) cfbzerarc.c cfbzerarcxor.c
	$(CC) -DCFBZEROPOLYARC=cfbZeroPolyArcXor -DCFBFILL=DFXOR \
		$(CFLAGS) -c cfbzerarcxor.c
	$(RM) cfbzerarcxor.c

cfbzerarcgen.o: cfbzerarc.c cfbzerarc.o
	$(RM) $@ cfbzerarcgen.c
	$(LN) cfbzerarc.c cfbzerarcgen.c
	$(CC) -DCFBZEROPOLYARC=cfbZeroPolyArcGeneral -DCFBFILL=DFGENERAL \
		$(CFLAGS) -c cfbzerarcgen.c
	$(RM) cfbzerarcgen.c


cfbfillarc.o:
	$(RM) $@; touch $@

cfbfillarccopy.o: cfbfillarc.c cfbfillarc.o
	$(RM) $@ cfbfillarccopy.c
	$(LN) cfbfillarc.c cfbfillarccopy.c
	$(CC) -DCFBPOLYFILLARC=cfbPolyFillArcCopy -DCFBFILL=DFCOPY \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbfillarccopy.c
	$(RM) cfbfillarccopy.c

cfbfillarcxor.o: cfbfillarc.c cfbfillarc.o
	$(RM) $@ cfbfillarcxor.c
	$(LN) cfbfillarc.c cfbfillarcxor.c
	$(CC) -DCFBPOLYFILLARC=cfbPolyFillArcXor -DCFBFILL=DFXOR \
		-DCFBFILLLEFT=DFXORLEFT -DCFBFILLRIGHT=DFXORRIGHT \
		$(CFLAGS) -c cfbfillarcxor.c
	$(RM) cfbfillarcxor.c

cfbfillarcgen.o: cfbfillarc.c cfbfillarc.o
	$(RM) $@ cfbfillarcgen.c
	$(LN) cfbfillarc.c cfbfillarcgen.c
	$(CC) -DCFBPOLYFILLARC=cfbPolyFillArcGeneral -DCFBFILL=DFGENERAL \
		-DCFBFILLLEFT=DFGENERALLEFT -DCFBFILLRIGHT=DFGENERALRIGHT \
		$(CFLAGS) -c cfbfillarcgen.c
	$(RM) cfbfillarcgen.c


cfbglyph.o:
	$(RM) $@; touch $@

#ifdef MIPSASM
cfbglyphcopy.o: cfbglyphcopy.s
	$(RM) $@
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy -c -O cfbglyphcopy.s

cfbglyphcopy6.o: cfbglyphcopy.s
	$(RM) $@ cfbglyphcopy6.s
	$(LN) cfbglyphcopy.s cfbglyphcopy6.s
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy6 -DGLYPH6 -c -O \
		cfbglyphcopy6.s
	$(RM) cfbglyphcopy6.s

cfbglyphcopy8.o: cfbglyphcopy.s
	$(RM) $@ cfbglyphcopy8.s
	$(LN) cfbglyphcopy.s cfbglyphcopy8.s
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy8 -DGLYPH8 -c -O \
		cfbglyphcopy8.s
	$(RM) cfbglyphcopy8.s

cfbglyphcopy10.o: cfbglyphcopy.s
	$(RM) $@ cfbglyphcopy10.s
	$(LN) cfbglyphcopy.s cfbglyphcopy10.s
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy10 -DGLYPH10 -c -O \
		cfbglyphcopy10.s
	$(RM) cfbglyphcopy10.s

cfbglyphcopy16.o: cfbglyphcopy.s
	$(RM) $@ cfbglyphcopy16.s
	$(LN) cfbglyphcopy.s cfbglyphcopy16.s
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy16 -DGLYPH16 -c -O \
		cfbglyphcopy16.s
	$(RM) cfbglyphcopy16.s
#else
# ||| Right now, the C code only special-cases GLYPH8.  It's a little idiotic
# to recompile the same C file multiple times, but this code isn't used on
# the MIPS, and ensures that compiling a server up with no assembly language
# still links correctly.  Someday the stupid C code should be updated to
# the same level of care given the assembly code.

cfbglyphcopy.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphcopy.c
	$(LN) cfbglyph.c cfbglyphcopy.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy -DCFBFILL=DFCOPY \
		$(CFLAGS) -c cfbglyphcopy.c
	$(RM) cfbglyphcopy.c

cfbglyphcopy6.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphcopy6.c
	$(LN) cfbglyph.c cfbglyphcopy6.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy6 -DCFBFILL=DFCOPY \
		-DGLYPH6 $(CFLAGS) -c cfbglyphcopy6.c
	$(RM) cfbglyphcopy6.c

cfbglyphcopy8.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphcopy8.c
	$(LN) cfbglyph.c cfbglyphcopy8.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy8 -DCFBFILL=DFCOPY \
		-DGLYPH8 $(CFLAGS) -c cfbglyphcopy8.c
	$(RM) cfbglyphcopy8.c

cfbglyphcopy10.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphcopy10.c
	$(LN) cfbglyph.c cfbglyphcopy10.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy10 -DCFBFILL=DFCOPY \
		-DGLYPH10 $(CFLAGS) -c cfbglyphcopy10.c
	$(RM) cfbglyphcopy10.c

cfbglyphcopy16.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphcopy16.c
	$(LN) cfbglyph.c cfbglyphcopy16.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsCopy16 -DCFBFILL=DFCOPY \
		-DGLYPH16 $(CFLAGS) -c cfbglyphcopy16.c
	$(RM) cfbglyphcopy16.c
#endif

cfbglyphxor.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphxor.c
	$(LN) cfbglyph.c cfbglyphxor.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsXor -DCFBFILL=DFXOR \
		$(CFLAGS) -c cfbglyphxor.c
	$(RM) cfbglyphxor.c

cfbglyphgen.o: cfbglyph.c cfbglyph.o
	$(RM) $@ cfbglyphgen.c
	$(LN) cfbglyph.c cfbglyphgen.c
	$(CC) -DCFBSPLATGLYPHS=cfbSplatGlyphsGeneral -DCFBFILL=DFGENERAL \
		$(CFLAGS) -c cfbglyphgen.c
	$(RM) cfbglyphgen.c

cfbplygblt.o:
	$(RM) $@; touch $@

cfbpgbcopy.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbcopy.c
	$(LN) cfbplygblt.c cfbpgbcopy.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltCopy -DCFBFILL=DFCOPY \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsCopy $(CFLAGS) -c cfbpgbcopy.c
	$(RM) cfbpgbcopy.c

cfbpgbcopy6.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbcopy6.c
	$(LN) cfbplygblt.c cfbpgbcopy6.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltCopy6 -DCFBFILL=DFCOPY \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsCopy6 -DGLYPH6 \
		$(CFLAGS) -c cfbpgbcopy6.c
	$(RM) cfbpgbcopy6.c

cfbpgbcopy8.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbcopy8.c
	$(LN) cfbplygblt.c cfbpgbcopy8.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltCopy8 -DCFBFILL=DFCOPY \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsCopy8 -DGLYPH8 \
		$(CFLAGS) -c cfbpgbcopy8.c
	$(RM) cfbpgbcopy8.c

cfbpgbcopy10.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbcopy10.c
	$(LN) cfbplygblt.c cfbpgbcopy10.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltCopy10 -DCFBFILL=DFCOPY \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsCopy10 -DGLYPH10 \
		$(CFLAGS) -c cfbpgbcopy10.c
	$(RM) cfbpgbcopy10.c

cfbpgbcopy16.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbcopy16.c
	$(LN) cfbplygblt.c cfbpgbcopy16.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltCopy16 -DCFBFILL=DFCOPY \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsCopy16 -DGLYPH16 \
		$(CFLAGS) -c cfbpgbcopy16.c
	$(RM) cfbpgbcopy16.c

cfbpgbxor.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbxor.c
	$(LN) cfbplygblt.c cfbpgbxor.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltXor -DCFBFILL=DFXOR \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsXor $(CFLAGS) -c cfbpgbxor.c
	$(RM) cfbpgbxor.c

cfbpgbgen.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbpgbgen.c
	$(LN) cfbplygblt.c cfbpgbgen.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbPolyGlyphBltGeneral -DCFBFILL=DFGENERAL \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsGeneral $(CFLAGS) -c cfbpgbgen.c
	$(RM) cfbpgbgen.c

cfbimgblt.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbimgblt.c
	$(LN) cfbplygblt.c cfbimgblt.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbImageGlyphBlt -DCFBFILL=DFCOPY \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsCopy -DCFBIMAGETEXT \
		$(CFLAGS) -c cfbimgblt.c
	$(RM) cfbimgblt.c

cfbimgbltgen.o: cfbplygblt.c cfbplygblt.o
	$(RM) $@ cfbimgbltgen.c
	$(LN) cfbplygblt.c cfbimgbltgen.c
	$(CC) -DCFBPOLYGLYPHBLT=cfbImageGlyphBltGeneral \
		-DCFBFILL=DFGENERAL \
		-DCFBSPLATGLYPHS=cfbSplatGlyphsGeneral -DCFBIMAGETEXT \
		$(CFLAGS) -c cfbimgbltgen.c
	$(RM) cfbimgbltgen.c

#ifdef MIPSASM
cfbglyphimage.o: cfbglyphimage.s
	$(RM) $@
	$(CC) -DCFBIMAGEGLYPHS=cfbImageGlyphs -c -O cfbglyphimage.s

cfbglyphimage6.o: cfbglyphimage.s
	$(RM) $@ cfbglyphimage6.s
	$(LN) cfbglyphimage.s cfbglyphimage6.s
	$(CC) -DCFBIMAGEGLYPHS=cfbImageGlyphs6 -DGLYPH6 -c -O cfbglyphimage6.s
	$(RM) cfbglyphimage6.s

cfbglyphimage8.o: cfbglyphimage.s
	$(RM) $@ cfbglyphimage8.s
	$(LN) cfbglyphimage.s cfbglyphimage8.s
	$(CC) -DCFBIMAGEGLYPHS=cfbImageGlyphs8 -DGLYPH8 -c -O cfbglyphimage8.s
	$(RM) cfbglyphimage8.s

cfbglyphimage10.o: cfbglyphimage.s
	$(RM) $@ cfbglyphimage10.s
	$(LN) cfbglyphimage.s cfbglyphimage10.s
	$(CC) -DCFBIMAGEGLYPHS=cfbImageGlyphs10 -DGLYPH10 \
		-c -O cfbglyphimage10.s
	$(RM) cfbglyphimage10.s

cfbglyphimage16.o: cfbglyphimage.s
	$(RM) $@ cfbglyphimage16.s
	$(LN) cfbglyphimage.s cfbglyphimage16.s
	$(CC) -DCFBIMAGEGLYPHS=cfbImageGlyphs16 -DGLYPH16 \
		-c -O cfbglyphimage16.s
	$(RM) cfbglyphimage16.s

cfbtegblt.o:  cfbtegblt.c
	$(RM) $@
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs -DIMAGEINASM \
		$(CFLAGS) -c cfbtegblt.c

cfbtegblt6.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt6.c
	$(LN) cfbtegblt.c cfbtegblt6.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt6 \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs6 -DGLYPH6 \
		-DIMAGEINASM $(CFLAGS) -c cfbtegblt6.c
	$(RM) cfbtegblt6.c

cfbtegblt8.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt8.c
	$(LN) cfbtegblt.c cfbtegblt8.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt8 \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs8 -DGLYPH8 \
		-DIMAGEINASM $(CFLAGS) -c cfbtegblt8.c
	$(RM) cfbtegblt8.c

cfbtegblt10.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt10.c
	$(LN) cfbtegblt.c cfbtegblt10.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt10 \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs10 -DGLYPH10 \
		-DIMAGEINASM $(CFLAGS) -c cfbtegblt10.c
	$(RM) cfbtegblt10.c

cfbtegblt16.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt16.c
	$(LN) cfbtegblt.c cfbtegblt16.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt16 \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs16 -DGLYPH16 \
		-DIMAGEINASM $(CFLAGS) -c cfbtegblt16.c
	$(RM) cfbtegblt16.c

#else
# Right now, the C code only special-cases GLYPH8.  It's a little idiotic
# to recompile the same C file multiple times, but this code isn't used on
# the MIPS, and ensures that compiling a server up with no assembly language
# still links correctly.  Someday the stupid C code should be updated to
# the same level of care given the assembly code.

cfbtegblt.o:  cfbtegblt.c
	$(RM) $@
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt -DCFBFILL=DFCOPY \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbtegblt.c

cfbtegblt6.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt6.c
	$(LN) cfbtegblt.c cfbtegblt6.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt6 -DCFBFILL=DFCOPY \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs6 -DGLYPH6 \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbtegblt6.c
	$(RM) cfbtegblt6.c

cfbtegblt8.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt8.c
	$(LN) cfbtegblt.c cfbtegblt8.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt8 -DCFBFILL=DFCOPY \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs8 -DGLYPH8 \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbtegblt8.c
	$(RM) cfbtegblt8.c

cfbtegblt10.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt10.c
	$(LN) cfbtegblt.c cfbtegblt10.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt10 -DCFBFILL=DFCOPY \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs10 -DGLYPH10 \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbtegblt10.c
	$(RM) cfbtegblt10.c

cfbtegblt16.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegblt16.c
	$(LN) cfbtegblt.c cfbtegblt16.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBlt16 -DCFBFILL=DFCOPY \
		-DCFBIMAGEGLYPHS=cfbImageGlyphs16 -DGLYPH16 \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbtegblt16.c
	$(RM) cfbtegblt16.c
#endif

cfbtegbltgen.o: cfbtegblt.c cfbtegblt.o
	$(RM) $@ cfbtegbltgen.c
	$(LN) cfbtegblt.c cfbtegbltgen.c
	$(CC) -DCFBTEIMAGEGLYPHBLT=cfbTEImageGlyphBltGeneral \
		-DCFBFILL=DFGENERAL \
		-DCFBFILLLEFT=DFGENERALLEFT -DCFBFILLRIGHT=DFGENERALRIGHT \
		-DCFBIMAGEGLYPHS=cfbImageGlyphsGeneral \
		$(CFLAGS) -c cfbtegbltgen.c
	$(RM) cfbtegbltgen.c

cfbpntarea.o:
	$(RM) $@; touch $@

#ifdef MIPSASM
cfbpntcopy.o: cfbpntarea.c cfbpntarea.o
	$(RM) $@ cfbpntcopy.c
	$(LN) cfbpntarea.c cfbpntcopy.c
	$(CC) -DCFBSOLIDFILLAREA=cfbSolidFillAreaCopy \
		-DCFBTSFILLAREA=cfbTSFillAreaCopy \
		-DCFBOSFILLAREA=cfbOSFillAreaCopy \
		-DCFBOSFILLAREA32=cfbOSFillArea32Copy \
		-DCFBTSFILLAREA32=cfbTSFillArea32Copy \
		-DCFBOSPLANE=cfbOSPlaneCopy -DCFBFILL=DFCOPY \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		-DCOPYINASM \
		$(CFLAGS) -c cfbpntcopy.c
	$(RM) cfbpntcopy.c

cfbtsrectcopy.o: cfbtsrectcopy.s
	$(RM) $@
	$(CC) -c -O cfbtsrectcopy.s
#else
cfbpntcopy.o: cfbpntarea.c cfbpntarea.o
	$(RM) $@ cfbpntcopy.c
	$(LN) cfbpntarea.c cfbpntcopy.c
	$(CC) -DCFBSOLIDFILLAREA=cfbSolidFillAreaCopy \
		-DCFBTSFILLAREA=cfbTSFillAreaCopy \
		-DCFBOSFILLAREA=cfbOSFillAreaCopy \
		-DCFBOSFILLAREA32=cfbOSFillArea32Copy \
		-DCFBTSFILLAREA32=cfbTSFillArea32Copy \
		-DCFBOSPLANE=cfbOSPlaneCopy -DCFBFILL=DFCOPY \
		-DCFBFILLLEFT=DFCOPYLEFT -DCFBFILLRIGHT=DFCOPYRIGHT \
		$(CFLAGS) -c cfbpntcopy.c
	$(RM) cfbpntcopy.c
#endif

cfbpntxor.o: cfbpntarea.c cfbpntarea.o
	$(RM) $@ cfbpntxor.c
	$(LN) cfbpntarea.c cfbpntxor.c
	$(CC) -DCFBSOLIDFILLAREA=cfbSolidFillAreaXor \
		-DCFBTSFILLAREA=cfbTSFillAreaXor \
		-DCFBOSFILLAREA=cfbOSFillAreaXor \
		-DCFBOSFILLAREA32=cfbOSFillArea32Xor \
		-DCFBTSFILLAREA32=cfbTSFillArea32Xor \
		-DCFBOSPLANE=cfbOSPlaneXor -DCFBFILL=DFXOR \
		-DCFBFILLLEFT=DFXORLEFT -DCFBFILLRIGHT=DFXORRIGHT \
		$(CFLAGS) -c cfbpntxor.c
	$(RM) cfbpntxor.c

cfbpntgen.o: cfbpntarea.c cfbpntarea.o
	$(RM) $@ cfbpntgen.c
	$(LN) cfbpntarea.c cfbpntgen.c
	$(CC) -DCFBSOLIDFILLAREA=cfbSolidFillAreaGeneral \
		-DCFBTSFILLAREA=cfbTSFillAreaGeneral \
		-DCFBOSFILLAREA=cfbOSFillAreaGeneral \
		-DCFBOSFILLAREA32=cfbOSFillArea32General \
		-DCFBTSFILLAREA32=cfbTSFillArea32General \
		-DCFBOSPLANE=cfbOSPlaneGeneral -DCFBFILL=DFGENERAL \
		-DCFBFILLLEFT=DFGENERALLEFT -DCFBFILLRIGHT=DFGENERALRIGHT \
		$(CFLAGS) -c cfbpntgen.c
	$(RM) cfbpntgen.c

cfbtile.o:
	$(RM) $@; touch $@

cfbtilecopy.o: cfbtilearea.c cfbtile.o
	$(RM) $@ cfbtilecopy.c
	$(LN) cfbtilearea.c cfbtilecopy.c
	$(CC) -DCFBTILEAREA=cfbTileAreaCopy \
	-DCFBTILEAREA4=cfbTileArea4Copy \
	-DCFBCOPY=DCCOPY -DISDCCOPY \
	-DCFBCOPYLEFT=DCCOPYLEFT -DCFBCOPYRIGHT=DCCOPYRIGHT \
	 -c $(CFLAGS) cfbtilecopy.c
	$(RM) cfbtilecopy.c

cfbtilecopyx.o: cfbtilearea.c cfbtile.o
	$(RM) $@ cfbtilecopyx.c
	$(LN) cfbtilearea.c cfbtilecopyx.c
	$(CC) -DCFBTILEAREA=cfbTileAreaCopySPM \
	-DCFBTILEAREA4=cfbTileArea4CopySPM  \
	-DCFBCOPY=DCCOPYSPM \
	-DCFBCOPYLEFT=DCCOPYSPMLEFT -DCFBCOPYRIGHT=DCCOPYSPMRIGHT \
	$(CFLAGS) -c cfbtilecopyx.c
	$(RM) cfbtilecopyx.c

cfbtilexor.o: cfbtilearea.c cfbtile.o
	$(RM) $@ cfbtilexor.c
	$(LN) cfbtilearea.c cfbtilexor.c
	$(CC) -DCFBTILEAREA=cfbTileAreaXor \
	-DCFBTILEAREA4=cfbTileArea4Xor \
	-DCFBCOPY=DCXOR \
	-DCFBCOPYLEFT=DCXORLEFT -DCFBCOPYRIGHT=DCXORRIGHT \
	$(CFLAGS) -c cfbtilexor.c
	$(RM) cfbtilexor.c

cfbtilegen.o: cfbtilearea.c cfbtile.o
	$(RM) $@ cfbtilegen.c
	$(LN) cfbtilearea.c cfbtilegen.c
	$(CC) -DCFBTILEAREA=cfbTileAreaGeneral \
	-DCFBTILEAREA4=cfbTileArea4General \
	-DCFBCOPY=DCGENERAL \
	-DCFBCOPYLEFT=DCGENERALLEFT -DCFBCOPYRIGHT=DCGENERALRIGHT \
	$(CFLAGS) -c cfbtilegen.c
	$(RM) cfbtilegen.c

