###  printed circuit board cad tools:
###    rat nester, autorouter, viewer, printer, postscript filter,
###    packer (two kinds), unpacker
###
###  Copyright (C) Randy Nevin, 1989, 1990.
###  See source code for rights granted.

CFLAGS = /nologo /Gs /Oat /W3 /Zp /c
MFLAGS = /t /ml

.c.obj :
	cl $(CFLAGS) $*.c

.asm.obj :
	masm $(MFLAGS) $*.asm;

###
###  various modules shared by the programs
###

alloc.obj : alloc.c

bitmap.obj : bitmap.c cell.h bitmap1.h bitmap2.h bitmap3.h

bitmap1.obj : bitmap1.c cell.h bitmap1.h

board.obj : board.c cell.h

dist.obj : dist.c cell.h

graphics.obj : graphics.c

io.obj : io.c cell.h

line.obj : line.c

queue.obj : queue.c cell.h

solve1.obj : solve.c cell.h
	cl $(CFLAGS) /DONESIDE /Fosolve1.obj solve.c

solve2.obj : solve.c cell.h
	cl $(CFLAGS) /DTWOSIDES /Fosolve2.obj solve.c

util.obj : util.asm

work.obj : work.c cell.h

###
###  pcbrat -- rat nester
###

pcbrat.obj : pcbrat.c cell.h

pcbrat.lnk : makefile
	echo pcbrat alloc bitmap1 board graphics io line util work >pcbrat.lnk
	echo pcbrat.exe /noi, pcbrat.map /m; >>pcbrat.lnk

pcbrat.exe : pcbrat.obj alloc.obj bitmap1.obj board.obj graphics.obj io.obj \
		line.obj util.obj work.obj pcbrat.lnk
	link @pcbrat.lnk

###
###  pcbrout1,pcbrout2 -- one-sided and two-sided autorouters
###

pcbroute.obj : pcbroute.c cell.h

pcbrout1.lnk : makefile
	echo pcbroute alloc board dist io queue solve1 work >pcbrout1.lnk
	echo pcbrout1.exe /noi, pcbrout1.map /m; >>pcbrout1.lnk

pcbrout1.exe : pcbroute.obj alloc.obj board.obj dist.obj io.obj queue.obj \
		solve1.obj work.obj pcbrout1.lnk
	link @pcbrout1.lnk

pcbrout2.lnk : makefile
	echo pcbroute alloc board dist io queue solve2 work >pcbrout2.lnk
	echo pcbrout2.exe /noi, pcbrout2.map /m; >>pcbrout2.lnk

pcbrout2.exe : pcbroute.obj alloc.obj board.obj dist.obj io.obj queue.obj \
		solve2.obj work.obj pcbrout2.lnk
	link @pcbrout2.lnk

###
###  pcbview -- board viewer
###

pcbview.obj : pcbview.c cell.h

pcbview.lnk : makefile
	echo pcbview alloc bitmap board graphics util >pcbview.lnk
	echo pcbview.exe /noi, pcbview.map /m; >>pcbview.lnk

pcbview.exe : pcbview.obj alloc.obj bitmap.obj board.obj graphics.obj \
		util.obj pcbview.lnk
	link @pcbview.lnk

###
###  pcbprint -- board printer (laser-printer formatter)
###

pcbprint.obj : pcbprint.c cell.h

pcbprint.lnk : makefile
	echo pcbprint alloc bitmap board >pcbprint.lnk
	echo pcbprint.exe /noi, pcbprint.map /m; >>pcbprint.lnk

pcbprint.exe : pcbprint.obj alloc.obj bitmap.obj board.obj pcbprint.lnk
	link @pcbprint.lnk

###
###  pcbpsplt -- postscript plotting filter, donated by dave schmidt
###

pcbpsplt.obj : pcbpsplt.c

pcbpsplt.lnk : makefile
	echo pcbpsplt, pcbpsplt.exe /noi, pcbpsplt.map /m; >pcbpsplt.lnk

pcbpsplt.exe : pcbpsplt.obj pcbpsplt.lnk
	link @pcbpsplt.lnk

###
###  pcbpak1 -- file packer (first kind)
###

pcbpak1.obj : pcbpak1.c

pcbpak1.lnk : makefile
	echo pcbpak1, pcbpak1.exe /noi, pcbpak1.map /m; >pcbpak1.lnk

pcbpak1.exe : pcbpak1.obj pcbpak1.lnk
	link @pcbpak1.lnk

###
###  pcbpak2 -- file packer (second kind)
###

pcbpak2.obj : pcbpak2.c

pcbpak2.lnk : makefile
	echo pcbpak2, pcbpak2.exe /noi, pcbpak2.map /m; >pcbpak2.lnk

pcbpak2.exe : pcbpak2.obj pcbpak2.lnk
	link @pcbpak2.lnk

###
###  pcbunpak -- file unpacker
###

pcbunpak.obj : pcbunpak.c

pcbunpak.lnk : makefile
	echo pcbunpak, pcbunpak.exe /noi, pcbunpak.map /m; >pcbunpak.lnk

pcbunpak.exe : pcbunpak.obj pcbunpak.lnk
	link @pcbunpak.lnk
