#Here please edit the path to your PVM executables:
BINPATH	  =	pvm3/bin/$(PVM_ARCH)
BINDIR    =	$(HOME)/$(BINPATH)

#Option acceptable only for non-SGI and non-RISK6000 (and some others too?):
CCNSGI = -Wall -pedantic

#You can make active following lines if you want to apply PG_PVM monitor:
#PGL = 	-L$(PVM_ROOT)/pg/lib/$(PVM_ARCH) -lpg
#PGI =	-DPG_PVM -I/$(PVM_ROOT)/pg/include

#and if yes, make active also (this avoids ParaGraph from trace errors):
#MY   =	-DMY_BCAST_BARRIER

#-----------------------------------------------------------------------------

#temporary object folder:
O = $(PVM_ARCH)
#architecture-dependent values:
include $(PVM_ROOT)/conf/$(PVM_ARCH).def

LXM = /usr/X11R6/lib/libXm.so.2
#for my not properly installed motif library comment out following line:
LXM = -lXm
XLPATH = -L/usr/openwin/X11R6/lib -L/usr/dt/lib -L/usr/X11R6/lib
LIBS =	-lm
PLIBS =	-L$(PVM_ROOT)/lib/$(PVM_ARCH) -lpvm3 -lgpvm3 $(ARCHLIB) $(PGL) $(LIBS)
XLIBS =	 $(XLPATH) $(LXM) -lXt -lX11 -lXmu -lXpm
CFLGP =	-I$(PVM_ROOT)/include $(ARCHCFLAGS)
CCOPT =	-I/usr/openwin/include -I/usr/dt/include $(CCNSGI)
CC  = 	gcc -g $(CCOPT) $(PGI) $(MY)

#targets: (P-without X interface)
PROGX =	$(BINDIR)/xpmap
PROGP =	$(BINDIR)/pmap

#non-distributed (on-parallel) targets: (F-without X interface, T-trace_file_reader)
PROGM = $(BINDIR)/xmap
PROGF = $(BINDIR)/map
PROGD = $(BINDIR)/pvmadd
PROGH = $(BINDIR)/pvmhalt
PROGT = $(BINDIR)/trace

#object file names:
SRCNX = pmap-x.c
OBJX =	$(O)/xpmap_fc.o $(O)/xpmap.o
OBJNX = $(O)/pmap-x.o
OBJP =  $(O)/pmap.o
OBJPVM = $(O)/pmap_pvm.o $(O)/pmap_pg.o
OBJNPVM =  $(O)/pmap-nopvm.o
OBJA =	$(O)/pmap_m12.o $(O)/pmap_grp.o $(O)/pmap_swhw.o $(O)/pmap_diffu.o \
	$(O)/pmap_hme.o $(O)/pmap_fc.o $(O)/pmap_sa.o $(O)/pmap_grps.o \
	$(O)/pmap_trace.o

#-----------------------------------------------------

work:
	[ -d $(O) ] || mkdir $(O)
	make $(PROGP) $(PROGX)

all:
	[ -d $(O) ] || mkdir $(O)
	make $(PROGT) $(PROGF) $(PROGM) $(PROGD) $(PROGH) $(PROGP) $(PROGX)

install:
	[ -d $(BINDIR) ]
	strip $(PROGP) $(PROGX) $(PROGT) $(PROGF) $(PROGM) $(PRODD) $(PROGH)
	echo "copy manually the 2 files gred-mp and gred-hwc into GRADE_ROOT dir!"

rcp:
	rcp $(PROGP) upsymido@nic:$(BINPATH)/pmap
#	rcp $(PROGX) upsymido@nic:$(BINPATH)/xpmap

p:
	[ -d $(O) ] || mkdir $(O)  
	make $(PROGP)

x:
	[ -d $(O) ] || mkdir $(O)  
	make $(PROGX)

m:
	[ -d $(O) ] || mkdir $(O)  
	make $(PROGM)

mx:
	[ -d $(O) ] || mkdir $(O)  
	make $(PROGM)
	mv -f $(PROGM) $(PROGX)

f:
	[ -d $(O) ] || mkdir $(O)  
	make $(PROGF)

t:	$(PROGT)
	$(PROGT)

clean: cleanx cleanp cleanm cleanf cleand cleant
#	rmdir $(O)

cleanp:
	-rm -f $(PROGP) $(OBJNX) $(OBJP) $(OBJPVM) $(OBJA)

cleanx:
	-rm -f $(PROGX) $(OBJX)

cleanm:
	-rm -f $(PROGM) $(OBJNPVM)

cleanf:
	-rm -f $(PROGF)

cleand:
	-rm -f $(PROGD) $(PROGH)

cleant:
	-rm -f $(PROGT) $(O)/trace.o $(O)/pmap_trace.o

#use this label when you switch PG on/off :
cleanpg:
	-rm -f	$(PROGP) $(PROGX) $(OBJX) $(OBJP) $(OBJPVM) \
		$(O)/pmap_m12.o $(O)/pmap_diffu.o $(O)/pmap_sa.o \
		$(O)/pmap_hme.o

#--------------------------------------------------------------

$(PROGX): $(OBJX) $(OBJPVM) $(OBJA)
	-rm -f $(PROGX)
	$(CC) -o $(PROGX) $(OBJX) $(OBJPVM) $(OBJA) $(PLIBS) $(XLIBS)
#do not link $(OBJNX) !

$(O)/xpmap_fc.o:	xpmap_fc.c	xpmap.h		$(SRCNX)
	$(CC) -c -o $(O)/xpmap_fc.o xpmap_fc.c

$(O)/xpmap.o:		xpmap.c		xpmap.h
	$(CC) -c -o $(O)/xpmap.o xpmap.c 




$(PROGP): $(OBJP) $(OBJNX) $(OBJPVM) $(OBJA)
	-rm -f $(PROGP)
	$(CC) -o $(PROGP) $(OBJP) $(OBJNX) $(OBJPVM) $(OBJA) $(PLIBS)
#	rsh ups make -C pvm/map

$(O)/pmap_m12.o:	pmap_m12.c	pmap.h
	$(CC) -o $(O)/pmap_m12.o -c pmap_m12.c

$(O)/pmap_grp.o:	pmap_grp.c	pmap.h		pmap_grp.h
	$(CC) -o $(O)/pmap_grp.o -c pmap_grp.c

$(O)/pmap_grps.o:	pmap_grps.c	pmap.h		pmap_grp.h
	$(CC) -o $(O)/pmap_grps.o -c pmap_grps.c

$(O)/pmap_swhw.o:	pmap_swhw.c	pmap.h
	$(CC) -o $(O)/pmap_swhw.o -c pmap_swhw.c

$(O)/pmap_diffu.o:	pmap_diffu.c	pmap.h
	$(CC) -o $(O)/pmap_diffu.o -c pmap_diffu.c

$(O)/pmap_hme.o:	pmap_hme.c	pmap.h
	$(CC) -o $(O)/pmap_hme.o -c pmap_hme.c

$(O)/pmap_pvm.o:	pmap_pvm.c	pmap.h
	$(CC) $(CFLGP) -o $(O)/pmap_pvm.o -c pmap_pvm.c

$(O)/pmap_pg.o:	pmap_pg.c	pmap.h
	$(CC) $(CFLGP) -o $(O)/pmap_pg.o -c pmap_pg.c

$(O)/pmap_trace.o:	pmap_trace.c	pmap.h	pmap_grp.h
	$(CC) $(CFLGP) -o $(O)/pmap_trace.o -c pmap_trace.c

$(O)/pmap_fc.o:		pmap_fc.c	pmap.h
	$(CC) -o $(O)/pmap_fc.o -c pmap_fc.c

$(O)/pmap-x.o:		pmap-x.c	pmap.h
	$(CC) -o $(O)/pmap-x.o -c pmap-x.c

$(O)/pmap_sa.o:		pmap_sa.c	pmap.h
	$(CC) -o $(O)/pmap_sa.o -c pmap_sa.c

$(O)/pmap.o:		pmap.c		pmap.h
	$(CC) -o $(O)/pmap.o -c pmap.c



$(PROGM): $(OBJX) $(OBJNPVM) $(OBJA)
	-rm -f $(PROGM)
	$(CC) -o $(PROGM) $(OBJX) $(OBJA) $(OBJNPVM) $(LIBS) $(XLIBS)

$(OBJNPVM):		pmap_pvm.c	pmap.h
	$(CC) $(CFLGP) -DNOPVM -o $(OBJNPVM) -c pmap_pvm.c


$(PROGF): $(OBJP) $(OBJNX) $(OBJNPVM) $(OBJA)
	-rm -f $(PROGF)
	$(CC) -o $(PROGF) $(OBJP) $(OBJNX) $(OBJNPVM) $(OBJA) $(LIBS)

$(PROGD): pvmadd.c
	-rm -f $(PROGD)
	$(CC) $(CFLGP) -o $(PROGD) pvmadd.c $(PLIBS)

$(PROGH): pvmhalt.c
	-rm -f $(PROGH)
	$(CC) $(CFLGP) -o $(PROGH) pvmhalt.c $(PLIBS)

$(PROGT): $(O)/trace.o $(O)/pmap_trace.o
	-rm -f $(PROGT)
	$(CC) $(CFLGP) -o $(PROGT) $(O)/trace.o $(O)/pmap_trace.o

$(O)/trace.o:	trace.c $(O)/pmap_trace.o
	$(CC) $(CFLGP) -o $(O)/trace.o -c trace.c

$(PVM_ROOT)/conf/$(PVM_ARCH).def:

