# Generated automatically from Makefile.in by configure.
ALL: bad bounce irecvsend
SHELL = /bin/sh
OPT = -O
MPICC=mpicc
MPIRUN=mpirun -maxtime 5
SRCFILES=bad.c bounce.c irecvsend.c overlap.c jac.c
OBJFILES=
bad: bad.o
	$(MPICC) -o bad $(OPT) bad.o  -lm
bad.log: bad.o
	$(MPICC) -o bad.log -mpilog $(OPT) \
		bad.o    -lm
irecvsend: $(OBJFILES)
	$(MPICC) -o irecvsend $(OPT) irecvsend.o  -lm
irecvsend.log: $(OBJFILES)
	$(MPICC) -o irecvsend.log -mpilog $(OPT) \
		irecvsend.o    -lm
bounce.log: bounce.o
	$(MPICC) -o bounce.log -mpilog $(OPT) \
		bounce.o    -lm
bounce: bounce.o
	$(MPICC) -o bounce $(OPT) bounce.o    -lm
isendrecv: isendrecv.o
	$(MPICC) -o isendrecv $(OPT) isendrecv.o  -lm
isendrecv.log: isendrecv.o	
	$(MPICC) -o isendrecv.log -mpilog $(OPT) \
overlap: overlap.o
	$(MPICC) -o overlap $(OPT) overlap.o  -lm
overlap.log: overlap.o
	$(MPICC) -o overlap.log -mpilog $(OPT) \
		overlap.o    -lm
jac: jac.o
	$(MPICC) -o jac $(OPT) jac.o  -lm
jac.log: jac.o
	$(MPICC) -o jac.log -mpilog $(OPT) \
		jac.o    -lm
jacnap: jacnap.o
	$(MPICC) -o jacnap $(OPT) jacnap.o  -lm
jacnap.log: jacnap.o
	$(MPICC) -o jacnap.log -DDO_LOG -mpilog $(OPT) \
		jacnap.c    -lm



#
# An important part of understanding the behavior of these programs is
# creating and examining the trace or log files of the operations.  The
# following targets generate the log files by using a feature of the MPICH
# implementation (automatic generation with the -mpilog switch when linking).
# There are 4 versions:
#    profile.alog   - A simple version for a single log
#    profile.$()... - A version for runs with different numbers of processors,
#                     machines, and problem sizes
#    profile-nopoll. - A version like profile.$()..., but uses the -nopoll
#                      switch to change how an MPI implementation reacts
#                      to control messages.
#
profile.alog: bad.log
	$(MPIRUN) -np 4 -mvhome -mvback bad.log_profile.log bad.log
	/bin/mv -f bad.log_profile.log profile.alog
# Use this for a particular machine
profile.$(MACH)-$(NP)-$(MAXN).alog: bad.log
	$(MPIRUN) -np $(NP) -mvhome -mvback bad.log_profile.log bad.log \
		-n $(MAXN) -maxit 25
	/bin/mv -f bad.log_profile.log profile.$(MACH)-$(NP)-$(MAXN).alog
# Use this for a particular machine
profile-nopoll.$(MACH)-$(NP)-$(MAXN).alog: bad.log
	$(MPIRUN) -np $(NP) -nopoll -mvhome -mvback bad.log_profile.log \
		bad.log -n $(MAXN) -maxit 25
	/bin/mv -f bad.log_profile.log \
		profile-nopoll.$(MACH)-$(NP)-$(MAXN).alog

#
# The doall... targets run the tests, generating profiling information,
# for this examples and all related ones.
#  doall - Default tests (Bad with convergence tests)
#  doallnopoll - doall but with -nopoll to mpirun
#
doall:
	@if [ -s related.lst ] ; then \
	for dir in . `cat related.lst` ; do \
	    ( cd $$dir ; echo $$dir ; cat title.txt ; \
	      make MACH=$(MACH) OPT=$(OPT) NP=$(NP) MAXN=$(MAXN) \
		profile.$(MACH)-$(NP)-$(MAXN).alog ) ; done ; \
	else \
	      make MACH=$(MACH) OPT=$(OPT) NP=$(NP) MAXN=$(MAXN) \
		profile.$(MACH)-$(NP)-$(MAXN).alog ; \
	fi
doallnopoll:
	@if [ -s related.lst ] ; then \
	for dir in . `cat related.lst` ; do \
	    ( cd $$dir ; echo $$dir ; cat title.txt ; \
	      make MACH=$(MACH) OPT=$(OPT) NP=$(NP) MAXN=$(MAXN) \
		profile-nopoll.$(MACH)-$(NP)-$(MAXN).alog ) ; done ; \
	else \
	      make MACH=$(MACH) OPT=$(OPT) NP=$(NP) MAXN=$(MAXN) \
		profile-nopoll.$(MACH)-$(NP)-$(MAXN).alog ; \
	fi

compilealllog:
	@if [ -s related.lst ] ; then \
	for dir in . `cat related.lst` ; do \
	    ( cd $$dir ; echo $$dir ; cat title.txt ; \
	      make OPT=$(OPT) bad.log ; ) ; done ; \
	else \
	      make OPT=$(OPT) bad.log ; \
	fi

.c.o:
	$(MPICC) -c $(OPT) $(DEFN) $*.c

cleanlocal:
	/bin/rm -f bad bad.log irecvsend overlap jac bounce jacnap \
	overlap.log bounce.log irecvsend.log jac.log jacnap.log overlap2 \
	*.o 
clean: cleanlocal
	if [ -s related.lst ] ; then \
	    for dir in `cat related.lst` ; do \
	        ( cd $$dir ; make clean ) ; done ; fi
output:
	$(MPICC) -o bad $(OPT) bad.c    -lm 
	$(MPIRUN) -np 3 bad