# Machine-independent general library makefile information
# MDDIRS is a macro that is the machine dependent directories.
# MDLIBVDIRS are the files in the MDDIRS directories

#include ../buildprefix

# 
# Note that the four standalone directories, drivers, rawio, sa, and
# saconsole are included here, and that sun*graphics aren't.
SUBDIRS = ../auth/$(MACHINE) \
	../exceptions/$(MACHINE) \
	../exec/$(MACHINE) \
	../execserver/$(MACHINE) \
	../drivers/$(MACHINE) \
	../include/$(MACHINE) \
	../info/$(MACHINE) \
	../io/$(MACHINE) \
	../ipc/$(MACHINE) \
	../locking/$(MACHINE) \
	../math/$(MACHINE) \
	../mem/$(MACHINE) \
	../naming/$(MACHINE) \
	../numeric/$(MACHINE) \
	../packages/$(MACHINE) \
	../process/$(MACHINE) \
	../rawio/$(MACHINE) \
	../sa/$(MACHINE) \
	../saconsole/$(MACHINE) \
	../service/$(MACHINE) \
	../stdio/$(MACHINE) \
	../strings/$(MACHINE) \
	../query/$(MACHINE) \
	../termlib/$(MACHINE) \
	../time/$(MACHINE) \
	../unix-compat/$(MACHINE) \
	../user/$(MACHINE) \
	../vgts/$(MACHINE) \
	$(MDDIRS)

# note that sfonts, sun*graphics and the standalone directories aren't
# on this list.
# neither is info, since it makes its own library
# neither is include, because there should be NO .$(OBJSUFFIX) files there.
LIBVDIRS = ../auth/$(MACHINE)/*.$(OBJSUFFIX) \
	../exceptions/$(MACHINE)/*.$(OBJSUFFIX) \
	../exec/$(MACHINE)/*.$(OBJSUFFIX) \
	../execserver/$(MACHINE)/*.$(OBJSUFFIX) \
	../io/$(MACHINE)/*.$(OBJSUFFIX) \
	../ipc/$(MACHINE)/*.$(OBJSUFFIX) \
	../locking/$(MACHINE)/*.$(OBJSUFFIX) \
	../math/$(MACHINE)/*.$(OBJSUFFIX) \
	../mem/$(MACHINE)/*.$(OBJSUFFIX) \
	../naming/$(MACHINE)/*.$(OBJSUFFIX) \
	../numeric/$(MACHINE)/*.$(OBJSUFFIX) \
	../packages/$(MACHINE)/*.$(OBJSUFFIX) \
	../process/$(MACHINE)/*.$(OBJSUFFIX) \
	../service/$(MACHINE)/*.$(OBJSUFFIX) \
	../stdio/$(MACHINE)/*.$(OBJSUFFIX) \
	../strings/$(MACHINE)/*.$(OBJSUFFIX) \
	../query/$(MACHINE)/*.$(OBJSUFFIX) \
	../termlib/$(MACHINE)/*.$(OBJSUFFIX) \
	../time/$(MACHINE)/*.$(OBJSUFFIX) \
	../user/$(MACHINE)/*.$(OBJSUFFIX) \
	../vgts/$(MACHINE)/*.$(OBJSUFFIX) \
	$(MDLIBVDIRS)

# files comprising the V lint library
LLIB = llib-lV.ln
LLIB_V_FILES = \
	../exceptions/$(MACHINE)/$(LLIB) \
	../exec/$(MACHINE)/$(LLIB) \
	../execserver/$(MACHINE)/$(LLIB) \
	../io/$(MACHINE)/$(LLIB) \
	../ipc/$(MACHINE)/$(LLIB) \
	../locking/$(MACHINE)/$(LLIB) \
	../math/$(MACHINE)/$(LLIB) \
	../mem/$(MACHINE)/$(LLIB) \
	../naming/$(MACHINE)/$(LLIB) \
	../numeric/$(MACHINE)/$(LLIB) \
	../packages/$(MACHINE)/$(LLIB) \
	../process/$(MACHINE)/$(LLIB) \
	../service/$(MACHINE)/$(LLIB) \
	../stdio/$(MACHINE)/$(LLIB) \
	../strings/$(MACHINE)/$(LLIB) \
	../query/$(MACHINE)/$(LLIB) \
	../termlib/$(MACHINE)/$(LLIB) \
	../time/$(MACHINE)/$(LLIB) \
	../user/$(MACHINE)/$(LLIB) \
	../vgts/$(MACHINE)/$(LLIB)

# Files that go into the sa (standalone) library.
SALIB = ../sa/$(MACHINE)/*.$(OBJSUFFIX) \
	../mem/$(MACHINE)/bcopy.$(OBJSUFFIX) \
	../mem/$(MACHINE)/calloc.$(OBJSUFFIX) \
	../mem/$(MACHINE)/clear.$(OBJSUFFIX) \
	../mem/$(MACHINE)/copy.$(OBJSUFFIX) \
	../mem/$(MACHINE)/malloc.$(OBJSUFFIX) \
	../mem/$(MACHINE)/swablong1.$(OBJSUFFIX) \
	../mem/$(MACHINE)/swablong2.$(OBJSUFFIX) \
	../mem/$(MACHINE)/swabshort.$(OBJSUFFIX) \
	../mem/$(MACHINE)/swabsmall.$(OBJSUFFIX) \
	../mem/$(MACHINE)/zero.$(OBJSUFFIX) \
	../strings/$(MACHINE)/*.$(OBJSUFFIX) \
	../numeric/$(MACHINE)/*.$(OBJSUFFIX) \
	../io/$(MACHINE)/seek.$(OBJSUFFIX) \
	../io/$(MACHINE)/read.$(OBJSUFFIX) \
	../io/$(MACHINE)/write.$(OBJSUFFIX) \
	../io/$(MACHINE)/flush.$(OBJSUFFIX) \
	../io/$(MACHINE)/ungetc.$(OBJSUFFIX) \
	../io/$(MACHINE)/openstr.$(OBJSUFFIX) \
	../io/$(MACHINE)/open.$(OBJSUFFIX) \
	../io/$(MACHINE)/_open.$(OBJSUFFIX) \
	../io/$(MACHINE)/close.$(OBJSUFFIX) \
	../stdio/$(MACHINE)/*.$(OBJSUFFIX) \
	../auth/$(MACHINE)/authenticate.$(OBJSUFFIX) \
	../auth/$(MACHINE)/artoa.$(OBJSUFFIX) \
	../exceptions/$(MACHINE)/error.$(OBJSUFFIX)

# Files that go into the extra-small saconsole library.
SACONSOLE = ../saconsole/$(MACHINE)/*.$(OBJSUFFIX) \
	../mem/$(MACHINE)/*.$(OBJSUFFIX) \
	../strings/$(MACHINE)/*.$(OBJSUFFIX) \
	../numeric/$(MACHINE)/*.$(OBJSUFFIX) \
	../exceptions/$(MACHINE)/error.$(OBJSUFFIX)

# First, always do a make of the subdirectories.  Then, if anything has
#  changed, update libV.a (time-consuming).  If libV.a doesn't exist at
#  all, an error message comes out about the list for $? being too long,
#  but make does the right thing anyway.
all::
	domake "$(SUBDIRS)" "build"

all:: libV.a  libVsa.a libVsaconsole.a liblockedmalloc.a

install:
	$(NETINSTALL) "$(INSTALLED_FILES) $(MDINSTALL)" $(VSYS)/lib/$(MACHINE)

install-includes:
	cd ../include/$(MACHINE); build install

install-others: install-drivers install-authlib $(MDINSTALL)

install-drivers:
	cd ../drivers/$(MACHINE) ; build install

install-authlib:
	cd ../auth/$(MACHINE) ; build install

clean:
	rm -f  *CKP *BAK *.$(OBJSUFFIX) .emacs* libV.a
	domake "$(SUBDIRS)" "build clean"


object.list:
	domake "$(SUBDIRS)" "build object.list"

depend:
	domake "$(SUBDIRS)" "build depend"

# use this target to build just lint targets in the subdirectories
lint-lib:	do-lint $(LLIB)

# strip off the library name to get the directories... looks ugly, but
# sed might choke on a long line
do-lint:
	domake "`echo $(LLIB_V_FILES)|tr ' ' '\012'|sed 's%/$(LLIB)%%'|tr '\012' ' '`" "build lint-lib"

$(LLIB):
	$(LINT) -v$(Xx)V -n -CV $(LLIB_V_FILES)
