DEBUG=0

# Makefile for Piclab
#
# Assumes a lot of things: Microsoft C 6.00 or later, NMAKE, MASM,
# and miscellaneous programs like PKZIP, PKLITE, RM, CP, etc.
#

AS=masm
AFLAGS=/ML

# Decided to me more cautious with optimization based on sad experience - TW
CFLAGS=-AL -W2 -Lr -Ocegilt -batch -nologo

LFLAGS=/batch
C286FLAGS=-G2 -DPROC_I286

!IF $(DEBUG)
ADEBUGFLAGS=/Zi
CDEBUGFLAGS=-Zi -W4 -DDEBUG
LDEBUGFLAGS=/CO
!ELSE
ADEBUGFLAGS=
CDEBUGFLAGS=
LDEBUGFLAGS=
!ENDIF

#
# File lists
#

SRCS=init.c pl1.c pl2.c plarea.c pldither.c plfiles.c plframe.c\
plgif.c plhelp.c plmain.c plmap.c plmem.c plpoint.c plppm.c plprint.c\
plprintf.c plshow.c pltga.c
OBJS=$(SRCS:.c=.obj)
INCS=piclab.h typedefs pjtbls hash sierra yiq
AUXFILES=piclab.doc pl.hlp piclab.pif piclab.ico gamma1.map\
gamma2.map pseudo.map sstools.smp
EXES=pl86.exe pl.exe

#
# Inference rules
#

.asm.obj:
	$(AS) $(AFLAGS) $(ADEBUGFLAGS) $*;

.c.obj:
	$(CC) -c $(CFLAGS) $(C286FLAGS) $(CDEBUGFLAGS) -Foobj2\$* $*.c
	$(CC) -c $(CFLAGS) $(CDEBUGFLAGS) $*.c

#
# Main targets
#

all: $(EXES)

clean:
	-rm $(EXES) *.uue piclab.zoo *.obj obj2/*.obj *.bak *.map

install: all
	cp $(EXES) $(AUXFILES) /usr/local/piclab

distrib: piclab.zip piclab.zoo plsrc.zip

piclab.zip: $(EXES) $(AUXFILES)
	pklite pl86.exe
	pklite pl.exe
	pkzip -u piclab $?

piclab.zoo: $(EXES) $(AUXFILES)
	pklite pl86.exe
	pklite pl.exe
	zoo aP piclab $**
	uuencode piclab.zoo

plsrc.zip: $(SRCS) $(INCS) $(AUXFILES) video.asm video.obj makefile plsrc.doc
	pkzip -u plsrc video.obj @<<
$(?: =^
)
<<

pl86.exe: $(OBJS) video.obj
	link $(LFLAGS) $(LDEBUGFLAGS) @<<pl86.lrf
$(OBJS: = +^
) + video.obj
pl86.exe
nul
/stack:0x4000 $(LFLAGS) $(LDEBUGFLAGS);
<<keep

pl.exe: $(OBJS) video.obj
	link $(LFLAGS) $(LDEBUGFLAGS) @<<pl.lrf
obj2\$(OBJS: = +^
obj2\) + video.obj
pl.exe
nul
/stack:0x4000 $(LFLAGS) $(LDEBUGFLAGS);
<<keep

#
# Dependencies
#

video.obj: video.asm
init.obj: init.c piclab.h
pl1.obj: pl1.c piclab.h
pl2.obj: pl2.c piclab.h
plarea.obj: plarea.c piclab.h
pldither.obj: pldither.c piclab.h sierra
plfiles.obj: plfiles.c piclab.h
plframe.obj: plframe.c piclab.h
plgif.obj: plgif.c piclab.h hash
plhelp.obj: plhelp.c piclab.h
plmain.obj: plmain.c piclab.h yiq sierra pjtbls hash
plmap.obj: plmap.c piclab.h sierra
plmem.obj: plmem.c piclab.h
plpoint.obj: plpoint.c piclab.h yiq
plppm.obj: plppm.c piclab.h
plprint.obj: plprint.c piclab.h pjtbls
plprintf.obj: plprintf.c piclab.h
plshow.obj: plshow.c piclab.h sierra yiq
pltga.obj: pltga.c piclab.h
