SHELL=/bin/sh
SRCDIR=..
#PATH=$(PATH):.	# If this works on your system; otherwise, do it by hand.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# This is the Makefile for John Chambers' C audit/debug/verbose package. This #
# is  an assortment of debug printout routines, wrappers around system calls, #
# and other things that make it easier to find out what a C program is doing. #
# There are three header files associated with this package:  #               #
#       local.h contains system dependencies.                                 #
#         V.h contains debug definitions.                                   #
# The  header  files  audit.h  and verbose.h are links to V.h, which is the #
# primary header file for this package. You should be able to #include any of #
# these  in  an application, and all the rest will be #included in the proper #
# order.  You will also have to include libV.a (or audit.a or verbose.a) in #
# links; it is created here by merely typing "make", after you have made sure #
# that local.h is correct, of course.                                         #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Note that the "real" sources here are the .b files which are linked in from #
# the SRC directory  and  converted to .c files via the b-c script.  The .b.c #
# entry should always enable 0-1, and it is probably  a  wise  idea  to  keep #
# levels  0-5 alive.  Initially you should probably enable 0-8 and disable 9. #
# The :9 entries are very noisy, and are primarily for  debugging  the  debug #
# package  and other very-low-level code.  Note the .b.c entry using sed; the #
# b-c script is essentially this command in a package.                        #
#                                                                             #
# In addition to :1 t hru :9 there are a couple of other kinds of debug lines #
# used in this package:                                                       #
#   :f  is for function-stack code (Fenter, Fexit, etc.).                     #
#   :n  is for numbers, in variables whose names start with "dbn_".           #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
M=make -k
SRC=$(SRCDIR)/V
KIT=..

GET=/bin/ln -f
#GET=Threadize

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# The .SUFFIXES feature is broken on some versions of make.  If it  works  on #
# yours,  you may enable the following rules, and eliminate more than half of #
# this makefile.                                                              #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

BC=nice b-c 0-7a-hj-t 8-9iu-z
.SUFFIXES:
.SUFFIXES: .o .i .s .c .b
#b.c:;sed -e 's/^:[0-8]//' -e 's/^:[9].*//' -e "/^:t\(.*\)%D/s//\1`date`/"<$*.b >$@
.b.c:;$(BC) <$*.b >$@
.b.i:;make $*.c; make $*.i
.b.s:;make $*.c; make $*.s
.b.o:;make $*.c; make $*.o
.c.i:;$C -E $*.c |sed -e '/^[ 	]*$$/d' >$@
.c.s:;$C -S $*.c
.c.o:;$C -c $*.c

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# To compile this package on a new system, you should edit  two  files.   The #
# first  is  the  one  you're reading now, Makefile.  Examine the definitions #
# below, and make sure that such things as directories and  compiler  options #
# are  right for your v_system.  You may set the CFLAGS and LDFLAGS variables #
# in the environment, or you may define them here.                            #
#                                                                             #
# Also, examine the *local.h files that are included.  Pick one that is  like #
# your system, and call it "local.h".  Alternatively, if you have $SYSTYPE in #
# your environment, call it  $SYSTYPE_local.h,  and  make  will  link  it  to #
# local.h  automatically.  This is advised, because the "clobber" entry below #
# deletes local.h as part of its job  of  preparing  for  a  move  to  a  new #
# v_system.                                                                   #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# This debug package tends to defeat optimizers, but if you are going to  use #
# the  optimizer for deliverables, you should probably use it during testing, #
# to avoid nasty surprises.                                                   #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

CC=gcc
#CC=cc -w
C=$(CC) 
#CC=cc -pg
#C=nice $(CC) $(CFLAGS)

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# This is where and how we install things.  The best LC command is  one  that #
# will do a link when possible, and a copy otherwise, as lc does. You can use #
# ln or cp if you wish (or don't have lc).                                    #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

LIB=../lib
HDR=../../src/hdr
DOC=../../doc
LC=/bin/ln -f
#LDFLAGS=-L. -lV
#LDFLAGS=-threads
LDFLAGS=-O

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# These are abbreviations for things that can be made.  Some of them are made #
# by linking them from a remote source directory, so be careful here.         #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

Hdrs= \
	V.h local.h str.h sys_ctype.h sys_errno.h sys_stdio.h sys_time.h \
	sys_types.h 

Progs= \
	Vtest freetest1 freetest2 trimtest memtest strtest 

Q=Lc b-c lc LinkMy hostype

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# There should be nothing but definitions before this line; here are the main #
# entry  that make everything in this directory.  Note that the default entry #
# isn't "all"; by default we make only the library (archive) files.           #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

libs: $(Hdrs) libV.a
progs: $(Progs) $(Q)
all: Makefile $Q $(Hdrs) libV.a progs docs

#Makefile: $(SRC)/Makefile; $(LC) $(SRC)/Makefile Makefile; make

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

include local.mk

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# This package has been also installed under the names "audit" and "verbose", #
# and there are other names for similar packages in use, such as "trace". You #
# may find it necessary to use one of these other  names,  typically  because #
# your  managers don't want "debug" junk in their delivered product, but they #
# do want an "audit" or "verbose" capability and don't understand that  these #
# are  synonyms.   If  this  is  your  situation,  you can rename much of the #
# critical portions by making the following:                                  #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

verbose: verbose.h verbose.a doc/verbose.d

# You might also need to cover up the triviality of all this by sweeping thru
# the  code  and  making judicious name changes.  Look in Vopt.b for the code
# that looks for "D_" and "V_" for one set of critical changes.   Also,  look
# thru  V.h  for  names starting with "v_" and "V".  If you have my "rp" perl
# script, you can use it to make  global  substitutions  in  all  the  source
# files.  If not, you can roll your own script to do global renaming.

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# The test stuff uses the Test script, which is written in perl, so  none  of #
# this  will work unless you perl (4 or 5).  You can enable the "touch" lines #
# if you don't want to allow redundant tests.                                 #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

test: tests
#	touch test

tests: pl/Test Makefile $(Progs) test/bin test/prog/* test/std*/*
	-/bin/rm -f test/err/* test/out/* test/tmp*/* test/log/*
	pl/Test
#	touch tests

test/bin: ; mkdir -p test/bin

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# You probably can't do any of the installation to a global directory  unless #
# you're a super-user. It should work ok if the $(DOC) and $(LIB) directories #
# belong to you.  You might examine these  entries  carefully  before  typing #
# "make install".                                                             #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

install: lib hdr doc

doc: $(DOC) $(DOC)/V.d 
$(DOC):;mkdir -p $(DOC)
$(DOC)/V.d: doc/V.d; $(LC) V.d $(DOC)/V.d
$(DOC)/verbose.d: $(DOC)/V.d; $(LC) $(DOC)/V.d $(DOC)/verbose.d

lib: $(LIB) $(LIB)/libV.a 
$(LIB):;mkdir -p $(LIB)
$(LIB)/audit.a: audit.a; $(LC) audit.a $(LIB)/audit.a
$(LIB)/libV.a: libV.a; $(LC) libV.a $(LIB)/libV.a
$(LIB)/verbose.a: verbose.a; $(LC) verbose.a $(LIB)/verbose.a

hdr: $(HDR) $(HDR)/audit.h $(HDR)/V.h $(HDR)/verbose.h
$(HDR):;mkdir -p $(HDR)
$(HDR)/V.h: V.h; $(LC) V.h $(HDR)/V.h
$(HDR)/str.h: str.h; $(LC) str.h $(HDR)/str.h
$(HDR)/audit.h: $(HDR)/V.h; $(LC) $(HDR)/V.h $(HDR)/audit.h
$(HDR)/verbose.h: $(HDR)/V.h; $(LC) $(HDR)/V.h $(HDR)/verbose.h

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here is how we do a cleanup.  Note that the "clobber" entry gets rid of the #
# .c files, which can be reconstructed from the .b files.  Note also that the #
# "clobber" entry deletes local.h, so you should first make sure that it  has #
# a second name that indicates which system it's for. $SYSTYPE_local.h is the #
# preferred name.                                                             #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
neat:
	@echo Dir: `pwd`
	-/bin/rm -f core *.out* *.log* *.bak *.BAK *.hdr *-
	-/bin/rm -f test/*/*- test/err/* test/out/* test/tmp/* Test.*
clean: neat
	-/bin/rm -f *.a *.o *.i $Q *.sh?? ?tags tags local.h dependencies
clobber:clean
	-/bin/rm -f $(Progs) tags ?tags depend test/bin/*

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here are all the source files that make up libV.a:

SFILES= \
	backup.c binaddr.c v_accept.c v_alarm.c v_bcmp.c v_bcopy.c v_bind.c \
	v_bindap.c v_bshift.c v_buf.c v_bzero.c v_close.c v_connect.c v_data.c \
	v_dsp.c v_dumpv.c v_dup.c v_dup2.c v_encodei.c v_execv.c v_execve.c \
	v_execvp.c v_exit.c v_fclose.c v_fcntl.c v_fdopen.c v_fgets.c \
	v_filnam.c v_fopen.c v_fork.c v_fread.c v_free.c v_fstat.c v_index.c \
	v_inet_ntoa.c v_ioctl.c v_ipdot.c v_kill.c v_lastfld.c v_link.c \
	v_listen.c v_malloc.c v_misc.c v_mknod.c v_newfile.c v_open.c v_pipe.c \
	v_poll.c v_pthreads.c v_putenv.c v_read.c v_realloc.c v_recv.c \
	v_recvfr.c v_rename.c v_seek.c v_select.c v_send.c v_sendto.c \
	v_setpgrp.c v_setsockopt.c v_sigaction.c v_signal.c v_sleep.c \
	v_socket.c v_stat.c v_strdup.c v_strlen.c v_system.c v_tell.c v_time.c \
	v_uname.c v_unlink.c v_utime.c v_wait.c v_wait3.c v_write.c v_wwrite.c \
	Vcaller.c Vchklog.c Vdmsg.c Vinit.c Vnewlog.c Vopt.c \
	Vpmsg.c Vsmsg.c Vvmsg.c dmp_ascd.c dmp_data.c dmp_he.c \
	dmp_hexd.c dmp_hexout.c dmpstat.c err.c mem.c minrand.c nbio.c \
	str_appscm.c str_bldstr.c str_chksm.c str_cmpssm.c str_data.c \
	str_dupscm.c str_dupssm.c str_minstr.c str_misc.c str_npad.c \
	str_ntrim.c str_trim.c str_zapsm.c strnlen.c strtok.c symaddr.c 

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here are all the object files that make up libV.a:

OFILES= \
	backup.o binaddr.o v_accept.o v_alarm.o v_bcmp.o v_bcopy.o v_bind.o \
	v_bindap.o v_bshift.o v_buf.o v_bzero.o v_close.o v_connect.o v_data.o \
	v_dsp.o v_dumpv.o v_dup.o v_dup2.o v_encodei.o v_execv.o v_execve.o \
	v_execvp.o v_exit.o v_fclose.o v_fcntl.o v_fdopen.o v_fgets.o \
	v_filnam.o v_findenv.o v_fopen.o v_fork.o v_fread.o v_free.o v_fstat.o \
	v_fwrite.o v_getenv.o v_getsockopt.o v_gettod.o v_ghba.o v_ghbn.o \
	v_index.o v_inet_ntoa.o v_ioctl.o v_ipdot.o v_kill.o v_lastfld.o \
	v_link.o v_listen.o v_malloc.o v_misc.o v_mknod.o v_newfile.o v_open.o \
	v_pipe.o v_poll.o v_pthreads.o v_putenv.o v_read.o v_realloc.o \
	v_recv.o v_recvfr.o v_rename.o v_seek.o v_select.o v_send.o v_sendto.o \
	v_setpgrp.o v_setsockopt.o v_sigaction.o v_signal.o v_sleep.o \
	v_socket.o v_stat.o v_strdup.o v_strlen.o v_system.o v_tell.o v_time.o \
	v_uname.o v_unlink.o v_utime.o v_wait.o v_wait3.o v_write.o v_wwrite.o \
	Vcaller.o Vchklog.o Vdmsg.o Vinit.o Vnewlog.o Vopt.o \
	Vpmsg.o Vsmsg.o Vvmsg.o dmp_ascd.o dmp_data.o dmp_he.o \
	dmp_hexd.o dmp_hexout.o dmpstat.o err.o mem.o minrand.o nbio.o \
	str_appscm.o str_bldstr.o str_chksm.o str_cmpssm.o str_data.o \
	str_dupscm.o str_dupssm.o str_minstr.o str_misc.o str_npad.o \
	str_ntrim.o str_trim.o str_zapsm.o strnlen.o strtok.o symaddr.o libV_version.o

libV.a: $(OFILES)
	ar ru libV.a $(OFILES); ranlib libV.a
verbose.a: libV.a
	$(LC) libV.a verbose.a
audit.a: libV.a
	$(LC) libV.a audit.a
# Obsolescent name:
V.a: libV.a
	$(LC) libV.a V.a

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here are some alternate names for the header files:

V.h:  $(SRC)/V.h;  $(LC) $(SRC)/V.h  V.h
V_s_lc.h: $(SRC)/V_s_lc.h; $(LC) $(SRC)/V_s_lc.h V_s_lc.h
V_D_UC.h: $(SRC)/V_D_UC.h; $(LC) $(SRC)/V_D_UC.h V_D_UC.h
V_M_UC.h: $(SRC)/V_M_UC.h; $(LC) $(SRC)/V_M_UC.h V_M_UC.h
V_S_UC.h: $(SRC)/V_S_UC.h; $(LC) $(SRC)/V_S_UC.h V_S_UC.h
verbose.h: V.h; $(LC) V.h verbose.h
audit.h: V.h; $(LC) V.h audit.h
str.h:    $(SRC)/str.h;    $(LC) $(SRC)/str.h    str.h

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# At present, our docs are just in plain ASCII form.

docs: doc/V.d 
doc/verbose.d: doc/V.d
	$(LC) doc/V.d doc/verbose.d
doc/audit.d: doc/V.d
	$(LC) doc/V.d doc/audit.d
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here is how we link in some scripts from the sh subdirectory.  This can  be
# useful,  due to the vagaries of search paths on various systems.  Note that
# we give a clue to csh users; if you use another shell,  you  might  examine
# hostype to see if it can do the job, and extend it if it can't

#local.h:; LinkMy local.h
local.h: 
	./Configure

b-c: sh/b-c; /bin/ln -f sh/b-c b-c
lc: sh/lc.sh; /bin/ln -f sh/lc.sh lc
Lc: sh/Lc.sh; /bin/ln -f sh/Lc.sh Lc
LinkMy: sh/LinkMy; /bin/ln -f sh/LinkMy LinkMy
.hostype: sh/hostype; /bin/ln -f sh/hostype hostypehostype
hostype: sh/hostype; /bin/ln -f sh/hostype hostype
	@echo "	+----------------------------------------------------------+"
	@echo "	| If your host type can't be identified, type the command: |"
	@echo '	|   eval `hostype -cshe`                                   |'
	@echo "	| and try again.                                           |"
	@echo "	+----------------------------------------------------------+"

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# For vi users, here is how to build your tags file from the .b sources:

tags: Btags
	$(LC) Btags tags
Btags Ctags: *.[hc]
	-/bin/rm -f *tags
	ctags *.[hc]
	mv tags Ctags
	sed -e '/\.c	/s//.b	/' <Ctags >Btags

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# The following block of dependencies are used to link in source  files  from #
# various  remote  source  directories.  This is a good idea if you are doing #
# makes for several machines in parallel, to keep the source in sync.  If you #
# are only compiling for one machine, you may want to comment out this entire #
# block, or at least comment out the .b and .h entries.                       #

backup.b: $(SRC)/backup.b; $(GET) $(SRC)/backup.b backup.b
backup.c: backup.b; $(BC) <backup.b >backup.c
binaddr.b: $(SRC)/binaddr.b; $(GET) $(SRC)/binaddr.b binaddr.b
binaddr.c: binaddr.b; $(BC) <binaddr.b >binaddr.c
v_accept.b: $(SRC)/v_accept.b; $(GET) $(SRC)/v_accept.b v_accept.b
v_accept.c: v_accept.b; $(BC) <v_accept.b >v_accept.c
v_alarm.b: $(SRC)/v_alarm.b; $(GET) $(SRC)/v_alarm.b v_alarm.b
v_alarm.c: v_alarm.b; $(BC) <v_alarm.b >v_alarm.c
v_bcmp.b: $(SRC)/v_bcmp.b; $(GET) $(SRC)/v_bcmp.b v_bcmp.b
v_bcmp.c: v_bcmp.b; $(BC) <v_bcmp.b >v_bcmp.c
v_bcopy.b: $(SRC)/v_bcopy.b; $(GET) $(SRC)/v_bcopy.b v_bcopy.b
v_bcopy.c: v_bcopy.b; $(BC) <v_bcopy.b >v_bcopy.c
v_bind.b: $(SRC)/v_bind.b; $(GET) $(SRC)/v_bind.b v_bind.b
v_bind.c: v_bind.b; $(BC) <v_bind.b >v_bind.c
v_bindap.b: $(SRC)/v_bindap.b; $(GET) $(SRC)/v_bindap.b v_bindap.b
v_bindap.c: v_bindap.b; $(BC) <v_bindap.b >v_bindap.c
v_bshift.b: $(SRC)/v_bshift.b; $(GET) $(SRC)/v_bshift.b v_bshift.b
v_bshift.c: v_bshift.b; $(BC) <v_bshift.b >v_bshift.c
v_buf.b: $(SRC)/v_buf.b; $(GET) $(SRC)/v_buf.b v_buf.b
v_buf.c: v_buf.b; $(BC) <v_buf.b >v_buf.c
v_bzero.b: $(SRC)/v_bzero.b; $(GET) $(SRC)/v_bzero.b v_bzero.b
v_bzero.c: v_bzero.b; $(BC) <v_bzero.b >v_bzero.c
v_close.b: $(SRC)/v_close.b; $(GET) $(SRC)/v_close.b v_close.b
v_close.c: v_close.b; $(BC) <v_close.b >v_close.c
v_connect.b: $(SRC)/v_connect.b; $(GET) $(SRC)/v_connect.b v_connect.b
v_connect.c: v_connect.b; $(BC) <v_connect.b >v_connect.c
v_data.b: $(SRC)/v_data.b; $(GET) $(SRC)/v_data.b v_data.b
v_data.c: v_data.b; $(BC) <v_data.b >v_data.c
v_dsp.b: $(SRC)/v_dsp.b; $(GET) $(SRC)/v_dsp.b v_dsp.b
v_dsp.c: v_dsp.b; $(BC) <v_dsp.b >v_dsp.c
Vsmsg.b: $(SRC)/Vsmsg.b; $(GET) $(SRC)/Vsmsg.b Vsmsg.b
Vsmsg.c: Vsmsg.b; $(BC) <Vsmsg.b >Vsmsg.c
v_dumpv.b: $(SRC)/v_dumpv.b; $(GET) $(SRC)/v_dumpv.b v_dumpv.b
v_dumpv.c: v_dumpv.b; $(BC) <v_dumpv.b >v_dumpv.c
v_dup.b: $(SRC)/v_dup.b; $(GET) $(SRC)/v_dup.b v_dup.b
v_dup.c: v_dup.b; $(BC) <v_dup.b >v_dup.c
v_dup2.b: $(SRC)/v_dup2.b; $(GET) $(SRC)/v_dup2.b v_dup2.b
v_dup2.c: v_dup2.b; $(BC) <v_dup2.b >v_dup2.c
v_encodei.b: $(SRC)/v_encodei.b; $(GET) $(SRC)/v_encodei.b v_encodei.b
v_encodei.c: v_encodei.b; $(BC) <v_encodei.b >v_encodei.c
v_execv.b: $(SRC)/v_execv.b; $(GET) $(SRC)/v_execv.b v_execv.b
v_execv.c: v_execv.b; $(BC) <v_execv.b >v_execv.c
v_execve.b: $(SRC)/v_execve.b; $(GET) $(SRC)/v_execve.b v_execve.b
v_execve.c: v_execve.b; $(BC) <v_execve.b >v_execve.c
v_execvp.b: $(SRC)/v_execvp.b; $(GET) $(SRC)/v_execvp.b v_execvp.b
v_execvp.c: v_execvp.b; $(BC) <v_execvp.b >v_execvp.c
v_exit.b: $(SRC)/v_exit.b; $(GET) $(SRC)/v_exit.b v_exit.b
v_exit.c: v_exit.b; $(BC) <v_exit.b >v_exit.c
v_fclose.b: $(SRC)/v_fclose.b; $(GET) $(SRC)/v_fclose.b v_fclose.b
v_fclose.c: v_fclose.b; $(BC) <v_fclose.b >v_fclose.c
v_fcntl.b: $(SRC)/v_fcntl.b; $(GET) $(SRC)/v_fcntl.b v_fcntl.b
v_fcntl.c: v_fcntl.b; $(BC) <v_fcntl.b >v_fcntl.c
v_fct.b: $(SRC)/v_fct.b; $(GET) $(SRC)/v_fct.b v_fct.b
v_fdopen.b: $(SRC)/v_fdopen.b; $(GET) $(SRC)/v_fdopen.b v_fdopen.b
v_fdopen.c: v_fdopen.b; $(BC) <v_fdopen.b >v_fdopen.c
v_fgets.b: $(SRC)/v_fgets.b; $(GET) $(SRC)/v_fgets.b v_fgets.b
v_fgets.c: v_fgets.b; $(BC) <v_fgets.b >v_fgets.c
v_filnam.b: $(SRC)/v_filnam.b; $(GET) $(SRC)/v_filnam.b v_filnam.b
v_filnam.c: v_filnam.b; $(BC) <v_filnam.b >v_filnam.c
v_fopen.b: $(SRC)/v_fopen.b; $(GET) $(SRC)/v_fopen.b v_fopen.b
v_fopen.c: v_fopen.b; $(BC) <v_fopen.b >v_fopen.c
v_fork.b: $(SRC)/v_fork.b; $(GET) $(SRC)/v_fork.b v_fork.b
v_fork.c: v_fork.b; $(BC) <v_fork.b >v_fork.c
v_fread.b: $(SRC)/v_fread.b; $(GET) $(SRC)/v_fread.b v_fread.b
v_fread.c: v_fread.b; $(BC) <v_fread.b >v_fread.c
v_free.b: $(SRC)/v_free.b; $(GET) $(SRC)/v_free.b v_free.b
v_free.c: v_free.b; $(BC) <v_free.b >v_free.c
v_fstat.b: $(SRC)/v_fstat.b; $(GET) $(SRC)/v_fstat.b v_fstat.b
v_fstat.c: v_fstat.b; $(BC) <v_fstat.b >v_fstat.c
v_fwrite.b: $(SRC)/v_fwrite.b; $(GET) $(SRC)/v_fwrite.b v_fwrite.b
v_fwrite.c: v_fwrite.b; $(BC) <v_fwrite.b >v_fwrite.c
v_findenv.b: $(SRC)/v_findenv.b; $(GET) $(SRC)/v_findenv.b v_findenv.b
v_findenv.c: v_findenv.b; $(BC) <v_findenv.b >v_findenv.c
v_getenv.b: $(SRC)/v_getenv.b; $(GET) $(SRC)/v_getenv.b v_getenv.b
v_getenv.c: v_getenv.b; $(BC) <v_getenv.b >v_getenv.c
v_getsockopt.b: $(SRC)/v_getsockopt.b; $(GET) $(SRC)/v_getsockopt.b v_getsockopt.b
v_getsockopt.c: v_getsockopt.b; $(BC) <v_getsockopt.b >v_getsockopt.c
v_gettod.b: $(SRC)/v_gettod.b; $(GET) $(SRC)/v_gettod.b v_gettod.b
v_gettod.c: v_gettod.b; $(BC) <v_gettod.b >v_gettod.c
v_ghba.b: $(SRC)/v_ghba.b; $(GET) $(SRC)/v_ghba.b v_ghba.b
v_ghba.c: v_ghba.b; $(BC) <v_ghba.b >v_ghba.c
v_ghbn.b: $(SRC)/v_ghbn.b; $(GET) $(SRC)/v_ghbn.b v_ghbn.b
v_ghbn.c: v_ghbn.b; $(BC) <v_ghbn.b >v_ghbn.c
v_index.b: $(SRC)/v_index.b; $(GET) $(SRC)/v_index.b v_index.b
v_index.c: v_index.b; $(BC) <v_index.b >v_index.c
v_inet_ntoa.b: $(SRC)/v_inet_ntoa.b; $(GET) $(SRC)/v_inet_ntoa.b v_inet_ntoa.b
v_inet_ntoa.c: v_inet_ntoa.b; $(BC) <v_inet_ntoa.b >v_inet_ntoa.c
v_ioctl.b: $(SRC)/v_ioctl.b; $(GET) $(SRC)/v_ioctl.b v_ioctl.b
v_ioctl.c: v_ioctl.b; $(BC) <v_ioctl.b >v_ioctl.c
v_ipdot.b: $(SRC)/v_ipdot.b; $(GET) $(SRC)/v_ipdot.b v_ipdot.b
v_ipdot.c: v_ipdot.b; $(BC) <v_ipdot.b >v_ipdot.c
v_kill.b: $(SRC)/v_kill.b; $(GET) $(SRC)/v_kill.b v_kill.b
v_kill.c: v_kill.b; $(BC) <v_kill.b >v_kill.c
v_lastfld.b: $(SRC)/v_lastfld.b; $(GET) $(SRC)/v_lastfld.b v_lastfld.b
v_lastfld.c: v_lastfld.b; $(BC) <v_lastfld.b >v_lastfld.c
v_link.b: $(SRC)/v_link.b; $(GET) $(SRC)/v_link.b v_link.b
v_link.c: v_link.b; $(BC) <v_link.b >v_link.c
v_listen.b: $(SRC)/v_listen.b; $(GET) $(SRC)/v_listen.b v_listen.b
v_listen.c: v_listen.b; $(BC) <v_listen.b >v_listen.c
v_lseek.b: $(SRC)/v_lseek.b; $(GET) $(SRC)/v_lseek.b v_lseek.b
v_main.b: $(SRC)/v_main.b; $(GET) $(SRC)/v_main.b v_main.b
v_malloc.b: $(SRC)/v_malloc.b; $(GET) $(SRC)/v_malloc.b v_malloc.b
v_malloc.c: v_malloc.b; $(BC) <v_malloc.b >v_malloc.c
v_misc.b: $(SRC)/v_misc.b; $(GET) $(SRC)/v_misc.b v_misc.b
v_misc.c: v_misc.b; $(BC) <v_misc.b >v_misc.c
v_mknod.b: $(SRC)/v_mknod.b; $(GET) $(SRC)/v_mknod.b v_mknod.b
v_mknod.c: v_mknod.b; $(BC) <v_mknod.b >v_mknod.c
v_newfile.b: $(SRC)/v_newfile.b; $(GET) $(SRC)/v_newfile.b v_newfile.b
v_newfile.c: v_newfile.b; $(BC) <v_newfile.b >v_newfile.c
v_open.b: $(SRC)/v_open.b; $(GET) $(SRC)/v_open.b v_open.b
v_open.c: v_open.b; $(BC) <v_open.b >v_open.c
v_pipe.b: $(SRC)/v_pipe.b; $(GET) $(SRC)/v_pipe.b v_pipe.b
v_pipe.c: v_pipe.b; $(BC) <v_pipe.b >v_pipe.c
v_poll.b: $(SRC)/v_poll.b; $(GET) $(SRC)/v_poll.b v_poll.b
v_poll.c: v_poll.b; $(BC) <v_poll.b >v_poll.c
v_pthreads.b: $(SRC)/v_pthreads.b; $(GET) $(SRC)/v_pthreads.b v_pthreads.b
v_pthreads.c: v_pthreads.b; $(BC) <v_pthreads.b >v_pthreads.c
v_putenv.b: $(SRC)/v_putenv.b; $(GET) $(SRC)/v_putenv.b v_putenv.b
v_putenv.c: v_putenv.b; $(BC) <v_putenv.b >v_putenv.c
v_read.b: $(SRC)/v_read.b; $(GET) $(SRC)/v_read.b v_read.b
v_read.c: v_read.b; $(BC) <v_read.b >v_read.c
v_realloc.b: $(SRC)/v_realloc.b; $(GET) $(SRC)/v_realloc.b v_realloc.b
v_realloc.c: v_realloc.b; $(BC) <v_realloc.b >v_realloc.c
v_recv.b: $(SRC)/v_recv.b; $(GET) $(SRC)/v_recv.b v_recv.b
v_recv.c: v_recv.b; $(BC) <v_recv.b >v_recv.c
v_recvfr.b: $(SRC)/v_recvfr.b; $(GET) $(SRC)/v_recvfr.b v_recvfr.b
v_recvfr.c: v_recvfr.b; $(BC) <v_recvfr.b >v_recvfr.c
v_rename.b: $(SRC)/v_rename.b; $(GET) $(SRC)/v_rename.b v_rename.b
v_rename.c: v_rename.b; $(BC) <v_rename.b >v_rename.c
v_seek.b: $(SRC)/v_seek.b; $(GET) $(SRC)/v_seek.b v_seek.b
v_seek.c: v_seek.b; $(BC) <v_seek.b >v_seek.c
v_select.b: $(SRC)/v_select.b; $(GET) $(SRC)/v_select.b v_select.b
v_select.c: v_select.b; $(BC) <v_select.b >v_select.c
v_send.b: $(SRC)/v_send.b; $(GET) $(SRC)/v_send.b v_send.b
v_send.c: v_send.b; $(BC) <v_send.b >v_send.c
v_sendto.b: $(SRC)/v_sendto.b; $(GET) $(SRC)/v_sendto.b v_sendto.b
v_sendto.c: v_sendto.b; $(BC) <v_sendto.b >v_sendto.c
v_setpgrp.b: $(SRC)/v_setpgrp.b; $(GET) $(SRC)/v_setpgrp.b v_setpgrp.b
v_setpgrp.c: v_setpgrp.b; $(BC) <v_setpgrp.b >v_setpgrp.c
v_setsockopt.b: $(SRC)/v_setsockopt.b; $(GET) $(SRC)/v_setsockopt.b v_setsockopt.b
v_setsockopt.c: v_setsockopt.b; $(BC) <v_setsockopt.b >v_setsockopt.c
v_sigaction.b: $(SRC)/v_sigaction.b; $(GET) $(SRC)/v_sigaction.b v_sigaction.b
v_sigaction.c: v_sigaction.b; $(BC) <v_sigaction.b >v_sigaction.c
v_signal.b: $(SRC)/v_signal.b; $(GET) $(SRC)/v_signal.b v_signal.b
v_signal.c: v_signal.b; $(BC) <v_signal.b >v_signal.c
v_sleep.b: $(SRC)/v_sleep.b; $(GET) $(SRC)/v_sleep.b v_sleep.b
v_sleep.c: v_sleep.b; $(BC) <v_sleep.b >v_sleep.c
v_socket.b: $(SRC)/v_socket.b; $(GET) $(SRC)/v_socket.b v_socket.b
v_socket.c: v_socket.b; $(BC) <v_socket.b >v_socket.c
v_stat.b: $(SRC)/v_stat.b; $(GET) $(SRC)/v_stat.b v_stat.b
v_stat.c: v_stat.b; $(BC) <v_stat.b >v_stat.c
v_strdup.b: $(SRC)/v_strdup.b; $(GET) $(SRC)/v_strdup.b v_strdup.b
v_strdup.c: v_strdup.b; $(BC) <v_strdup.b >v_strdup.c
v_strlen.b: $(SRC)/v_strlen.b; $(GET) $(SRC)/v_strlen.b v_strlen.b
v_strlen.c: v_strlen.b; $(BC) <v_strlen.b >v_strlen.c
v_system.b: $(SRC)/v_system.b; $(GET) $(SRC)/v_system.b v_system.b
v_system.c: v_system.b; $(BC) <v_system.b >v_system.c
v_tell.b: $(SRC)/v_tell.b; $(GET) $(SRC)/v_tell.b v_tell.b
v_tell.c: v_tell.b; $(BC) <v_tell.b >v_tell.c
v_time.b: $(SRC)/v_time.b; $(GET) $(SRC)/v_time.b v_time.b
v_time.c: v_time.b; $(BC) <v_time.b >v_time.c
v_uname.b: $(SRC)/v_uname.b; $(GET) $(SRC)/v_uname.b v_uname.b
v_uname.c: v_uname.b; $(BC) <v_uname.b >v_uname.c
v_unlink.b: $(SRC)/v_unlink.b; $(GET) $(SRC)/v_unlink.b v_unlink.b
v_unlink.c: v_unlink.b; $(BC) <v_unlink.b >v_unlink.c
v_utime.b: $(SRC)/v_utime.b; $(GET) $(SRC)/v_utime.b v_utime.b
v_wait.b: $(SRC)/v_wait.b; $(GET) $(SRC)/v_wait.b v_wait.b
v_wait.c: v_wait.b; $(BC) <v_wait.b >v_wait.c
v_wait3.b: $(SRC)/v_wait3.b; $(GET) $(SRC)/v_wait3.b v_wait3.b
v_wait3.c: v_wait3.b; $(BC) <v_wait3.b >v_wait3.c
v_write.b: $(SRC)/v_write.b; $(GET) $(SRC)/v_write.b v_write.b
v_write.c: v_write.b; $(BC) <v_write.b >v_write.c
v_wwrite.b: $(SRC)/v_wwrite.b; $(GET) $(SRC)/v_wwrite.b v_wwrite.b
v_wwrite.c: v_wwrite.b; $(BC) <v_wwrite.b >v_wwrite.c
Vcaller.b: $(SRC)/Vcaller.b; $(GET) $(SRC)/Vcaller.b Vcaller.b
Vcaller.c: Vcaller.b; $(BC) <Vcaller.b >Vcaller.c
Vchklog.b: $(SRC)/Vchklog.b; $(GET) $(SRC)/Vchklog.b Vchklog.b
Vchklog.c: Vchklog.b; $(BC) <Vchklog.b >Vchklog.c
Vdmsg.b: $(SRC)/Vdmsg.b; $(GET) $(SRC)/Vdmsg.b Vdmsg.b
Vdmsg.c: Vdmsg.b; $(BC) <Vdmsg.b >Vdmsg.c
Vinit.b: $(SRC)/Vinit.b; $(GET) $(SRC)/Vinit.b Vinit.b
Vinit.c: Vinit.b; $(BC) <Vinit.b >Vinit.c
Vnewlog.b: $(SRC)/Vnewlog.b; $(GET) $(SRC)/Vnewlog.b Vnewlog.b
Vnewlog.c: Vnewlog.b; $(BC) <Vnewlog.b >Vnewlog.c
Vopt.b: $(SRC)/Vopt.b; $(GET) $(SRC)/Vopt.b Vopt.b
Vopt.c: Vopt.b; $(BC) <Vopt.b >Vopt.c
Vpmsg.b: $(SRC)/Vpmsg.b; $(GET) $(SRC)/Vpmsg.b Vpmsg.b
Vpmsg.c: Vpmsg.b; $(BC) <Vpmsg.b >Vpmsg.c
Vvmsg.b: $(SRC)/Vvmsg.b; $(GET) $(SRC)/Vvmsg.b Vvmsg.b
Vvmsg.c: Vvmsg.b; $(BC) <Vvmsg.b >Vvmsg.c
dmp_ascd.b: $(SRC)/dmp_ascd.b; $(GET) $(SRC)/dmp_ascd.b dmp_ascd.b
dmp_ascd.c: dmp_ascd.b; $(BC) <dmp_ascd.b >dmp_ascd.c
dmp_data.b: $(SRC)/dmp_data.b; $(GET) $(SRC)/dmp_data.b dmp_data.b
dmp_data.c: dmp_data.b; $(BC) <dmp_data.b >dmp_data.c
dmp_he.b: $(SRC)/dmp_he.b; $(GET) $(SRC)/dmp_he.b dmp_he.b
dmp_he.c: dmp_he.b; $(BC) <dmp_he.b >dmp_he.c
dmp_hexd.b: $(SRC)/dmp_hexd.b; $(GET) $(SRC)/dmp_hexd.b dmp_hexd.b
dmp_hexd.c: dmp_hexd.b; $(BC) <dmp_hexd.b >dmp_hexd.c
dmp_hexout.b: $(SRC)/dmp_hexout.b; $(GET) $(SRC)/dmp_hexout.b dmp_hexout.b
dmp_hexout.c: dmp_hexout.b; $(BC) <dmp_hexout.b >dmp_hexout.c
dmpstat.b: $(SRC)/dmpstat.b; $(GET) $(SRC)/dmpstat.b dmpstat.b
dmpstat.c: dmpstat.b; $(BC) <dmpstat.b >dmpstat.c
mem.b: $(SRC)/mem.b; $(GET) $(SRC)/mem.b mem.b
mem.c: mem.b; $(BC) <mem.b >mem.c
mem.h: $(SRC)/mem.h; $(LC) $(SRC)/mem.h mem.h
minrand.b: $(SRC)/minrand.b; $(GET) $(SRC)/minrand.b minrand.b
minrand.c: minrand.b; $(BC) <minrand.b >minrand.c
minrand.h: $(SRC)/minrand.h; $(LC) $(SRC)/minrand.h minrand.h
nbio.b: $(SRC)/nbio.b; $(GET) $(SRC)/nbio.b nbio.b
nbio.c: nbio.b; $(BC) <nbio.b >nbio.c
srvr.h: $(SRC)/srvr.h; $(LC) $(SRC)/srvr.h srvr.h
str_appscm.b: $(SRC)/str_appscm.b; $(GET) $(SRC)/str_appscm.b str_appscm.b
str_appscm.c: str_appscm.b; $(BC) <str_appscm.b >str_appscm.c
str_bldstr.b: $(SRC)/str_bldstr.b; $(GET) $(SRC)/str_bldstr.b str_bldstr.b
str_bldstr.c: str_bldstr.b; $(BC) <str_bldstr.b >str_bldstr.c
str_chksm.b: $(SRC)/str_chksm.b; $(GET) $(SRC)/str_chksm.b str_chksm.b
str_chksm.c: str_chksm.b; $(BC) <str_chksm.b >str_chksm.c
str_cmpssm.b: $(SRC)/str_cmpssm.b; $(GET) $(SRC)/str_cmpssm.b str_cmpssm.b
str_cmpssm.c: str_cmpssm.b; $(BC) <str_cmpssm.b >str_cmpssm.c
str_data.b: $(SRC)/str_data.b; $(GET) $(SRC)/str_data.b str_data.b
str_data.c: str_data.b; $(BC) <str_data.b >str_data.c
str_dupscm.b: $(SRC)/str_dupscm.b; $(GET) $(SRC)/str_dupscm.b str_dupscm.b
str_dupscm.c: str_dupscm.b; $(BC) <str_dupscm.b >str_dupscm.c
str_dupssm.b: $(SRC)/str_dupssm.b; $(GET) $(SRC)/str_dupssm.b str_dupssm.b
str_dupssm.c: str_dupssm.b; $(BC) <str_dupssm.b >str_dupssm.c
str_minstr.b: $(SRC)/str_minstr.b; $(GET) $(SRC)/str_minstr.b str_minstr.b
str_minstr.c: str_minstr.b; $(BC) <str_minstr.b >str_minstr.c
str_misc.b: $(SRC)/str_misc.b; $(GET) $(SRC)/str_misc.b str_misc.b
str_misc.c: str_misc.b; $(BC) <str_misc.b >str_misc.c
str_npad.b: $(SRC)/str_npad.b; $(GET) $(SRC)/str_npad.b str_npad.b
str_npad.c: str_npad.b; $(BC) <str_npad.b >str_npad.c
str_ntrim.b: $(SRC)/str_ntrim.b; $(GET) $(SRC)/str_ntrim.b str_ntrim.b
str_ntrim.c: str_ntrim.b; $(BC) <str_ntrim.b >str_ntrim.c
str_trim.b: $(SRC)/str_trim.b; $(GET) $(SRC)/str_trim.b str_trim.b
str_trim.c: str_trim.b; $(BC) <str_trim.b >str_trim.c
str_zapsm.b: $(SRC)/str_zapsm.b; $(GET) $(SRC)/str_zapsm.b str_zapsm.b
str_zapsm.c: str_zapsm.b; $(BC) <str_zapsm.b >str_zapsm.c
strnlen.b: $(SRC)/strnlen.b; $(GET) $(SRC)/strnlen.b strnlen.b
strtok.b: $(SRC)/strtok.b; $(GET) $(SRC)/strtok.b strtok.b
strtok.c: strtok.b; $(BC) <strtok.b >strtok.c
symaddr.b: $(SRC)/symaddr.b; $(GET) $(SRC)/symaddr.b symaddr.b
symaddr.c: symaddr.b; $(BC) <symaddr.b >symaddr.c
sys_ctype.h: $(SRC)/sys_ctype.h; $(LC) $(SRC)/sys_ctype.h sys_ctype.h
sys_errno.h: $(SRC)/sys_errno.h; $(LC) $(SRC)/sys_errno.h sys_errno.h
sys_fcntl.h: $(SRC)/sys_fcntl.h; $(LC) $(SRC)/sys_fcntl.h sys_fcntl.h
sys_in.h: $(SRC)/sys_in.h; $(LC) $(SRC)/sys_in.h sys_in.h
sys_malloc.h: $(SRC)/sys_malloc.h; $(LC) $(SRC)/sys_malloc.h sys_malloc.h
sys_netdb.h: $(SRC)/sys_netdb.h; $(LC) $(SRC)/sys_netdb.h sys_netdb.h
sys_pthreads.h: $(SRC)/sys_pthreads.h; $(LC) $(SRC)/sys_pthreads.h sys_pthreads.h
sys_resource.h: $(SRC)/sys_resource.h; $(LC) $(SRC)/sys_resource.h sys_resource.h
sys_signal.h: $(SRC)/sys_signal.h; $(LC) $(SRC)/sys_signal.h sys_signal.h
sys_socket.h: $(SRC)/sys_socket.h; $(LC) $(SRC)/sys_socket.h sys_socket.h
sys_stat.h: $(SRC)/sys_stat.h; $(LC) $(SRC)/sys_stat.h sys_stat.h
sys_stdio.h: $(SRC)/sys_stdio.h; $(LC) $(SRC)/sys_stdio.h sys_stdio.h
sys_stdlib.h: $(SRC)/sys_stdlib.h; $(LC) $(SRC)/sys_stdlib.h sys_stdlib.h
sys_time.h: $(SRC)/sys_time.h; $(LC) $(SRC)/sys_time.h sys_time.h
sys_types.h: $(SRC)/sys_types.h; $(LC) $(SRC)/sys_types.h sys_types.h
sys_utsname.h: $(SRC)/sys_utsname.h; $(LC) $(SRC)/sys_utsname.h sys_utsname.h
sys_varargs.h: $(SRC)/sys_varargs.h; $(LC) $(SRC)/sys_varargs.h sys_varargs.h
sys_wait.h: $(SRC)/sys_wait.h; $(LC) $(SRC)/sys_wait.h sys_wait.h

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here are some entries to do partial compiles, so we can parallelize the job #
# somewhat.  This can save time when a total recompile  is  necessary,  since #
# Unix can generally do 3 or 4 compiles in the same time as one.              #

O0: backup.o v_encodei.o v_index.o v_poll.o v_signal.o v_write.o dmp_hexout.o str_trim.o
O1: binaddr.o v_exit.o v_fwrite.o v_newfile.o v_socket.o Vchklog.o trimtest.o memtest.o str_zapsm.o
O2: v_accept.o v_filnam.o v_lastfld.o v_recv.o v_strdup.o Vinit.o mem.o str_minstr.o
O3: v_alarm.o v_fclose.o v_inet_ntoa.o v_recvfr.o v_time.o Vpmsg.o minrand.o strnlen.o
O4: v_bcmp.o v_execv.o v_getenv.o v_open.o v_sendto.o v_wait.o dmp_he.o str_cmpssm.o
O5: v_bcopy.o v_fcntl.o v_getsockopt.o v_rename.o v_uname.o Vvmsg.o str_bldstr.o
O6: v_bind.o v_execve.o v_gettod.o v_pthreads.o v_strlen.o Vsmsg.o nbio.o str_npad.o
O7: v_bindap.o v_findenv.o v_link.o v_realloc.o v_system.o Vtest.o str_appscm.o symaddr.o
O8: v_bshift.o v_fopen.o v_ioctl.o v_putenv.o v_stat.o v_wwrite.o dmpstat.o str_ntrim.o
O9: v_buf.o v_dup.o v_fread.o v_listen.o v_select.o v_utime.o dmp_ascd.o str_data.o
OA: v_bzero.o v_fct.o v_fstat.o v_malloc.o v_setpgrp.o Vcaller.o err.o str_dupscm.o
OB: v_close.o v_fdopen.o v_ipdot.o v_read.o v_sleep.o v_wait3.o dmp_hexd.o str_misc.o
OC: v_connect.o v_fork.o v_kill.o v_pipe.o v_setsockopt.o Vnewlog.o str_chksm.o
OD: v_data.o v_execvp.o v_ghba.o v_misc.o v_send.o v_unlink.o dmp_data.o str_dupssm.o
OE: v_dsp.o v_dup2.o v_free.o v_lseek.o v_seek.o v_tell.o Vopt.o freetest1.o strtest.o
OF: v_dumpv.o v_fgets.o v_ghbn.o v_mknod.o v_sigaction.o Vdmsg.o freetest2.o strtok.o

O01: O0 O1
O23: O2 O3
O45: O4 O5
O67: O6 O7
O89: O8 O9
OAB: OA OB
OCD: OC OD
OEF: OE OF
O03: O0 O1 O2 O3
O47: O4 O5 O6 O7
O8B: O8 O9 OA OB
OCF: OC OD OE OF
O07: O03 O47
O8F: O8B OCF
OBJ: O07 O8F

# Here are some entries to make the .o files in parallel:
o2:
	@echo Make the .o files in 2 parallel makes ...
	@$M O07 & $M O8F & wait
o4:
	@echo Make the .o files in 4 parallel makes ...
	@$M O03 & $M O47 & $M O8B & $M OCF & wait
o8:
	@echo Make the .o files in 8 parallel makes ...
	@$M O01 & $M O23 & $M O45 & $M O67 & \
	$M O89 & $M OAB & $M OCD & $M OEF & wait
	@echo Parallel makes done.
par: o4
pan: par all neat
pant: par all neat test
pain: par all install neat
paint: par all install neat test
pin: par install neat
pint: pin test

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Invoke the errnotbl script to generate a table  of  errno  codes  for  this #
# system.   You  may need to modify errnotbl for your system if it can't fine #
# the list of errno mnemonics and messages. It knows to look places like "man #
# 2  errno"  and "man 2 intro", as well as <errno.h>, but the following entry #
# may need to be set up to point to the right place, or  make  won't  trigger #
# the command.                                                                #

err.b err.h: errnotbl
	@echo Make sure the correct man page is referenced here:
#	errnotbl 2 errno err.b
#	errnotbl 2 intro err.b
#	errnotbl -1 aix_errno.h err.b
	errnotbl -1 /usr/include/errno.h err.b
err.c: err.b ; rm -f err.c; $(BC) <err.b >err.c
errnotbl: $(SRC)/errnotbl; $(LC) $(SRC)/errnotbl errnotbl

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

Vtest.b:    $(SRC)/Vtest.b;    $(GET) $(SRC)/Vtest.b Vtest.b
Vtest.c: Vtest.b; $(BC) <Vtest.b >Vtest.c
Vtest.ln: Vtest.c $(SFILES); lint Vtest.c $(SFILES) >Vtest.ln
#Vtest.o:	Vtest.c V.h sys_varargs.h; $C -c -DTEST=8 -DDEBUG=8 Vtest.c
Vtest: Vtest.c libV.a
	$C -o Vtest -DTEST=8 -DDEBUG=8 Vtest.c libV.a $(LDFLAGS)
Vtest.load: Vtest.c $(SFILES)
	#setopt primary_language C
	#load -C Vtest.c $(SFILES)
	#source Vtest.sup
	#setopt program_name Vtest
	#cmode
Vtest.unload:
	#unload Vtest.c

freetest1.b: $(SRC)/freetest1.b; $(GET) $(SRC)/freetest1.b freetest1.b
freetest1.c: freetest1.b; $(BC) <freetest1.b >freetest1.c
freetest1: freetest1.c libV.a
	@echo '====> Expect warning about a multi-character character constant:'
	$C -o freetest1 -DTEST freetest1.c libV.a
	$(LC) freetest1 test/bin/freetest1
freetest1.load: freetest1.c $(SFILES)
	#setopt primary_language C
	#load -C freetest1.c $(SFILES)
	#source freetest1.sup
	#setopt program_name freetest1
	#cmode
freetest1.unload:
	#unload freetest1.c

freetest2.b: $(SRC)/freetest2.b; $(GET) $(SRC)/freetest2.b freetest2.b
freetest2.c: freetest2.b; $(BC) <freetest2.b >freetest2.c
freetest2: freetest2.c libV.a
	$C -o freetest2 -DTEST freetest2.c libV.a
	$(LC) freetest2 test/bin/freetest2
freetest2.load: freetest2.c $(SFILES)
	#setopt primary_language C
	#load -C freetest2.c $(SFILES)
	#source freetest2.sup
	#setopt program_name freetest2
	#cmode
freetest2.unload:
	#unload freetest2.c

trimtest.b: $(SRC)/trimtest.b; $(GET) $(SRC)/trimtest.b trimtest.b
trimtest.c: trimtest.b; $(BC) <trimtest.b >trimtest.c
trimtest: trimtest.c libV.a
	$C -o trimtest -DTEST trimtest.c libV.a
	$(LC) trimtest test/bin/trimtest
trimtest.load: trimtest.c $(SFILES)
	#setopt primary_language C
	#load -C trimtest.c $(SFILES)
	#source trimtest.sup
	#setopt program_name trimtest
	#cmode
trimtest.unload:
	#unload trimtest.c

memtest.b: $(SRC)/memtest.b; $(GET) $(SRC)/memtest.b memtest.b
memtest.c: memtest.b; $(BC) <memtest.b >memtest.c
memtest: memtest.c libV.a
	$C -o memtest -DTEST memtest.c libV.a
	$(LC) memtest test/bin/memtest
memtest.load: memtest.c $(SFILES)
	#setopt primary_language C
	#load -C memtest.c $(SFILES)
	#source memtest.sup
	#setopt program_name memtest
	#cmode
memtest.unload:
	#unload memtest.c

strtest.b: $(SRC)/strtest.b; $(GET) $(SRC)/strtest.b strtest.b
strtest.c: strtest.b; $(BC) <strtest.b >strtest.c
strtest: strtest.c libV.a; $C -o strtest -DTEST strtest.c libV.a
strtest.load: strtest.c $(SFILES)
	#setopt primary_language C
	#load -C strtest.c $(SFILES)
	#source strtest.sup
	#setopt program_name strtest
	#cmode
strtest.unload:
	#unload strtest.c

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Because  we're  doing  so  much low-level stuff, lint isn't as useful as we #
# might wish, but it is still useful.                                         #

lint: Vtest.ln

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Kits  are  made  via  tar  and  shar.   The  results  are put in the parent #
# directory.  There will be a bunch of  V.sh??   files,  plus  v_.cp.Z  and #
# V.tar.Z, which should satisfy just about everyone. Note that the shar kit #
# actually reads MANIFEST to get its file list.                               #

F=M* R* V.README *.[bh] *.mk doc/*

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here is how we make cpio and tar kits:

dist kits: cpiokit tarkit
objcpio: all neat cpiokit
objtar:  all neat tarkit
srccpio: clobber  cpiokit
srctar:  clobber  tarkit

cpiokit: $F clean
	ls $F sh/* sh/.??* pl/* |cpio -oc >../v_.cp
	compress ../v_.cp
	touch cpiokit

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here's how to make a mailable kits using Rich $alz's cshar/makekit:

csharkit: MANIFEST $F
	-/bin/rm -f ../V.sh??
	makekit -m -n../V.sh
	touch sharkit

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# Here's how to make a mailable kits using GNU shar:
# WARNING: These entries do a "make clobber".

shar: gsharkit
sharkit: gsharkit
gsharkit: clobber Manifest $F
	-/bin/rm -f $(KIT)/V.sh??
	gshar <Manifest -S -a -nV -o$(KIT)/V.sh -L50
	touch gsharkit
Manifest: 
	find . -type f -print | sed -e 's/^\.\///' >Manifest

tarkit: $(KIT) $F neat
#	tar -cf - $F sh sh.* | compress > $(KIT)/V.tar.Z
	if [ -f local.h ];then Mv local.h $(SYSTYPE)_local.h; fi
	tar -cf - $F pl sh sh.* test | gzip > $(KIT)/V.tar.gz
	$(LC) V.README $(KIT)/V.README
	touch tarkit
$(KIT):
	mkdir -p $(KIT)
V.README: README
	Ln README V.README

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #

#libV_version.c: $(SFILES)
#	echo char libV_version[]={\" > libV_version.c
#	cvs stat -l | grep -v "^$$" | grep -v "Sticky" >> libV_version.c
#	echo \"}\; >> libV_version.c

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# The makedepend command has gotten too flakey to be useful,  and  the  linux #
# makedepend  totally failed, so I wrote the mkdep script to do it right.  If #
# your makedepend works, you can use it instead (but note  that  it  may  not #
# generate the .o.c dependencies). What I do is type "make dependencies", and #
# then replace the tail of this Makefile with the dependencies file  that  is #
# produced.                                                                   #

dependencies:  $(SFILES)
	mkdep +a $(SFILES) >dependencies

# The following entry isn't recommended on SunOS:
depend: depends
depends: $(DFILES)
	makedepend -- $(CFLAGS) -- $(SFILES)
	touch depends
# DO NOT DELETE THIS LINE -- make depend depends on it.

backup.o: \
	backup.c V.h local.h mem.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

binaddr.o: \
	binaddr.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_in.h sys_netdb.h \
	sys_socket.h sys_stdio.h sys_time.h sys_types.h 

v_accept.o: \
	v_accept.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

v_alarm.o: \
	v_alarm.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_bcmp.o: \
	v_bcmp.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_bcopy.o: \
	v_bcopy.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_bind.o: \
	v_bind.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

v_bindap.o: \
	v_bindap.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

v_bshift.o: \
	v_bshift.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_buf.o: \
	v_buf.c V.h local.h mem.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_bzero.o: \
	v_bzero.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_close.o: \
	v_close.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_connect.o: \
	v_connect.c V.h V_S_UC.h local.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_socket.h sys_stdio.h sys_time.h sys_types.h 

v_data.o: \
	v_data.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_dsp.o: \
	v_dsp.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h sys_time.h \
	sys_types.h 

Vsmsg.o: \
	Vsmsg.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_dumpv.o: \
	v_dumpv.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_dup.o: \
	v_dup.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h sys_time.h \
	sys_types.h 

v_dup2.o: \
	v_dup2.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_encodei.o: \
	v_encodei.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_execv.o: \
	v_execv.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_execve.o: \
	v_execve.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_execvp.o: \
	v_execvp.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_exit.o: \
	v_exit.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_fclose.o: \
	v_fclose.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_fcntl.o: \
	v_fcntl.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_fcntl.h \
	sys_stdio.h sys_time.h sys_types.h 

v_fdopen.o: \
	v_fdopen.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_fgets.o: \
	v_fgets.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_filnam.o: \
	v_filnam.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_fopen.o: \
	v_fopen.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_fork.o: \
	v_fork.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_fread.o: \
	v_fread.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_free.o: \
	v_free.c V.h V_M_UC.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_malloc.h \
	sys_stdio.h sys_time.h sys_types.h 

v_fstat.o: \
	v_fstat.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

v_fwrite.o: \
	v_fwrite.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_findenv.o: \
	v_findenv.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_getenv.o: \
	v_getenv.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_getsockopt.o: \
	v_getsockopt.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

v_gettod.o: \
	v_gettod.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_ghba.o: \
	v_ghba.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_ghbn.o: \
	v_ghbn.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_index.o: \
	v_index.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_inet_ntoa.o: \
	v_inet_ntoa.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_ioctl.o: \
	v_ioctl.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_ipdot.o: \
	v_ipdot.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_kill.o: \
	v_kill.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_lastfld.o: \
	v_lastfld.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_link.o: \
	v_link.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_listen.o: \
	v_listen.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

v_malloc.o: \
	v_malloc.c V.h V_M_UC.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_malloc.h \
	sys_stdio.h sys_stdlib.h sys_time.h sys_types.h 

v_misc.o: \
	v_misc.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h sys_varargs.h 

v_mknod.o: \
	v_mknod.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_newfile.o: \
	v_newfile.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_open.o: \
	v_open.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_pipe.o: \
	v_pipe.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_poll.o: \
	v_poll.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_pthreads.o: \
	v_pthreads.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_pthreads.h \
	sys_stdio.h sys_time.h sys_types.h 

v_putenv.o: \
	v_putenv.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_read.o: \
	v_read.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_realloc.o: \
	v_realloc.c V.h V_M_UC.h local.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_malloc.h sys_stdio.h sys_time.h sys_types.h 

v_recv.o: \
	v_recv.c V.h V_S_UC.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_socket.h sys_stdio.h sys_time.h sys_types.h 

v_recvfr.o: \
	v_recvfr.c V.h V_S_UC.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_socket.h sys_stdio.h sys_time.h sys_types.h 

v_rename.o: \
	v_rename.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

v_seek.o: \
	v_seek.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_select.o: \
	v_select.c V.h V_S_UC.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_send.o: \
	v_send.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

v_sendto.o: \
	v_sendto.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

v_setpgrp.o: \
	v_setpgrp.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_setsockopt.o: \
	v_setsockopt.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

v_sigaction.o: \
	v_sigaction.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_signal.h \
	sys_stdio.h sys_time.h sys_types.h 

v_signal.o: \
	v_signal.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_sleep.o: \
	v_sleep.c V.h V_S_UC.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_socket.o: \
	v_socket.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_stat.o: \
	v_stat.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

v_utime.o: \
	v_utime.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

v_strdup.o: \
	v_strdup.c V.h V_M_UC.h local.h mem.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

v_strlen.o: \
	v_strlen.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_system.o: \
	v_system.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_tell.o: \
	v_tell.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_time.o: \
	v_time.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_uname.o: \
	v_uname.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h sys_utsname.h 

v_unlink.o: \
	v_unlink.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_wait.o: \
	v_wait.c V.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_wait3.o: \
	v_wait3.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h sys_wait.h 

v_write.o: \
	v_write.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

v_wwrite.o: \
	v_wwrite.c V.h V_s_lc.h local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

Vcaller.o: \
	V.h Vcaller.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

Vchklog.o: \
	V.h Vchklog.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

Vdmsg.o: \
	V.h Vdmsg.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h sys_varargs.h 

Vinit.o: \
	V.h Vinit.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

Vnewlog.o: \
	V.h Vnewlog.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

Vopt.o: \
	V.h Vopt.c local.h mem.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

Vpmsg.o: \
	V.h Vpmsg.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h sys_varargs.h 

Vvmsg.o: \
	V.h Vvmsg.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h sys_varargs.h 

dmp_ascd.o: \
	V.h dmp_ascd.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

dmp_data.o: \
	V.h dmp_data.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

dmp_he.o: \
	V.h dmp_he.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_netdb.h \
	sys_stdio.h sys_time.h sys_types.h 

dmp_hexd.o: \
	V.h dmp_hexd.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

dmp_hexout.o: \
	V.h dmp_hexout.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

dmpstat.o: \
	V.h dmpstat.c local.h str.h sys.h sys_ctype.h sys_errno.h sys_stat.h \
	sys_stdio.h sys_time.h sys_types.h 

err.o: \
	err.c err.h 

mem.o: \
	V.h V_M_UC.h local.h mem.c mem.h str.h sys.h sys_ctype.h sys_errno.h \
	sys_malloc.h sys_stdio.h sys_time.h sys_types.h 

minrand.o: \
	minrand.c minrand.h 

nbio.o: \
	V.h V_s_lc.h local.h nbio.c str.h sys.h sys_ctype.h sys_errno.h sys_fcntl.h \
	sys_stdio.h sys_time.h sys_types.h 

str_appscm.o: \
	V.h V_M_UC.h local.h mem.h str.h str_appscm.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

str_bldstr.o: \
	V.h V_M_UC.h local.h mem.h str.h str_bldstr.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h sys_varargs.h 

str_chksm.o: \
	V.h V_M_UC.h local.h str.h str_chksm.c sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

str_cmpssm.o: \
	V.h V_M_UC.h local.h mem.h str.h str_cmpssm.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

str_data.o: \
	V.h V_M_UC.h local.h str.h str_data.c sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

str_dupscm.o: \
	V.h V_M_UC.h local.h mem.h str.h str_dupscm.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

str_dupssm.o: \
	V.h V_M_UC.h local.h mem.h str.h str_dupssm.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

str_minstr.o: \
	V.h V_M_UC.h local.h mem.h str.h str_minstr.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

str_misc.o: \
	V.h V_M_UC.h local.h mem.h str.h str_misc.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

str_npad.o: \
	V.h V_M_UC.h local.h str.h str_npad.c sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

str_ntrim.o: \
	V.h V_M_UC.h local.h str.h str_ntrim.c sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

str_trim.o: \
	V.h V_M_UC.h local.h str.h str_trim.c sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

str_zapsm.o: \
	V.h V_M_UC.h local.h mem.h str.h str_zapsm.c sys.h sys_ctype.h sys_errno.h \
	sys_stdio.h sys_time.h sys_types.h 

strnlen.o: \
	strnlen.c 

strtok.o: \
	V.h V_s_lc.h local.h str.h strtok.c sys.h sys_ctype.h sys_errno.h sys_stdio.h \
	sys_time.h sys_types.h 

symaddr.o: \
	V.h local.h mem.h str.h symaddr.c sys.h sys_ctype.h sys_errno.h sys_socket.h \
	sys_stdio.h sys_time.h sys_types.h 

libV_version.o: \
	libV_version.c
