.SUFFIXES: .def

OBJS1 = atom.obj colormap.obj cursor.obj devices.obj \
	dixfonts.obj swaprep.obj window.obj shape.obj
OBJS2 = extensio.obj gc.obj globals.obj glyphcur.obj grabs.obj \
	initatom.obj property.obj resource.obj misc.obj
OBJS3 =	tables.obj dispatch.obj dixutils.obj swapreq.obj events.obj
OBJS = $(OBJS1) $(OBJS2) $(OBJS3)

DEFS = main.def atom.def colormap.def cursor.def devices.def \
	dixfonts.def swaprep.def window.def \
	extensio.def gc.def globals.def glyphcur.def grabs.def \
	initatom.def property.def resource.def \
	tables.def dispatch.def dixutils.def swapreq.def events.def \
	shape.def

INCLUDES = -I../include -I../../../x11
OPT = /G2 /Oecilgs /Gs /AL
CFLAGS = $(INCLUDES) $(OPT) /W3 /nologo
MFLAGS=/MX /T
LIBFLAGS=/NOI /nologo
CC = cl

all: main.obj dix.lib

$(OBJS3):
	$(CC) /c $(CFLAGS) /NT DIX_TEXT $*.c
	lib $(LIBFLAGS) dix.lib -+ $*;

dix.lib: ..\include\funcs.h $(OBJS)

.c.def: 
	echo #define FUNCS_H >> ..\include\funcs.h
	$(CC) $(CFLAGS) /Zg $*.c > $*.def
	del ..\include\funcs.h

tables.def:  tables.c
	echo #define FUNCS_H >> ..\include\funcs.h
	-$(CC) $(CFLAGS) /Zg $*.c > $*.def
	del ..\include\funcs.h

.c.obj:
	$(CC) -c $(CFLAGS) $*.c
	lib $(LIBFLAGS) dix -+ $*;

initatom.obj:
	$(CC) -c $(INCLUDES) $(OPT) /nologo $*.c
	lib $(LIBFLAGS) dix -+ $*;

main.obj: ..\include\funcs.h
	$(CC) -c $(CFLAGS) $*.c

.asm.obj:
	masm $(MFLAGS) $*.asm;
	lib $(LIBFLAGS) dix -+ $*;

dix.fix: $(OBJS)
	-del dix.lib
	lib dix.lib + $(OBJS1);
	lib dix.lib + $(OBJS2);
	lib dix.lib + $(OBJS3);

..\include\funcs.h: $(DEFS)
	echo #ifndef FUNCS_H > funcs.h
	echo #define FUNCS_H >> funcs.h
	sed -e "/static/d" -e /_TimeStamp/d -e "s/.*DEF://" *.def >> funcs.h
	echo #endif >> funcs.h
	copy funcs.h ..\include\funcs.h
	del funcs.h

clean:
	-del *.obj
	-del *.def
	-del *.map
	-del *.bak
	
cleanall: clean
	-del *.lib
        -del ..\include\funcs.h
	-del *.exe		
