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

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

default:	s c f

all:	s f c 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)
	cd src; ../lib/aimk
	mv src/$(PVM_ARCH)/libpvm3.a $(LIBDIR)
	mv src/$(PVM_ARCH)/pvmd3 $(LIBDIR)

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

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

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

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

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

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

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

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

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

