SHELL=/bin/sh
CLASS=S
NPROCS=1
SFILE=config/suite.def

default: header
	@ sys/print_instructions

BT: bt
bt: header
	cd BT; $(MAKE) NPROCS=$(NPROCS) CLASS=$(CLASS)
bt_pvm: header
	cd BT; $(MAKE) pvm  NPROCS=$(NPROCS) CLASS=$(CLASS)

SP: sp
sp: header
	cd SP; $(MAKE) NPROCS=$(NPROCS) CLASS=$(CLASS)
sp_pvm: header
	cd SP; $(MAKE) pvm  NPROCS=$(NPROCS) CLASS=$(CLASS)

LU: lu
lu: header
	cd LU; $(MAKE) NPROCS=$(NPROCS) CLASS=$(CLASS)
lu_pvm: header
	cd LU; $(MAKE) pvm  NPROCS=$(NPROCS) CLASS=$(CLASS)

MG: mg
mg: header
	cd MG; $(MAKE) NPROCS=$(NPROCS) CLASS=$(CLASS)
mg_pvm: header
	cd MG; $(MAKE) pvm  NPROCS=$(NPROCS) CLASS=$(CLASS)

FT: ft
ft: header
	cd FT; $(MAKE) NPROCS=$(NPROCS) CLASS=$(CLASS)
ft_pvm: header
	cd FT; $(MAKE) pvm  NPROCS=$(NPROCS) CLASS=$(CLASS)


dummy:
	cd MPI_dummy; $(MAKE)


# CONFIG:
# 	cd sys; $(MAKE)

# suite: CONFIG
#	sys/makesuite

suite:
	@ awk '{ if ($$1 !~ /^#/) printf "make %s CLASS=%s NPROCS=%d\n", $$1, \
	    $$2, $$3 }' $(SFILE) | $(SHELL)
	
suite.pvm:
	@ awk '{ if ($$1 !~ /^#/) printf "make %s_pvm CLASS=%s NPROCS=%d\n", $$1, \
	    $$2, $$3 }' $(SFILE) | $(SHELL)
	
# It would be nice to make clean in each subdirectory (the targets
# are defined) but on a really clean system this will won't work
# because those makefiles need config/make.def
clean:
	- rm -f core 
	- rm -f *~ */core */*~ */*.o */npbparams.h */mpifrag.f ??/mpif.h */fpvm3.h
	- rm -f MPI_dummy/test MPI_dummy/libmpi.a
	- rm -f sys/setparams sys/makesuite sys/setparams.h

clobber veryclean: clean
	- rm -f config/make.def config/suite.def 
	- rm -f bin/sp.* bin/lu.* bin/mg.* bin/ft.* bin/bt.*

header:
	@ sys/print_header


