#
# top-level PVM3 makefile
#
# targets:
#  s: src - pvmd3, libpvm3.a
#  mpp: mpp src - libpvm3pe.a
#  c: console - pvm
#  f: fortran lib - libfpvm3.a
#  g: groups - pvmgs, libgpvm3.a
#  m: xep example
#

ARCH	=	UNKNOWN
LIBDIR	=	lib/$(ARCH)
TOPBINDIR	=	bin
BINDIR	=	$(TOPBINDIR)/$(ARCH)
SHELL	=	/bin/sh

default:	s c f

mppdefault:	s c f mpp

all:	s c f g m

mppall:	s c f mpp g m

clean:
	cd src; ../lib/aimk clean
	cd console; ../lib/aimk clean
	cd libfpvm; ../lib/aimk clean
	cd pvmgs; ../lib/aimk clean

$(LIBDIR):
	- mkdir $(LIBDIR)

$(BINDIR):	$(TOPBINDIR)
	- mkdir $(BINDIR)

$(TOPBINDIR):
	- mkdir $(TOPBINDIR)

## build pvmd, libpvm ##
s:
	lib/aimk -here i_s

i_s:	$(LIBDIR) $(BINDIR)
	cd src; ../lib/aimk
	mv src/$(ARCH)/libpvm3.a $(LIBDIR)
	mv src/$(ARCH)/pvmd3 $(LIBDIR)

s.hack:
	lib/aimk -here i_s.hack

i_s.hack:	$(LIBDIR)
	cd src.hack; ../lib/aimk
	mv src.hack/$(ARCH)/libpvm3.a $(LIBDIR)
	mv src.hack/$(ARCH)/pvmd3 $(LIBDIR)

## build libpvmpe ##
mpp:	
	lib/aimk -here i_mpp

i_mpp:
	cd src.mpp/$(ARCH); ../../lib/aimk
	mv src.mpp/$(ARCH)/libpvm3pe.a $(LIBDIR)

mpp_clean:
	cd src.mpp; ../lib/aimk clean

i860:	
	cd src.mpp/I860; make
	mv src.mpp/I860/libpvm3pe.a lib/I860

mpp_clean:
	cd src.mpp; ../lib/aimk clean

## build libfpvm ##
f:
	lib/aimk -here i_f

i_f:	$(LIBDIR)
	cd libfpvm; ../lib/aimk
	mv libfpvm/$(ARCH)/libfpvm3.a $(LIBDIR)

## build groups ##
g:
	lib/aimk -here i_g

i_g:	$(LIBDIR) $(BINDIR)
	cd pvmgs; ../lib/aimk
	mv pvmgs/$(ARCH)/pvmgs $(BINDIR)
	mv pvmgs/$(ARCH)/libgpvm3.a $(LIBDIR)
	mv pvmgs/$(ARCH)/pvm_gstat $(LIBDIR)

## build pvm console ##
c:
	lib/aimk -here i_c

i_c:	$(LIBDIR)
	cd console; ../lib/aimk
	mv console/$(ARCH)/pvm $(LIBDIR)

## build xep example ##
m:
	cd xep; ../lib/aimk

