#Path of MPI-Library on the Machine

MPI_DIR     = ${HARNESS_ROOT}
MPI_INC_DIR = ${HARNESS_ROOT}/include
MPI_LIB_DIR = ${HARNESS_ROOT}/lib/${HARNESS_ARCH}


#Set some Flags
CC          =   ftmpicc
FC          =   ftmpif77
CFLAGS      =   -I$(MPI_INC_DIR) -g 
FFLAGS      =   -I$(MPI_INC_DIR) -g
LDFLAGS     = 
FLDFLAGS    =

# C exmaples
all:	c-examples fortran-examples

c-examples: pi-ft pi-ft-blank pi-ft-coll \
	pi-ft-noerrh pi-ft-noerrh-blank 

# pi-ft-shrink pi-ft-noerrh-shrink

fortran-examples: fpi-ft  fpi-ft-blank fpi-ft-coll \
	fpi-ft-noerrh fpi-ft-noerrh-blank 

#fpi-ft-shrink fpi-ft-noerrh-shrink

# C examples using error-handler
slavegen: slavegen.c
	$(CC) -c slavegen.c $(CFLAGS)

pi-ft: 	solvergen.c slavegen
	$(CC) -c solvergen.c $(CFLAGS)
	$(CC) -o pi-ft solvergen.o slavegen.o $(CFLAGS) ${LDFLAGS}
	mv pi-ft ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

pi-ft-shrink: solvergen.c slavegen
	$(CC) -c solvergen.c -DUSE_SHRINK_MODE $(CFLAGS)
	$(CC) -o pi-ft-shrink solvergen.o slavegen.o $(CFLAGS) ${LDFLAGS}
	mv pi-ft-shrink ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

pi-ft-blank: solvergen.c slavegen
	$(CC) -c solvergen.c -DUSE_BLANK_MODE $(CFLAGS)
	$(CC) -o pi-ft-blank solvergen.o slavegen.o $(CFLAGS) ${LDFLAGS}
	mv pi-ft-blank ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

pi-ft-coll: solvergen.c slavegen
	$(CC) -c solvergen.c -DCOLLECTIVE_CHECKWHODIED $(CFLAGS)
	$(CC) -o pi-ft-coll solvergen.o slavegen.o $(CFLAGS) $(LDFLAGS) 
	mv pi-ft-coll ${HARNESS_ROOT}/bin/${HARNESS_ARCH}


#C examples checking every return value

slave-noerrh: slave-noerrh.c
	$(CC) -c slave-noerrh.c $(CFLAGS)

pi-ft-noerrh: solver-noerrh.c slave-noerrh
	$(CC) -c solver-noerrh.c $(CFLAGS)
	$(CC) -o pi-ft-noerrh solver-noerrh.o slave-noerrh.o $(CFLAGS) ${LDFLAGS}
	mv pi-ft-noerrh ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

pi-ft-noerrh-shrink: solver-noerrh.c slave-noerrh
	$(CC) -c solver-noerrh.c -DUSE_SHRINK_MODE $(CFLAGS)
	$(CC) -o pi-ft-noerrh-shrink solver-noerrh.o slave-noerrh.o $(CFLAGS) ${LDFLAGS}
	mv pi-ft-noerrh-shrink ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

pi-ft-noerrh-blank: solver-noerrh.c slave-noerrh
	$(CC) -c solver-noerrh.c -DUSE_BLANK_MODE $(CFLAGS)
	$(CC) -o pi-ft-noerrh-blank solver-noerrh.o slave-noerrh.o $(CFLAGS) ${LDFLAGS}
	mv pi-ft-noerrh-blank ${HARNESS_ROOT}/bin/${HARNESS_ARCH}


# Fortran examples using error-handler

fpi-ft: fsolvergen.F fslavegen
	$(CC) -E fsolvergen.F -o fsolvergen.f
	$(FC) -c fsolvergen.f $(FFLAGS)
	$(FC) -o fpi-ft fsolvergen.o fslavegen.o $(FFLAGS) ${FLDFLAGS}
	mv fpi-ft ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

fslavegen: fslavegen.f
	$(FC) -c fslavegen.f  $(FFLAGS)

fpi-ft-coll: fsolvergen.F fslavegen
	$(CC) -E fsolvergen.F -DCOLLECTIVE_CHECKWHODIED -o fsolvergen.f
	$(FC) -c fsolvergen.f $(FFLAGS)
	$(FC) -o fpi-ft-coll fsolvergen.o fslavegen.o $(FFLAGS) ${FLDFLAGS}
	mv fpi-ft-coll ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

fpi-ft-blank: fsolvergen.F fslavegen
	$(CC) -E fsolvergen.F -DUSE_BLANK_MODE -o fsolvergen.f
	$(FC) -c fsolvergen.f $(FFLAGS)
	$(FC) -o fpi-ft-blank fsolvergen.o fslavegen.o $(FFLAGS) ${FLDFLAGS}
	mv fpi-ft-blank ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

fpi-ft-shrink: fsolvergen.F fslavegen
	$(CC) -E fsolvergen.F -DUSE_SHRINK_MODE -o fsolvergen.f
	$(FC) -c fsolvergen.f $(FFLAGS)
	$(FC) -o fpi-ft-shrink fsolvergen.o fslavegen.o $(FFLAGS) ${FLDFLAGS}
	mv fpi-ft-shrink ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

fslave-noerrh: fslave-noerrh.f
	$(FC) -c fslave-noerrh.f  $(FFLAGS)

fpi-ft-noerrh: fsolver-noerrh.F fslave-noerrh
	$(CC) -E fsolver-noerrh.F -o fsolver-noerrh.f
	$(FC) -c fsolver-noerrh.f $(FFLAGS)
	$(FC) -o fpi-ft-noerrh fsolver-noerrh.o fslave-noerrh.o \
		$(FFLAGS) ${FLDFLAGS}
	mv fpi-ft-noerrh ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

fpi-ft-noerrh-blank: fsolver-noerrh.F fslave-noerrh
	$(CC) -E fsolver-noerrh.F -DUSE_BLANK_MODE -o fsolver-noerrh.f
	$(FC) -c fsolver-noerrh.f $(FFLAGS)
	$(FC) -o fpi-ft-noerrh-blank fsolver-noerrh.o fslave-noerrh.o \
		$(FFLAGS) ${FLDFLAGS}
	mv fpi-ft-noerrh-blank ${HARNESS_ROOT}/bin/${HARNESS_ARCH}

fpi-ft-noerrh-shrink: fsolver-noerrh.F fslave-noerrh
	$(CC) -E fsolver-noerrh.F -DUSE_SHRINK_MODE -o fsolver-noerrh.f
	$(FC) -c fsolver-noerrh.f $(FFLAGS)
	$(FC) -o fpi-ft-noerrh-shrink fsolver-noerrh.o fslave-noerrh.o \
		$(FFLAGS) ${FLDFLAGS}
	mv fpi-ft-noerrh-shrink ${HARNESS_ROOT}/bin/${HARNESS_ARCH}


clean:
	rm -f *.o *~ 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft-shrink 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft-blank 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft-coll
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft-noerrh 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft-noerrh-shrink 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/pi-ft-noerrh-blank 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft-shrink 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft-blank 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft-coll
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft-noerrh 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft-noerrh-shrink 
	rm -f ${HARNESS_ROOT}/bin/${HARNESS_ARCH}/fpi-ft-noerrh-blank 
	rm -f fsolvergen.f fsolver-noerrh.f
