#
# FIELD
#
# Copyright 1987 Steven P. Reiss, Brown University - All rights reserved.
#
#

SYSTEM= field
HOME = $(PRO)/$(SYSTEM)
GMAKE= gnumake


#
#	Distribution information
#

DISTRIB_MACH= dino
DISTRIB_TOP= /usr/distrib
DISTRIB_DIR= $(DISTRIB_TOP)/field
DISTRIB= $(DISTRIB_MACH):$(DISTRIB_DIR)

ACTIVE= Makefile README INSTALL CSINSTALL


#
#	Component definitions
#

FILES= Makefile

SETUPCOMPS= cmd rundata lib
OTHERCOMPS= data doc include help

COMPONENTS= pmat msg fsym \
	ddt \
	build \
	annot dbg disp fprof view xref flow cbrow form \
	field

ALL_COMPONENTS= $(SETUPCOMPS) $(COMPONENTS) $(OTHERCOMPS)
DIST_COMPONENTS=

#
#	Command definitions
#

GENERIC_COMMANDS= print pribm transfer clean newlib create prim
ACTIVE_COMMANDS= all opt links garbin lint.out lint.lib dep
DISTRIB_COMMANDS= distrib_dir


#
#	Build rules
#


default: all

$(ACTIVE_COMMANDS):
	touch .DUMMY
	$(MAKE) $(COMPONENTS) 'COMMAND=$@' PRO=$(PRO)

$(GENERIC_COMMANDS):
	touch .DUMMY
	$(MAKE) $(ALL_COMPONENTS) 'COMMAND=$@' PRO=$(PRO)

$(DISTRIB_COMMANDS):
	touch .DUMMY
	$(GMAKE) $(ALL_COMPONENTS) $(DIST_COMPONENTS) 'COMMAND=$@' PRO=$(PRO) \
		'DISTRIB=$(DISTRIB)' 'DISTRIB_MACH=$(DISTRIB_MACH)' \
		'DISTRIB_TOP=$(DISTRIB_TOP)' 'DISTRIB_DIR=$(DISTRIB_DIR)'

.PHONY: $(GENERIC_COMMANDS) $(ACTIVE_COMMANDS) $(DISTRIB_COMMANDS)
.PHONY: $(ALL_COMPONENTS) $(DIST_COMPONENTS)

$(DIST_COMPONENTS) $(ALL_COMPONENTS): .DUMMY

.DUMMY:

.PRECIOUS: $(ALL_COMPONENTS) $(DIST_COMPONENTS)

$(COMPONENTS) $(DIST_COMPONENTS):
	(cd $@/src; $(MAKE) $(COMMAND))

$(SETUPCOMPS) $(OTHERCOMPS):
	(cd $@; $(MAKE) $(COMMAND) )

cleanlib:
	(cd lib; $(MAKE) cleanlib)
	$(MAKE) newlib
	(cd lib; $(MAKE) ranlib)

newmachine:
	$(GMAKE) create
	$(GMAKE) links
	(cd cmd; $(GMAKE))
	$(GMAKE) -k all
	-(cd test; $(MAKE) tree)

DISTTESTS= test/tree.c test/gcd.p test/auto.c test/auto.h test/auto.in \
	test/sorter.c test/list.c test/list.h

distrib:
	rsh $(DISTRIB_MACH) rm -rf $(DISTRIB_DIR)
	rsh $(DISTRIB_MACH) mkdir $(DISTRIB_DIR)
	rcp $(ACTIVE) $(DISTRIB_MACH):$(DISTRIB_DIR)
	$(MAKE) distrib_dir
	rsh $(DISTRIB_MACH) mkdir $(DISTRIB_DIR)/test
	-rcp test/Makefile $(DISTTESTS) $(DISTRIB_MACH):$(DISTRIB_DIR)/test

share:
	$(GMAKE) all
	(cd field/src; $(GMAKE) sharedfield)

lintlib:
	make lint.lib
	cat */lib/llib* > lib/llib-lbwe.ln

proinstall:
	(cd field/src; make dofield)
	(cd ddt/src; make doddt)
	make realinstall

realinstall:
	echo installing commands
	-mkdir $(PRO)/bin/field
	cp cmd/MAKELINKS.BIN $(PRO)/bin/field
	(cd $(PRO)/bin/field; MAKELINKS.BIN)
	echo installing include files
	-mkdir $(PRO)/include/field
	cp include/*.h $(PRO)/include/field
	echo installing rundata
	-mkdir $(PRO)/lib/field
	-mkdir $(PRO)/lib/field/rundata
	rm -rf $(PRO)/lib/field/rundata/$(ARCH)
	-mkdir $(PRO)/lib/field/rundata/$(ARCH)
	rm -rf libfield.a
	ar ru libfield.a lib/*.$(ARCH).lib.o
	mv libfield.a $(PRO)/lib
	ranlib $(PRO)/lib/libfield.a
	cp lib/msg.$(ARCH).lib.o lib/pmat.$(ARCH).lib.o $(PRO)/lib/field
	cp rundata/$(ARCH)/* $(PRO)/lib/field/rundata/$(ARCH)
	echo installing help
	-mkdir $(PRO)/lib/field/help
	cp help/INFO help/[a-z]* $(PRO)/lib/field/help
	-mkdir $(PRO)/man
	-mkdir $(PRO)/man/man1
	-cp doc/man1/*.1 $(PRO)/man/man1


# end of Makefile


