.SUFFIXES: .def .lst

SRCS1 = init.c scrinit.c i8cmap.c i8window.c i8font.c \
	i8pixmap.c i8gc.c i8spans.c i8getsp.c mfbclip.c
SRCS2 =	i8pushpx.c cursor.c output.c movebyte.c copy.c i8glblt.c \
	putimage.c i8paint.c

SRCS = $(SRCS1) $(SRCS2)

OBJS1 = init.obj scrinit.obj i8cmap.obj i8font.obj \
	i8pixmap.obj i8gc.obj output.obj
OBJS2 =	i8pushpx.obj movebyte.obj copy.obj i8glblt.obj \
	putimage.obj i8paint.obj
OBJS3 = cursor.obj i8getsp.obj i8spans.obj i8window.obj \
	callafi.obj bytes.obj
OBJS = $(OBJS1) $(OBJS2) $(OBJS3)

DEFS = callafi.def movebyte.def i8glblt.def i8spans.def copy.def \
	bytes.def i8pixmap.def i8pushpx.def putimage.def i8cmap.def \
	scrinit.def init.def i8window.def i8font.def i8paint.def \
	i8getsp.def cursor.def output.def i8gc.def

INCLUDES= -I../../../../../x11 -I../../../include

CFLAGS=$(INCLUDES) /W3 /G2 /Oecilgs /Gs /AL /NT IBM_TEXT /nologo
QCFLAGS=$(INCLUDES) /W3 /G2 /Oecilgs /AL /nologo
MFLAGS=/MX /T
LIBFLAGS=/NOI /nologo

i8.lib: i8funcs.h $(OBJS)

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

.c.obj:      
	cl $(CFLAGS) -c $*.c
	lib $(LIBFLAGS) i8 -+ $*;

.asm.obj:       
	masm $(MFLAGS) $*;
	lib /nologo i8 -+ $*;

.c.def:     
	echo #define I8EFS_H >> i8funcs.h
	$(CC) $(QCFLAGS) /Zg $*.c > $*.def
	del i8funcs.h

i8gc.def: i8gc.c
	echo #define I8EFS_H >> i8funcs.h
	-$(CC) $(QCFLAGS) /Zg $*.c > $*.def
	del i8funcs.h

.c.lst:     
	$(CC) $(CFLAGS) /c /Fa /Fs $*.c

tags: $(SRCS)
	ctags $(SRCS1)
	ctags -a $(SRCS2)

i8funcs.h: $(DEFS)
	echo #ifndef I8DEFS_H > i8funcs.h
	echo #define I8DEFS_H >> i8funcs.h
	sed -e /static/d -e "s/.*DEF://" *.def >> i8funcs.h
	echo #endif >> i8funcs.h

bytes.def: bytes.asm
	sed -e /extern/!d -e "s/;//" bytes.asm >> bytes.def

callafi.def: callafi.asm
	sed -e /extern/!d -e "s/;//" callafi.asm >> callafi.def

clean:
	-del *.obj
	-del *.def
	-del *.map
	-del *.bak
	
cleanall: clean
	-del i8.lib
        -del i8funcs.h
	-del *.exe		
