.include vcs.cfg

GETOPTS = ${REV}

#
# DIR0 and DIR2 are directories which do not contain logfiles
# DIR1 and DIR3 are directories which do contian logfiles
# DIR0 and DIR1 are all top level directories used for cleaning
#
# the following directories are needed for processing but do NOT
# contain pvcs logfiles in the pvcs tree
# if logfiles are added to one of these directories it should
# be moved to the DIR1 or DIR3 lists
#
# top level list
#
DIR0 = 	lib boot trc loader

# subdirectory list
#
DIR2 = 	i960/lib trc/lib trc/obj trc/snmp trc/boot fddicon/boot fddicon/lib \
	fddicon/drv fddicon/smt fddicon/smt/dp83200if fddicon/snmpmib \
	fddicon/ui 

# directories in the pvcs tree which contain logfiles
#
# top level list
#
DIR1 = 	include i960 tr_boot tr_app support fddicon fddi_boot fddi_app

# subdirectory list
#
DIR3 = 	boot/config boot/main boot/tester boot/tftpboot \
	i960/adminbus i960/debugger i960/include i960/kernel \
	i960/libc i960/libutil i960/system \
	i960/tcpip i960/tcpip/async i960/tcpip/bootp i960/tcpip/arp \
	i960/tcpip/ip i960/tcpip/mib2 i960/tcpip/mpd i960/tcpip/rip \
	i960/tcpip/slip i960/tcpip/snmp i960/tcpip/tcp i960/tcpip/telnet \
	i960/tcpip/tftp i960/tcpip/timep i960/tcpip/udp i960/tcpip/util \
	i960/uart i960/util i960/bp_ring \
	trc/boot/header trc/tms trc/util trc/include \
	trc/main trc/netio trc/mac \
	trc/snmp/include trc/snmp/routines trc/snmp/tree trc/snmp/rmon \
	trc/ui trc/ui/main trc/ui/cmd trc/ui/util trc/ui/include \
	loader/main loader/system fddicon/monp_boot \
	fddicon/boot/header fddicon/collector fddicon/drv/src \
	fddicon/drv/include fddicon/include fddicon/main fddicon/map \
	fddicon/netio fddicon/smt/csp fddicon/smt/dp83200if/csp \
	fddicon/smt/dp83200if/fbm fddicon/smt/dp83200if/headers \
	fddicon/smt/dp83200if/mib fddicon/smt/fbm fddicon/smt/headers \
	fddicon/smt/mib fddicon/snmpmib/rmon \
	fddicon/snmpmib/tree fddicon/snmpmib/hlsmib fddicon/snmpmib/include \
	fddicon/snmpmib/fddimib fddicon/ui/include \
	fddicon/ui/cmd fddicon/ui/main fddicon/ui/util fddicon/util \
	fddicon/tester fddicon/ringmap

#
# list of makefiles needed to generate the code
#
BMAKE =	i960/makefile \
	boot/config/makefile boot/main/makefile \
	boot/tester/makefile boot/tftpboot/makefile \
	i960/adminbus/makefile i960/debugger/makefile \
	i960/kernel/makefile \
	i960/libc/makefile i960/libutil/makefile i960/system/makefile \
	i960/tcpip/makefile i960/tcpip/async/makefile \
	i960/tcpip/bootp/makefile i960/tcpip/arp/makefile \
	i960/tcpip/ip/makefile i960/tcpip/mib2/makefile \
	i960/tcpip/mpd/makefile i960/tcpip/rip/makefile \
	i960/tcpip/slip/makefile i960/tcpip/snmp/makefile \
	i960/tcpip/tcp/makefile i960/tcpip/telnet/makefile \
	i960/tcpip/tftp/makefile i960/tcpip/timep/makefile \
	i960/tcpip/udp/makefile i960/tcpip/util/makefile \
	i960/uart/makefile i960/util/makefile i960/bp_ring/makefile \
	trc/boot/header/makefile \
	trc/tms/makefile trc/util/makefile \
	trc/main/makefile trc/netio/makefile  \
	trc/snmp/routines/makefile trc/snmp/tree/makefile \
	trc/snmp/rmon/makefile \
	trc/mac/makefile \
	trc/ui/makefile trc/ui/main/makefile trc/ui/cmd/makefile \
	trc/ui/util/makefile tr_boot/makefile tr_app/makefile \
	support/makefile loader/main/makefile loader/system/makefile \
	fddi_boot/makefile fddi_app/makefile fddicon/boot/header/makefile \
	fddicon/monp_boot/makefile fddicon/drv/src/makefile \
	fddicon/main/makefile fddicon/map/makefile fddicon/netio/makefile \
	fddicon/smt/csp/makefile fddicon/smt/dp83200if/csp/makefile \
	fddicon/smt/dp83200if/fbm/makefile fddicon/smt/dp83200if/mib/makefile \
	fddicon/smt/fbm/makefile fddicon/smt/mib/makefile \
	fddicon/tester/makefile fddicon/ringmap/makefile \
	fddicon/util/makefile fddicon/collector/makefile \
	fddicon/snmpmib/rmon/makefile fddicon/snmpmib/tree/makefile \
 	fddicon/snmpmib/hlsmib/makefile fddicon/snmpmib/fddimib/makefile \
	fddicon/ui/cmd/makefile fddicon/ui/main/makefile \
	fddicon/ui/util/makefile
	
BMAKE2 = i960/tcpip/tcpip.mak fddicon/fddi.mak

BCFG =	i960/vcs.cfg include/vcs.cfg \
	boot/config/vcs.cfg boot/main/vcs.cfg \
	boot/tester/vcs.cfg boot/tftpboot/vcs.cfg \
	i960/adminbus/vcs.cfg i960/debugger/vcs.cfg \
	i960/kernel/vcs.cfg i960/include/vcs.cfg \
	i960/libc/vcs.cfg i960/libutil/vcs.cfg i960/system/vcs.cfg \
	i960/tcpip/vcs.cfg i960/tcpip/async/vcs.cfg \
	i960/tcpip/bootp/vcs.cfg i960/tcpip/arp/vcs.cfg \
	i960/tcpip/ip/vcs.cfg i960/tcpip/mib2/vcs.cfg \
	i960/tcpip/mpd/vcs.cfg i960/tcpip/rip/vcs.cfg \
	i960/tcpip/slip/vcs.cfg i960/tcpip/snmp/vcs.cfg \
	i960/tcpip/tcp/vcs.cfg i960/tcpip/telnet/vcs.cfg \
	i960/tcpip/tftp/vcs.cfg i960/tcpip/timep/vcs.cfg \
	i960/tcpip/udp/vcs.cfg i960/tcpip/util/vcs.cfg \
	i960/uart/vcs.cfg i960/util/vcs.cfg i960/bp_ring/vcs.cfg \
	trc/boot/header/vcs.cfg \
	trc/tms/vcs.cfg trc/util/vcs.cfg \
	trc/snmp/routines/vcs.cfg trc/snmp/tree/vcs.cfg \
	trc/snmp/rmon/vcs.cfg trc/snmp/include/vcs.cfg \
	trc/mac/vcs.cfg \
	trc/main/vcs.cfg trc/netio/vcs.cfg  \
	trc/include/vcs.cfg trc/ui/vcs.cfg trc/ui/main/vcs.cfg \
	trc/ui/cmd/vcs.cfg trc/ui/util/vcs.cfg trc/ui/include/vcs.cfg \
	tr_boot/vcs.cfg tr_app/vcs.cfg \
	support/vcs.cfg loader/main/vcs.cfg loader/system/vcs.cfg \
	fddi_boot/vcs.cfg fddi_app/vcs.cfg \
	fddicon/boot/header/vcs.cfg fddicon/vcs.cfg fddicon/mkdeps.cfg \
	fddicon/include/vcs.cfg fddicon/map/vcs.cfg fddicon/util/vcs.cfg \
	fddicon/main/vcs.cfg \
	fddicon/collector/vcs.cfg fddicon/netio/vcs.cfg \
	fddicon/smt/csp/vcs.cfg fddicon/smt/fbm/vcs.cfg \
	fddicon/smt/headers/vcs.cfg fddicon/smt/mib/vcs.cfg \
	fddicon/smt/dp83200if/csp/vcs.cfg fddicon/smt/dp83200if/fbm/vcs.cfg \
	fddicon/smt/dp83200if/headers/vcs.cfg \
	fddicon/smt/dp83200if/mib/vcs.cfg fddicon/drv/src/vcs.cfg \
	fddicon/drv/include/vcs.cfg fddicon/ui/include/vcs.cfg \
	fddicon/ui/cmd/vcs.cfg fddicon/ui/main/vcs.cfg fddicon/ui/util/vcs.cfg \
	fddicon/snmpmib/rmon/vcs.cfg fddicon/snmpmib/tree/vcs.cfg \
	fddicon/snmpmib/fddimib/vcs.cfg fddicon/snmpmib/hlsmib/vcs.cfg \
	fddicon/snmpmib/include/vcs.cfg fddicon/tester/vcs.cfg \
	fddicon/ringmap/vcs.cfg	fddicon/monp_boot/vcs.cfg

warning:
	@clear
	@echo *** Please specify the options you want to make ...
	@echo ... all: means to compile '"TRC"' first, and then '"fddi_con"'
	@echo ... fddi: means to create fddi code and compile it for both fddi_boot and fddi_app.
	@echo ... fddi_boot_code:
	@echo ... fddi_app_code:
	@echo ... tr_boot_code:
	@echo ... tr_app_code:
	@echo ... allclean:
	@echo ... source_clean:

#----------------------- PVCS makefile sources
%if "$[r,$(VCSDIR)]"=""
SOURCEDIR = $[d,$(VCSDIR)]
%else
SOURCEDIR = $(VCSDIR)
%endif

.LOGFILE .fdvi(.fddi ${REV})
.LOGFILE .trv(.trc ${REV})
.LOGFILE .__v(.$() ${REV})
.LOGFILE .mav(.mak ${REV})
.LOGFILE .cfv(.cfg ${REV})

.SOURCE.fdvi: ${SOURCEDIR}
.SOURCE.trv: ${SOURCEDIR}
.SOURCE.__v: ${SOURCEDIR}
.SOURCE.mav: ${SOURCEDIR}
.SOURCE.cfv: ${SOURCEDIR}
#-----------------------------------------

all:	tr_code fddi

# added makefile to most of the following dependencies
# this should hacve the effect of pulling in the latest
# version of the makefile.
#
tree:	makefile ${DIR0} ${DIR1} ${DIR2} ${DIR3}

makefiles:	makefile global.fddi global.trc mkdeps.fddi mkdeps.trc ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2}

cfg:	makefile ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BCFG}

check:	makefile global.fddi global.trc mkdeps.fddi mkdeps.trc ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}

newversion: ${DIR1} ${DIR3}
	vcs -v${VER} ${VCSDIR}/*.??v*
	!vcs -v${VER} ${VCSDIR}/$?/*.??v*

listversion: ${DIR1} ${DIR3}
	vlog -bv${VER} ${VCSDIR}/*.??v*
	!vlog -bv${VER} ${VCSDIR}/$?/*.??v*

changed: ${DIR1} ${DIR3}
	vlog -bc${VER} ${VCSDIR}/*.??v*
	!vlog -bc${VER} ${VCSDIR}/$?/*.??v*

locked: ${DIR1} ${DIR3}
	@vlog -BL ${VCSDIR}/*.??v*
	@!vlog -BL ${VCSDIR}/$?/*.??v*

tr:	makefile global.trc mkdeps.trc
	rm -f global.mak mkdeps.cfg tr fd
	cp global.trc global.mak
	touch tr

fd:	makefile mkdeps.fddi global.fddi
	rm -f global.mak mkdeps.cfg tr fd
	cp global.fddi global.mak
	touch fd

fddi:  fddi_boot_code fddi_app_code

fddi_code:  fddi_boot_code fddi_app_code

fddi_clean:	fddi_boot_clean fddi_app_clean

tr_code:	tr_app_code tr_boot_code

tr_clean:	tr_app_clean tr_boot_clean

tr_boot_code:	tr ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd tr_boot; make all REV=${REV}

tr_app_code:	tr ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd tr_app; make all REV=${REV}

tr_boot_clean:	tr ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd tr_boot; make allclean

tr_app_clean:	tr ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd tr_app; make allclean

fddi_boot_code:	fd ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd fddi_boot; make all REV=${REV}

fddi_app_code:	fd ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd fddi_app; make all REV=${REV}

fddi_boot_clean: fd ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd fddi_boot; make allclean

fddi_app_clean:	fd ${DIR0} ${DIR1} ${DIR2} ${DIR3} ${BMAKE} ${BMAKE2} ${BCFG}
	cd fddi_app; make allclean

source_clean:	${DIR1} ${DIR3}
	!cd $?; rm -f *.c *.s *.h *.awk
	
clean:	tr_clean fddi_clean

allclean:
	rm -rf ${DIR0} ${DIR1}

${DIR0} ${DIR1} ${DIR2} ${DIR3}:
	mkdir $@

${BMAKE}:	$(VCSDIR)/$$(@R).__v
	get ${GETOPTS} ${VCSDIR}/$*.__v\($@\)

${BMAKE2}:	$(VCSDIR)/$$(@R).mav
	get ${GETOPTS} ${VCSDIR}/$*.mav\($@\)

${BCFG}:	$(VCSDIR)/$$(@R).cfv
	get ${GETOPTS} ${VCSDIR}/$*.cfv\($@\)

global.fddi:	${VCSDIR}/$$(@R).fdvi
	get ${GETOPTS} ${VCSDIR}/$*.fdvi\($@\)

global.trc mkdeps.trc:	${VCSDIR}/$$(@R).trv
	get ${GETOPTS} ${VCSDIR}/$*.trv\($@\)

mkdeps.fddi:	${VCSDIR}/$$(@R).fdvi
	get ${GETOPTS} ${VCSDIR}/$*.fdvi\($@\)

#mkdeps.trc:	${VCSDIR}/$$(@R).trv
#	get ${GETOPTS} ${VCSDIR}/$*.trv\($@\)

.__v.$():
        get ${GETOPTS} $?\($*\)
  @+echo The makefile $* has changed. Please restart MAKE to
  @+echo  ensure that the new file is used for the make.
  %exit 99

mav.mak:
	get ${GETOPTS} $?\($*\)
