
#
#  xserver - a native X11 release 4 server for Sun 3/50's
#    Project Lunchmeat
#    May, 1990
#    $Date: 90/07/13 16:20:40 $
#    $Revision: 1.7 $
#
#  Makefile - Makefile for dix
#

#
# $Log:	Makefile,v $
# Revision 1.7  90/07/13  16:20:40  mjk
# added -DMITMISC
# 
# Revision 1.6  90/06/13  16:22:01  mjk
# fixes to make the hack .c and .o files work
# 
# Revision 1.5  90/06/13  13:57:12  mjk
# MAJOR CHANGES: now supports OPTIMIZE and DEBUG compiling
# 
#

HOWTOCOMPILE = OPTIMIZE
HOW = $(HOWTOCOMPILE)

SHELL = /bin/sh

TOP = /brazos/petero/projects/xkernel/xserver/User
CURRENT_DIR = ./User/ddx/mfb

OP_INCLUDES = -I$(TOP)

AR = ar cq
CC = cc
GET = co
LN = ln -s
MAKE = /usr/local/gnumake
MV = mv
CP = cp
RANLIB = ranlib
RANLIBINSTFLAGS =
RM = rm -f
STD_INCLUDES =
STD_CPP_DEFINES =
STD_DEFINES = -DINCLUDE_ALLOCA_H -DSHAPE -DMITMISC
EXTRA_LOAD_FLAGS =
EXTRA_LIBRARIES =

INCLUDE_X11 = -I/usr/include/X11
INCLUDE_XKERNEL = -I../..
INCLUDESRC = $(INCLUDE_X11) $(INCLUDE_XKERNEL)

INCLUDES = -I. -I../mi -I../../include $(INCLUDESRC) 

DEBUGFLAGS =
OPTIMIZEFLAGS = -O4 -DNDEBUG
CCOPTIONS =
ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES)
ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS)

CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)

RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o DEBUG/*.o OPTIMIZE/*.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut *%

SRCS1 =  mfbgc.c mfbwindow.c mfbfont.c \
	mfbfillrct.c mfbpntwin.c maskbits.c mfbpixmap.c \
	mfbimage.c mfbline.c mfbbres.c mfbhrzvert.c mfbbresd.c \
	mfbpushpxl.c mfbzerarc.c mfbfillarc.c \
	mfbfillsp.c mfbsetsp.c mfbscrinit.c mfbscrclse.c mfbclip.c \
	mfbbitblt.c mfbgetsp.c mfbpolypnt.c \
	mfbcmap.c mfbtile.c mfbmisc.c mfbbstore.c

SRCS =   $(SRCS1) mfbplygblt.c mfbimggblt.c mfbpntarea.c mfbtegblt.c

FAKE_OBJS =  mfbgc.o mfbwindow.o mfbfont.o \
	mfbfillrct.o mfbpntwin.o maskbits.o mfbpixmap.o \
	mfbimage.o mfbline.o mfbbres.o mfbhrzvert.o mfbbresd.o mfbseg.o \
	mfbpushpxl.o mfbzerarc.o mfbfillarc.o \
	mfbfillsp.o mfbsetsp.o mfbscrinit.o mfbscrclse.o mfbclip.o \
	mfbbitblt.o mfbgetsp.o mfbpolypnt.o \
	mfbpgbwht.o mfbpgbblak.o mfbpgbinv.o \
	mfbigbwht.o mfbigbblak.o mfbcmap.o \
	mfbpawhite.o mfbpablack.o mfbpainv.o mfbtile.o \
	mfbtewhite.o mfbteblack.o mfbmisc.o mfbbstore.o

OBJS = $(FAKE_OBJS:%.o=$(HOW)/%.o)

DEBUG/%.o : %.c
	$(RM) $@
	$(CC) -c $(CFLAGS) $(DEBUGFLAGS) $< -o $@

OPTIMIZE/%.o : %.c
	$(RM) $@
	$(CC) -c $(CFLAGS) $(OPTIMIZEFLAGS) $< -o $@

all : libmfb.a

libmfb.a : $(OBJS)
	$(RM) $@
	$(AR) $@ $(OBJS)
	$(RANLIB) $@

$(HOW)/mfbseg.o: mfbseg.c $(HOW)/mfbline.o
	$(CC) -DPOLYSEGMENT $(CFLAGS) -c mfbseg.c -o $@

mfbseg.c:
	$(LN) mfbline.c mfbseg.c

$(HOW)/mfbpntarea.o $(HOW)/mfbimggblt.o $(HOW)/mfbplygblt.o $(HOW)/mfbtegblt.o:
	$(RM) $@; touch $@

$(HOW)/mfbpgbwht.o: mfbplygblt.c $(HOW)/mfbplygblt.o
	$(RM) $@ mfbpgbwht.c
	$(LN) mfbplygblt.c mfbpgbwht.c
	${CC} -DMFBPOLYGLYPHBLT=mfbPolyGlyphBltWhite \
	   -DOPEQ=\|=  $(CFLAGS) -c mfbpgbwht.c -o $@
	$(RM) mfbp

$(HOW)/mfbpgbblak.o: mfbplygblt.c $(HOW)/mfbplygblt.o
	$(RM) $@ mfbpgbblak.c
	$(LN) mfbplygblt.c mfbpgbblak.c
	${CC} -DMFBPOLYGLYPHBLT=mfbPolyGlyphBltBlack \
	   -DOPEQ=\&=~ $(CFLAGS) -c mfbpgbblak.c -o $@
	$(RM) mfbpgbblak.c

$(HOW)/mfbpgbinv.o: mfbplygblt.c $(HOW)/mfbplygblt.o
	$(RM) $@ mfbpgbinv.c
	$(LN) mfbplygblt.c mfbpgbinv.c
	${CC} -DMFBPOLYGLYPHBLT=mfbPolyGlyphBltInvert \
	   -DOPEQ=\^=  $(CFLAGS) -c mfbpgbinv.c -o $@
	$(RM) mfbpgbinv.c

$(HOW)/mfbigbwht.o: mfbimggblt.c $(HOW)/mfbimggblt.o
	$(RM) $@ mfbigbwht.c
	$(LN) mfbimggblt.c mfbigbwht.c
	${CC} -DMFBIMAGEGLYPHBLT=mfbImageGlyphBltWhite \
	   -DOPEQ=\|=  $(CFLAGS) -c mfbigbwht.c -o $@
	$(RM) mfbigbwht.c

$(HOW)/mfbigbblak.o: mfbimggblt.c $(HOW)/mfbimggblt.o
	$(RM) $@ mfbigbblak.c
	$(LN) mfbimggblt.c mfbigbblak.c
	${CC} -DMFBIMAGEGLYPHBLT=mfbImageGlyphBltBlack \
	   -DOPEQ=\&=~ $(CFLAGS) -c mfbigbblak.c -o $@
	$(RM) mfbigbblak.c

$(HOW)/mfbpawhite.o: mfbpntarea.c $(HOW)/mfbpntarea.o
	$(RM) $@ mfbpawhite.c
	$(LN) mfbpntarea.c mfbpawhite.c
	${CC} -DMFBSOLIDFILLAREA=mfbSolidWhiteArea \
	   -DMFBSTIPPLEFILLAREA=mfbStippleWhiteArea \
	   -DOPEQ=\|=  -DEQWHOLEWORD=\=~0 \
	   $(CFLAGS) -c mfbpawhite.c -o $@
	$(RM) mfbpawhite.c

$(HOW)/mfbpablack.o: mfbpntarea.c $(HOW)/mfbpntarea.o
	$(RM) $@ mfbpablack.c
	$(LN) mfbpntarea.c mfbpablack.c
	${CC} -DMFBSOLIDFILLAREA=mfbSolidBlackArea \
	   -DMFBSTIPPLEFILLAREA=mfbStippleBlackArea \
	   -DOPEQ=\&=~ -DEQWHOLEWORD=\=0 \
	   $(CFLAGS) -c mfbpablack.c -o $@
	$(RM) mfbpablack.c

$(HOW)/mfbpainv.o: mfbpntarea.c $(HOW)/mfbpntarea.o
	$(RM) $@ mfbpainv.c
	$(LN) mfbpntarea.c mfbpainv.c
	${CC} -DMFBSOLIDFILLAREA=mfbSolidInvertArea \
	   -DMFBSTIPPLEFILLAREA=mfbStippleInvertArea \
	   -DOPEQ=\^=  -DEQWHOLEWORD=\^=~0 \
	   $(CFLAGS) -c mfbpainv.c -o $@
	$(RM) mfbpainv.c

$(HOW)/mfbtewhite.o: mfbtegblt.c $(HOW)/mfbtegblt.o
	$(RM) $@ mfbtewhite.c
	$(LN) mfbtegblt.c mfbtewhite.c
	${CC} -DMFBTEGLYPHBLT=mfbTEGlyphBltWhite \
	   -DOP= -DCLIPTETEXT=mfbImageGlyphBltWhite $(CFLAGS) -c mfbtewhite.c -o $@
	$(RM) mfbtewhite.c

$(HOW)/mfbteblack.o: mfbtegblt.c $(HOW)/mfbtegblt.o
	$(RM) $@ mfbteblack.c
	$(LN) mfbtegblt.c mfbteblack.c
	${CC} -DMFBTEGLYPHBLT=mfbTEGlyphBltBlack \
	   -DOP=~ -DCLIPTETEXT=mfbImageGlyphBltBlack $(CFLAGS) -c mfbteblack.c -o $@
	$(RM) mfbteblack.c

source_links:
	$(RM) mfbpgbwht.c
	$(LN) mfbplygblt.c mfbpgbwht.c
	$(RM) mfbpgbblak.c
	$(LN) mfbplygblt.c mfbpgbblak.c
	$(RM) mfbpgbinv.c
	$(LN) mfbplygblt.c mfbpgbinv.c
	$(RM) mfbigbwht.c
	$(LN) mfbimggblt.c mfbigbwht.c
	$(RM) mfbigbblak.c
	$(LN) mfbimggblt.c mfbigbblak.c
	$(RM) mfbpawhite.c
	$(LN) mfbpntarea.c mfbpawhite.c
	$(RM) mfbpablack.c
	$(LN) mfbpntarea.c mfbpablack.c
	$(RM) mfbpainv.c
	$(LN) mfbpntarea.c mfbpainv.c
	$(RM) mfbtewhite.c
	$(LN) mfbtegblt.c mfbtewhite.c
	$(RM) mfbteblack.c
	$(LN) mfbtegblt.c mfbteblack.c

clean::
	$(RM) mfbpgbwht.c
	$(RM) mfbpgbblak.c
	$(RM) mfbpgbinv.c
	$(RM) mfbigbwht.c
	$(RM) mfbigbblak.c
	$(RM) mfbpawhite.c
	$(RM) mfbpablack.c
	$(RM) mfbpainv.c
	$(RM) mfbseg.c
	$(RM) mfbtewhite.c
	$(RM) mfbteblack.c

clean::
	$(RM_CMD) \#*

$(SRCS) $(HDRS) :
	$(GET) $@
