#
# ~ppr/src/interfaces/Makefile
# Copyright 1995, 1996, 1997, Trinity College Computing Center.
# Written by David Chappell.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation.  This software is provided "as is" without express or
# implied warranty.
#
# Last modified 12 March 1997.
#

include ../include/global.mk

# This is the build target.  Its exact makeup varies
# according to whether we have AppleTalk and NetBIOS.
# If we have Streams NetBIOS, then ALLNETBIOS will be 
# defined as "allnetbios" in global.mk.  If we have
# some sort of AppleTalk, then ALLATALK will be defined
# as "allatalk".
all: $(ALLNETBIOS) $(ALLATALK) \
	alert$(DOTEXE) serial$(DOTEXE) \
	tcpip$(DOTEXT) lpr$(DOTEXE) 

# Extra stuff to build if we have NetBIOS.
allnetbios: client$(DOTEXE)

# Extra stuff to build if we have AppleTalk.
allatalk: atalk$(DOTEXE)

# Stuff to install.  This too varies according to whether
# we have AppleTalk and NetBIOS.
install: $(INSTALLATALK) $(INSTALLNETBIOS) \
	$(HOMEDIR)/interfaces/simple $(HOMEDIR)/lib/alert$(DOTEXE) \
	$(HOMEDIR)/lib/interface.sh $(HOMEDIR)/interfaces/dummy \
	$(HOMEDIR)/interfaces/gssimple $(HOMEDIR)/interfaces/serial$(DOTEXE) \
	$(HOMEDIR)/interfaces/tcpip$(DOTEXE) $(HOMEDIR)/interfaces/gstcpip \
	$(HOMEDIR)/interfaces/lpr$(DOTEXE) $(HOMEDIR)/interfaces/gsatalk

# Extra stuff to install if we have AppleTalk.
installatalk: $(HOMEDIR)/interfaces/atalk$(DOTEXE)

# Extra stuff to install if we have NetBIOS.
installnetbios: $(HOMEDIR)/interfaces/client$(DOTEXE)

# Build the AppleTalk interface by linking the atalk.o
# created by the rule below with the AppleTalk libraries
# for this system as defined in global.mk as ATALKLIBS.
atalk$(DOTEXE): atalk.$(OBJ) ../libppr.$(LIBEXT)
	$(CC) $(CFLAGS) -o atalk$(DOTEXE) atalk.$(OBJ) \
		$(ATALKLIBS) ../libppr.$(LIBEXT)
	$(STRIP) atalk$(DOTEXE)

# atalk.o will be compiled from atalk_ali.c or atalk_cap.c
# Notice that each depends on the other's include file(s)
# as well as its own.
atalk.$(OBJ): atalk_$(ATALKTYPE).c ../include/global_defines.h \
		../include/interface.h \
		../include/pap_proto.h ../include/cap_proto.h
	$(CC) $(CFLAGS) -c -o atalk.$(OBJ) atalk_$(ATALKTYPE).c

# This target will only be compiled on AT&T systems with Streams NetBIOS
client$(DOTEXE): client.c ../include/global_defines.h ../include/interface.h \
		../libppr.$(LIBEXT) ../include/client.h
	$(CC) $(CFLAGS) -o client client.c -lnsl ../libppr.$(LIBEXT)
	$(STRIP) client$(DOTEXE)

# Berkely LPR/LPD server
lpr$(DOTEXE): lpr.c ../include/global_defines.h ../include/interface.h \
		../libppr.$(LIBEXT)
	$(CC) $(CFLAGS) -o lpr lpr.c ../libppr.$(LIBEXT) $(SOCKLIBS)
	$(STRIP) lpr$(DOTEXE)

# Serial port interface
serial$(DOTEXE): serial.c ../include/global_defines.h ../include/interface.h
	$(CC) $(CFLAGS) -o serial serial.c ../libppr.$(LIBEXT)
	$(STRIP) serial$(DOTEXE)

# HP JetDirect style TCP/IP interface
tcpip$(DOTEXE): tcpip.c ../include/global_defines.h ../include/interface.h \
		../libppr.$(LIBEXT)
	$(CC) $(CFLAGS) -o tcpip tcpip.c ../libppr.$(LIBEXT) $(SOCKLIBS)
	$(STRIP) tcpip$(DOTEXE)

# Program used by shell script interfaces to post alerts
alert$(DOTEXE): alert.c ../include/global_defines.h ../include/util_exits.h \
		../libppr.$(LIBEXT)
	$(CC) $(CFLAGS) -o alert alert.c ../libppr.$(LIBEXT)
	$(STRIP) alert$(DOTEXE)

$(HOMEDIR)/interfaces/atalk$(DOTEXE): atalk$(DOTEXE)
	$(RMF) $(HOMEDIR)/interfaces/atalk$(DOTEXE)
	$(CP) atalk$(DOTEXE) $(HOMEDIR)/interfaces/atalk$(DOTEXE)

$(HOMEDIR)/interfaces/client$(DOTEXE): client$(DOTEXE)
	$(RMF) $(HOMEDIR)/interfaces/client$(DOTEXE)
	$(CP) client$(DOTEXE) $(HOMEDIR)/interfaces/client$(DOTEXE)

$(HOMEDIR)/interfaces/simple: simple.sh
	$(INSTALLSCRIPT) simple.sh $(HOMEDIR)/interfaces/simple

$(HOMEDIR)/interfaces/lpr$(DOTEXE): lpr$(DOTEXE)
	$(RMF) $(HOMEDIR)/interfaces/lpr$(DOTEXE)
	$(CP) lpr$(DOTEXE) $(HOMEDIR)/interfaces/lpr$(DOTEXE)

$(HOMEDIR)/interfaces/dummy: dummy.sh
	$(INSTALLSCRIPT) dummy.sh $(HOMEDIR)/interfaces/dummy

$(HOMEDIR)/interfaces/gssimple: gssimple.sh
	$(INSTALLSCRIPT) gssimple.sh $(HOMEDIR)/interfaces/gssimple

$(HOMEDIR)/interfaces/gstcpip: gstcpip.sh
	$(INSTALLSCRIPT) gstcpip.sh $(HOMEDIR)/interfaces/gstcpip

$(HOMEDIR)/interfaces/gsatalk: gsatalk.sh
	$(INSTALLSCRIPT) gsatalk.sh $(HOMEDIR)/interfaces/gsatalk

$(HOMEDIR)/lib/alert$(DOTEXE): alert$(DOTEXE)
	$(RMF) $(HOMEDIR)/lib/alert$(DOTEXE)
	$(CP) alert$(DOTEXE) $(HOMEDIR)/lib/alert$(DOTEXE)

$(HOMEDIR)/lib/interface.sh: interface.sh
	$(CP) interface.sh $(HOMEDIR)/lib/interface.sh

$(HOMEDIR)/interfaces/serial$(DOTEXE): serial$(DOTEXE) ../libppr.$(LIBEXT)
	$(CP) serial$(DOTEXE) $(HOMEDIR)/interfaces/serial$(DOTEXE)

$(HOMEDIR)/interfaces/tcpip$(DOTEXE): tcpip$(DOTEXE) ../libppr.$(LIBEXT)
	$(RMF) $(HOMEDIR)/interfaces/tcpip$(DOTEXE)
	$(CP) tcpip$(DOTEXE) $(HOMEDIR)/interfaces/tcpip$(DOTEXE)

# clean up
clean:
	$(RMF) *.o *.bak *~ *.bck
	$(RMF) atalk$(DOTEXE) client$(DOTEXE) lpr$(DOTEXE)
	$(RMF) alert$(DOTEXE) serial$(DOTEXE) tcpip$(DOTEXE)

# end of file
