# @(#)Makefile	1.15   4/8/86 
#
# Super Make file for Excelan TCP/IP Protocol Package
#   	VAX 750 (AT&T SYSTEM5)
#

SYSTEM=S5vax750

VERSION=SYSTEM5

MACHINE=opus

BUS=PCBUS

# - set VCTR to the vector to be inserted on the bus 
#
#		0770 for in house 730

VCTR=0x310

#
# - set SELECT to EXOSSELECT, if the EXOS select function is to be
#   included in your drivers, or HOSTSELECT if there is a BSD 4.2
#   style select function available on your system already.
#   The effect of select may be simulated by "forking" additional
#   processes.  If this is desired, set select to NOSELECT.
#   NOSELECT may be used to save space if kernel memory is critical,
#   or if select is buggy on your system.
#
#SELECT=HOSTSELECT
#SELECT=NOSELECT
SELECT=EXOSSELECT

# - HOST_DEFINES percolate down through secondary Makefiles, for drivers,
#   libraries, and utilities.
HOST_DEFINES= -D$(MACHINE) -D$(SYSTEM) -D$(VERSION) -D$(SELECT)

# - set KERN_DEFINES to the particular set of defines and flags which
#   will be needed to correctly compile kernel code on your
#   system.  Modify src/lib/libex_driver/Makefile if driver compilation
#   is especially weird.

KERN_DEFINES=

# - set INCL to the location of the EXOS includes, may be empty
#   if installed under /usr/include

INCL=/usr/src/local/exos/include/EXOS

# - set LIB to the proper library directory for the user subroutine
#   library libsocket.a.

LIB=/lib

# - set LIBC to the proper name of the standard C runtime library.
#   This is used to replace perror with a version of perror which
#   will print network error messages
# - set CLIBPATH to the directory in which the C runtime library 
#   resides

CLIBPATH=/lib
LIBC=libc.a

# - set BINDIR to the proper directory for user programs

BINDIR=/usr/bin

# - set NET to the proper directory for network daemons and support
#   programs

NET=/net

# - set ETC to the proper directory for host database files

ETC=/etc

# - Names of compiler/assembler/linker/archiver for cross-compilation purposes
#   For zilog S8000, AS="cas -u"  and CC is not defined

CC=cc
AS=as
LD=cc
AR=ar

# - Ranlib for systems that have it

#RANLIB=ranlib
RANLIB=echo ranlib not available for:

# - combination of all of the above passed down to other makefiles

DEFS=CC=$(CC) AS=$(AS) LD=$(LD) AR=$(AR)\
     SYSTEM=$(SYSTEM) VERSION=$(VERSION) MACHINE=$(MACHINE)\
     BUS=$(BUS)\
     VCTR=$(VCTR)\
     RANLIB="$(RANLIB)" \
     SELECT=$(SELECT)\
     HOST_DEFINES="$(HOST_DEFINES)" KERN_DEFINES="$(KERN_DEFINES)"\
     INCL="$(INCL)" LIB=$(LIB) BINDIR=$(BINDIR) NET=$(NET) ETC=$(ETC)

# - set PRINT to local print incantation
#   and PF to output filter(s) if any

PRINT=pr
PF=| lpr

# Now for the rules to generate and install everything

help:
	@echo "Use one of:"
	@echo " make clean"
	@echo " make libraries"
	@echo " make binaries"
	@echo " make devices"
	@echo " make perror_obj"
	@echo " make perror"
	@echo " make unisoft3"
	@echo " make shortids"

clean:
	cd include/EXOS; make clean
	cd src/bin; make clean
	cd src/bin/test; make clean
	cd src/bin/test/udp; make clean
	cd src/bin/netser; make clean
	cd src/bin/netser/ftp; make clean
	cd src/bin/netser/telnet; make clean
	cd src/bin/netser/tools; make clean
	cd src/bin/netser/rwho; make clean
	cd src/bin/netser/netstat; make clean
	cd src/bin/netser/ud; make clean
#	cd src/bin/netser/whois; make clean
#	cd src/lib/libex_driver; make clean
	cd src/lib/libsocket; make clean
	cd src/lib/libndir; make clean
	cd src/lib/xlib/xgenlib; make clean
	cd src/lib/xlib/xoslib; make clean
	-rm -f lib/*
	echo > lib/placeholder

binaries:
	cd include/EXOS; make $(DEFS)
	cd src/bin; make $(DEFS)
	cd src/bin/netser; make $(DEFS)
	cd src/bin/netser/ftp;  make $(DEFS)
	cd src/bin/netser/telnet; make $(DEFS)
	cd src/bin/netser/netstat; make $(DEFS)
	cd src/bin/netser/ud; make $(DEFS)
	cd src/bin/netser/rwho; make $(DEFS)
	cd src/bin/netser/tools; make $(DEFS)
	cd src/bin/test; make $(DEFS)

tools:
	cd src/bin/netser/tools; make $(DEFS)

route:
	cd src/bin/netser/tools; make route $(DEFS)

ftp:
	cd src/bin/netser/ftp; make $(DEFS)

telnet:
	cd src/bin/netser/telnet; make $(DEFS)

rwho:
	cd src/bin/netser/rwho; make $(DEFS)

ud:
	cd src/bin/netser/ud; make $(DEFS)

whois:
	cd src/bin/netser/whois; make $(DEFS)

test:
	cd src/bin/test; make $(DEFS)
	cd src/bin/test/udp; make $(DEFS)

recv:
	cd src/bin/test ; make recv LIBRARY=$(LIB)/libsocket.a $(DEFS)	

send:
	cd src/bin/test ; make send LIBRARY=$(LIB)/libsocket.a $(DEFS)	

udp:
	cd src/bin/test/udp; make $(DEFS)

netload:
	cd src/bin; make $(DEFS)

netstat:
	cd src/bin/netser/netstat; make $(DEFS)

libraries:
	echo "Host Utilities: Release 3.3P (Oct. 1986)"
	cd include/EXOS/sys; make $(DEFS)
	cd include/EXOS/net; make $(DEFS)
	cd include/EXOS/netinet; make $(DEFS)
	cd include/EXOS/exos; make $(DEFS)
	cd include/EXOS; make $(DEFS)
#	cd src/lib/libex_driver/mdep; make $(DEFS)
#	cd src/lib/libex_driver; make $(DEFS)
	cd src/lib/xlib/xgenlib; make $(DEFS)
	cd src/lib/xlib/xoslib; make $(DEFS)
	cd src/lib/libsocket;    make $(DEFS)
	cd src/lib/libndir;    make $(DEFS)

drivers:
	cd src/lib/libex_driver; make $(DEFS)

xlib:
	cd src/lib/xlib/xgenlib; make $(DEFS)
	cd src/lib/xlib/xoslib; make $(DEFS)

libsocket:
	cd src/lib/libsocket; make $(DEFS)

libndir:
	cd src/lib/libndir; make $(DEFS)

devices:
	/bin/sh src/bin/dist/MKNODS

perror_obj:
	cd src/lib/libc; make $(DEFS) LIBC=$(LIBC) CLIBPATH=$(CLIBPATH)

perror:
	cd src/lib/libc; make perror $(DEFS) LIBC=$(LIBC) CLIBPATH=$(CLIBPATH)

unperror:
	cd src/lib/libc; make unperror $(DEFS) LIBC=$(LIBC) CLIBPATH=$(CLIBPATH)

install_libs:
#	cd src/lib/libex_driver; make install $(DEFS)
	cd src/lib/libsocket; make install $(DEFS)

install_net:
	cd src/bin/netser; make install ${DEFS}

	cd src/bin; make install $(DEFS)
	cd src/bin/netser; make install $(DEFS)
	cd src/bin/netser/tools; make install $(DEFS)
#	cd src/lib/libex_driver; make install $(DEFS)
	cd src/lib/libsocket; make install $(DEFS)

# unisoft system 3 has u-pointers instead of u-dots; system 5 went back to dots.
unisoft3:
	cd src/lib/libex_driver; make unisoft3

ununisoft3:
	cd src/lib/libex_driver; make ununisoft3

print:
	$(PRINT) Makefile include/EXOS/*.h include/EXOS/sys/*.h \
		include/EXOS/net/*.h $(PF)
	$(PRINT) src/bin/Makefile src/bin/*.c src/bin/dist/MKNODS $(PF)
	$(PRINT) src/bin/test/Makefile src/bin/test/*.c $(PF)
	$(PRINT) src/bin/netser/Makefile src/bin/netser/*.c $(PF)
	$(PRINT) src/bin/netser/tools/Makefile src/bin/netser/tools/*.c $(PF)
	$(PRINT) src/bin/netser/ftp/*.c $(PF)
	$(PRINT) src/bin/netser/telnet/*.c $(PF)
	$(PRINT) src/bin/netser/ud/*.c $(PF)
	$(PRINT) src/lib/libsocket/Makefile src/lib/libsocket/*.c $(PF)
	$(PRINT) src/lib/libex_driver/Makefile src/lib/libex_driver/*.[hcs] \
		src/lib/libex_driver/mdep/*.[cs] $(PF)
	$(PRINT) src/sys/callan/Makefile src/sys/callan/*.c \
		src/sys/zehntel/Makefile src/sys/zehntel/*.c $(PF)

rlogin rlogind rsh rshd rcp:
	cd src/bin/netser; make $@ $(DEFS)

netser:
	cd src/bin/netser; make $(DEFS)

libex:
	cd src/lib/libex_driver; make $(DEFS)

socket:
	cd src/lib/libsocket; make $(DEFS)

shortids:
	sh bin/idchange.sh

