#makefile for dviout/dviprt
CC = gcc

# Running OS is ...
#  MINIX : MINIX-386
#  LINUX : Linux
#  MSDOS : go32 on MS-DOS
#  386BSD : 386BSD(98)c2
OS      = 386BSD

# Running hardware is ...
#  -DPCAT   : IBM PC/AT and its compatibles
#  -DPC98   : NEC PC9801
#  -DFMR    : Fujitsu FM-R
MACHINE = -DPC98

# Video mode for Linux
#  -DVGA    : normal VGA
#  -DET4000 : Tseng Lab. ET4000 chip
#VMODE   = -DVGA

# Option for optimizer and others
#OPT     = -O6 -funsigned-char -fwritable-strings
OPT     = -O -funsigned-char -fwritable-strings

ifeq ($(OS),LINUX)
  OSFLAG = -Dlinux
  LDFLAGS= -lm
endif
ifeq ($(OS),MINIX)
  OSFLAG = -Dminix -D_MINIX -D_POSIX_SOURCE
  LDFLAGS=
endif
ifeq ($(OS),MSDOS)
  OSFLAG = -Dmsdos
  LDFLAGS= -lm -lpc
endif
ifeq ($(OS),386BSD)
  OSFLAG =
  LDFLAGS= -lm
endif

CFLAGS = $(OPT) $(OSFLAG) $(MACHINE) $(VMODE)

OBJS   = main.o putdvi.o pret.o buf.o buffer.o dviread.o getfont.o \
         fontdef.o decodepk.o loadpk.o err.o option.o stack.o bitmap.o \
         raster.o misc.o jgfont.o vfont.o bitblt.o tpic.o vdata.o vraster.o
VOBJS  = init.o size.o device.o
POBJS  = prtinit.o prtsize.o p_out.o p_sub.o p_subnec.o conv.o \
         lips3.o escpage.o
AHEADS = config.h dd.h err.h

%.o:%.c
	$(CC) $(CFLAGS) -c $*.c
%.o:%.s
	$(CC) -c $*.s

all:    386bsd utils

minix:	$(OBJS) $(VOBJS) $(POBJS) mnxsub.o
	$(CC) -o dviout $(OBJS) $(VOBJS) mnxsub.o $(LDFLAGS)
	@chmem =2000000 dviout >/dev/null
	$(CC) -o dviprt $(OBJS) $(POBJS) $(LDFLAGS)
	@chmem =2000000 dviprt >/dev/null

linux:  $(OBJS) $(VOBJS) $(POBJS)
	$(CC) -o dviout $(OBJS) $(VOBJS) $(LDFLAGS)
	$(CC) -o dviprt $(OBJS) $(POBJS) $(LDFLAGS)

msdos:	$(OBJS) $(POBJS)
	$(CC) -o dviprt @dviprt.lnk $(LIBS) $(LDFLAGS)

386bsd:  $(OBJS) $(VOBJS) $(POBJS)
	$(CC) -o dviout $(OBJS) $(VOBJS) $(LDFLAGS)
	$(CC) -o dviprt $(OBJS) $(POBJS) $(LDFLAGS)

utils:  knjtopk knjfont optcfg

dviout: $(OBJS) $(VOBJS)
	$(CC) -o dviout $(OBJS) $(VOBJS) $(LDFLAGS)

dviprt:	$(OBJS) $(POBJS)
	$(CC) -o dviprt $(OBJS) $(POBJS) $(LDFLAGS)

knjtopk: knjtopk.c
	$(CC) $(CFLAGS) -o knjtopk knjtopk.c

knjfont: knjfont.c
	$(CC) $(CFLAGS) -o knjfont knjfont.c

optcfg: optcfg.c
	$(CC) $(CFLAGS) -o optcfg optcfg.c

clean:
	rm -rf dviout dviprt knjfont knjtopk optcfg *o core

install:
	install -cs -m 4755 dviout /usr/local/bin/
	install -cs knjtopk knjfont dviprt /usr/local/bin/

####################################
# Dependency
main.o	  : main.c $(AHEADS) vfont.h
putdvi.o  : putdvi.c $(AHEADS) dviread.h
pret.o	  : pret.c $(AHEADS) dviread.h prtout.h
buf.o	  : buf.c $(AHEADS)
buffer.o  : buffer.c $(AHEADS) buffer.h
dviread.o : dviread.c $(AHEADS)
getfont.o : getfont.c $(AHEADS) buffer.h dviread.h
fontdef.o : fontdef.c $(AHEADS) dviread.h vfont.h
decodepk.o: decodepk.c $(AHEADS) buffer.h
loadpk.o  : loadpk.c $(AHEADS) dviread.h
err.o     : err.c $(AHEADS)
option.o  : option.c $(AHEADS) option.h
stack.o   : stack.c $(AHEADS)
bitmap.o  : bitmap.c $(AHEADS)
raster.o  : raster.c $(AHEADS) buffer.h
misc.o    : misc.c $(AHEADS)
vfont.o   : vfont.c $(AHEADS) vfont.h vraster.h
jgfont.o  : jgfont.c $(AHEADS) jgfont.h vfont.h vraster.h
bitblt.o  : bitblt.c $(AHEADS)
tpic.o    : tpic.c $(AHEADS)
vdata.o   : vdata.c $(AHEADS) vfont.h vraster.h
vraster.o : vraster.c $(AHEADS) vfont.h vraster.h
init.o    : init.c $(AHEADS) dviread.h option.h version.h vfont.h
size.o    : size.c $(AHEADS) device.h
device.o  : device.c $(AHEADS) linux.drv minix.drv linux.h 386bsd.drv
mnxsub.o  : mnxsub.s
prtinit.o : prtinit.c $(AHEADS) dviread.h prtout.h option.h version.h vfont.h
prtsize.o : prtsize.c $(AHEADS) prtout.h
p_out.o   : p_out.c $(AHEADS) prtout.h prtctl.h
p_sub.o   : p_sub.c $(AHEADS)
p_subnec.o: p_subnec.c $(AHEADS)
lips3.o   : lips3.c $(AHEADS) lips3.h prtout.h prtctl.h
escpage.o : escpage.c $(AHEADS) escpage.h prtout.h prtctl.h
conv.o    : conv.s

#################################
