# CFLAGS:
#	- DEBUG		prints some comments on stderr, usually /usr/adm/lpd-errs
#	-DDJCOMPRESS	compress the Deskjet stream
CFLAGS=-O -DDJCOMPRESS
#	BINDIR		Where the filter will be installed
BINDIR=/usr/local/lib
#	MANDIR		Where man pages will be installed
MANDIR=/usr/local/man

#
#	Change the following before issuing the "make install" rule
#	TTY		Which serial port DeskJet is attached to
TTY=ttya
#	SPEED	Baud rate for serial line.  030 systems change this to 9600
SPEED=19200
#	PRT		Name of printer as you want it called
PRT=dj

all:	djf
	@echo "To install, enter:		make install"
	@echo "If you want to enable the paper feed and resolution buttons, enter:"
	@echo "	make verify-shlib"
	@echo "	make change-shlib"

#########################################################
#	Modifying		/usr/shlib/libNeXT_s.C.shlib
#########################################################
#	Offsets to printer name, Cassette, Manual, 400dpi, 300dpi
NAMEO=784394
CASSO=806348
MANO=806357
DPI4O=784352
DPI3O=784344
#	New values. Careful about lengths of these fields!
#	NAMEN must be 26 chars and must match the ty= field in djf.printcap.
NAMEN="H-P  DeskJet  500  Printer"
CASSN="Tray    "
MANN=Envlop
DPI4N=150
DPI3N=300
#	binfile is used to assist in modifying /usr/shlib/libNeXT_s.C.shlib
binfile:	binfile.o $(LIBDIR)
	rm -rf binfile
	$(CC) -o binfile $(CFLAGS) binfile.o
	strip binfile

find-shlib:	binfile
	./binfile -f "NeXT 400 dpi Laser Printer" -f Cassette -f Manual -f "400 dpi" -f "300 dpi" 	/usr/shlib/libNeXT_s.C.shlib

verify-shlib:	binfile
	./binfile -v $(NAMEO) "NeXT 400 dpi Laser Printer" -v $(CASSO) Cassette -v $(MANO) Manual -v $(DPI4O) "400 dpi" -v $(DPI3O) "300 dpi" /usr/shlib/libNeXT_s.C.shlib
	@echo "If any of these failed, do not attempt 'make install-shlib'"
	
change-shlib:	binfile
	cp /usr/shlib/libNeXT_s.C.shlib /tmp/libNeXT_s.C.shlib
	chmod 0666 /tmp/libNeXT_s.C.shlib
	./binfile -c $(NAMEO) $(NAMEN) -c $(CASSO) $(CASSN) -c $(MANO) $(MANN) -c $(DPI4O) $(DPI4N) -c $(DPI3O) $(DPI3N) /tmp/libNeXT_s.C.shlib
	@echo "If this worked, you may (as root):	make install-shlib"

change-BAKshlib:	binfile
	cp /usr/shlib/libNeXT_s.C.shlib.BAK /tmp/libNeXT_s.C.shlib
	chmod 0666 /tmp/libNeXT_s.C.shlib
	./binfile -c $(NAMEO) $(NAMEN) -c $(CASSO) $(CASSN) -c $(MANO) $(MANN) -c $(DPI4O) $(DPI4N) -c $(DPI3O) $(DPI3N) /tmp/libNeXT_s.C.shlib
	@echo "If this worked, you may (as root):	make install-shlib"

install-shlib:	/tmp/libNeXT_s.C.shlib
	-[ -f /usr/shlib/libNeXT_s.C.shlib.BAK ] || cp -p /usr/shlib/libNeXT_s.C.shlib /usr/shlib/libNeXT_s.C.shlib.BAK
	@echo "This may cause NextStep to loop. You may need to reboot."
	cp /tmp/libNeXT_s.C.shlib /usr/shlib/libNeXT_s.C.shlib
	@echo "Installed a modified /usr/shlib/libNeXT_s.C.shlib"

verify-newshlib:	binfile
	./binfile -v $(NAMEO) $(NAMEN) -v $(CASSO) $(CASSN) -v $(MANO) $(MANN) -v $(DPI4O) $(DPI4N) -v $(DPI3O) $(DPI3N) /usr/shlib/libNeXT_s.C.shlib
	
verify-tmpshlib:	binfile
	./binfile -v $(NAMEO) $(NAMEN) -v $(CASSO) $(CASSN) -v $(MANO) $(MANN) -v $(DPI4O) $(DPI4N) -v $(DPI3O) $(DPI3N) /tmp/libNeXT_s.C.shlib
	
#########################################################
#	Base rules for making djf
#########################################################
.psw.o:
	-rm -f $*.c
	$(PSWRAP) $(PSWFLAGS) -a -o $*.c $*.psw
	$(CC) $(CFLAGS) -c $*.c
	-rm -f $*.c

djf: djf.o djwraps.o compress.o
	$(CC) -o djf djf.o djwraps.o compress.o -lNeXT_s
	strip djf

djwraps.o: djwraps.psw

clean:
	rm -f core *.o djf binfile

#########################################################
#	Rules for installing deskjet filter and creating the new printer
#########################################################
install:	djf
	sed -n -e "s/BBBB/$(SPEED)/g"  -e "s/PRT/$(PRT)/g"  -e "s/TTY/$(TTY)/g" -e 'w /tmp/printcap' < djf.printcap
	make installit

installit:
	-[ -d $(BINDIR) ] || mkdir $(BINDIR)
	-[ -d $(MANDIR) ] || mkdir $(MANDIR)
	-[ -d $(MANDIR)/man8 ] || mkdir $(MANDIR)/man8
	-[ -d /usr/spool/NeXT/$(PRT) ] || (mkdir /usr/spool/NeXT/$(PRT); chown agent.daemon /usr/spool/NeXT/$(PRT); chmod 770 /usr/spool/NeXT/$(PRT))
	@echo "Spool directory created..."
	rm -f $(BINDIR)/djf
	rm -f $(MANDIR)/man8/djf.8
	cp -p djf.8 $(MANDIR)/man8
	cp -p djf  $(BINDIR)
	@echo "Filter installed in $(BINDIR) ..."
	niload -v printcap . < /tmp/printcap
	@echo "Printers defined to system. You may see these by 'nidump printcap .'"

#########################################################
#	Test your new printer
#########################################################
test-150:	letter_150dpi_tray.ps
	lpr -P$(PRT)  letter_150dpi_tray.ps

test-300:	letter_300dpi_tray.ps
	lpr -P$(PRT)  letter_300dpi_tray.ps

