# First to include the conf info depending on the compilers we need etc
# i.e. all options starting with IC_

include ../../../conf/system/makeopts-SNIPE_LITE

# For any arch type options
# i.e. anything else like, IMA_ARCH, system call flags etc

include ../../../conf/system/makeopts-$(HARNESS_ARCH)

#
# The rest should now be a little puddie kat.
#

# Final build options conf file.
# Yep, how many do we need :)

include ../../../conf/makeopts-HARNESS


MPI_OPTS =-I$(HARNESS_ROOT)/include
COMPILE_OPT = $(INTER_OPTS) $(BUILD_OPTS) $(MPI_OPTS) 

# Now for the compilation directories

include ../../../conf/system/makeopts-dirs


###########################################################################
#			C++ tests
###########################################################################

exes = 	$(bindir)/mpi2c++_test 

###########################################################################

objects =  	$(objdir)/mpi2c++_test.o \
		$(objdir)/messages.o \
		$(objdir)/stack.o \
		$(objdir)/signal.o \
		$(objdir)/allgather.o \
		$(objdir)/allreduce.o \
		$(objdir)/alltoall.o \
		$(objdir)/attr.o \
		$(objdir)/badbuf.o \
		$(objdir)/bcast.o \
		$(objdir)/bcast_struct.o \
		$(objdir)/bottom.o \
		$(objdir)/bsend.o \
		$(objdir)/buffer.o \
		$(objdir)/cancel.o \
		$(objdir)/cartcomm.o \
		$(objdir)/commdup.o \
		$(objdir)/commfree.o \
		$(objdir)/compare.o \
		$(objdir)/dims.o \
		$(objdir)/dup_test.o \
		$(objdir)/errhandler.o \
		$(objdir)/gather.o \
		$(objdir)/getcount.o \
		$(objdir)/getel.o \
		$(objdir)/graphcomm.o \
		$(objdir)/group.o \
		$(objdir)/groupfree.o \
		$(objdir)/initialized1.o \
		$(objdir)/initialized2.o \
		$(objdir)/intercomm.o \
		$(objdir)/interf.o \
		$(objdir)/iprobe.o \
		$(objdir)/isend.o \
		$(objdir)/op_test.o \
		$(objdir)/pack_test.o \
		$(objdir)/pcontrol.o \
		$(objdir)/probe.o \
		$(objdir)/procname.o \
		$(objdir)/rank_size.o \
		$(objdir)/reduce.o \
		$(objdir)/reduce_scatter.o \
		$(objdir)/request1.o \
		$(objdir)/rsend.o \
		$(objdir)/scan.o \
		$(objdir)/scatter.o \
		$(objdir)/send.o \
		$(objdir)/sendrecv.o \
		$(objdir)/sendrecv_rep.o \
		$(objdir)/split.o \
		$(objdir)/ssend.o \
		$(objdir)/start.o \
		$(objdir)/startall.o \
		$(objdir)/status_test.o \
		$(objdir)/struct_gatherv.o \
		$(objdir)/test1.o \
		$(objdir)/test3.o \
		$(objdir)/testall.o \
		$(objdir)/testany.o \
		$(objdir)/testsome.o \
		$(objdir)/topo.o \
		$(objdir)/waitall.o \
		$(objdir)/waitany.o \
		$(objdir)/waitsome.o \
		$(objdir)/wtime.o


###########################################################################

default: $(objdir) $(bindir) $(libdir)\
	$(exes) $(fexes)

all: $(objdir) $(bindir) $(libdir)\
	$(exes) $(fexes)

###########################################################################

LIBS = $(SL_LIBS) -lm

###########################################################################

HDRS = ../../../include/mpi.h ../../../include/mpi++.h 
FHDRS = ../../../include/mpif.h 


###########################################################################

$(objdir) : 
	mkdir $(objdir)

$(bindir) : 
	mkdir $(bindir)

$(libdir) : 
	mkdir $(libdir)

###########################################################################

###########################################################################
#		C++ tests
###########################################################################

$(bindir)/mpi2c++_test : $(objects) $(libdir)/libftmpi.a \
			$(libdir)/libftmpi++.a $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) $(objects) -o $(objdir)/mpi2c++_test  -L$(libdir) \
	-lftmpi++ -lftmpi $(LIBS) 
	mv $(objdir)/mpi2c++_test  $(bindir)/

$(objdir)/mpi2c++_test.o: mpi2c++_test.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) mpi2c++_test.cc -c 
	mv mpi2c++_test.o $(objdir)/

$(objdir)/messages.o: messages.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) messages.cc -c 
	mv messages.o $(objdir)/

$(objdir)/stack.o: stack.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) stack.cc -c 
	mv stack.o $(objdir)/

$(objdir)/signal.o: signal.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) signal.cc -c 
	mv signal.o $(objdir)/

$(objdir)/allgather.o: allgather.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) allgather.cc -c 
	mv allgather.o $(objdir)/

$(objdir)/allreduce.o: allreduce.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) allreduce.cc -c 
	mv allreduce.o $(objdir)/

$(objdir)/alltoall.o: alltoall.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) alltoall.cc -c 
	mv alltoall.o $(objdir)/

$(objdir)/attr.o: attr.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) attr.cc -c 
	mv attr.o $(objdir)/

$(objdir)/badbuf.o: badbuf.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) badbuf.cc -c 
	mv badbuf.o $(objdir)/

$(objdir)/bcast.o: bcast.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) bcast.cc -c 
	mv bcast.o $(objdir)/

$(objdir)/bcast.o: bcast.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) bcast.cc -c 
	mv bcast.o $(objdir)/

$(objdir)/bcast_struct.o: bcast_struct.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) bcast_struct.cc -c 
	mv bcast_struct.o $(objdir)/

$(objdir)/bottom.o: bottom.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) bottom.cc -c 
	mv bottom.o $(objdir)/

$(objdir)/bsend.o: bsend.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) bsend.cc -c 
	mv bsend.o $(objdir)/

$(objdir)/buffer.o: buffer.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) buffer.cc -c 
	mv buffer.o $(objdir)/

$(objdir)/cancel.o: cancel.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) cancel.cc -c 
	mv cancel.o $(objdir)/

$(objdir)/cartcomm.o: cartcomm.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) cartcomm.cc -c 
	mv cartcomm.o $(objdir)/

$(objdir)/commdup.o: commdup.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) commdup.cc -c 
	mv commdup.o $(objdir)/

$(objdir)/commfree.o: commfree.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) commfree.cc -c 
	mv commfree.o $(objdir)/

$(objdir)/compare.o: compare.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) compare.cc -c 
	mv compare.o $(objdir)/

$(objdir)/dims.o: dims.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) dims.cc -c 
	mv dims.o $(objdir)/

$(objdir)/dup_test.o: dup_test.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) dup_test.cc -c 
	mv dup_test.o $(objdir)/

$(objdir)/errhandler.o: errhandler.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) errhandler.cc -c 
	mv errhandler.o $(objdir)/

$(objdir)/gather.o: gather.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) gather.cc -c 
	mv gather.o $(objdir)/

$(objdir)/getcount.o: getcount.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) getcount.cc -c 
	mv getcount.o $(objdir)/

$(objdir)/getel.o: getel.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) getel.cc -c 
	mv getel.o $(objdir)/

$(objdir)/graphcomm.o: graphcomm.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) graphcomm.cc -c 
	mv graphcomm.o $(objdir)/

$(objdir)/group.o: group.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) group.cc -c 
	mv group.o $(objdir)/

$(objdir)/groupfree.o: groupfree.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) groupfree.cc -c 
	mv groupfree.o $(objdir)/

$(objdir)/initialized1.o: initialized1.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) initialized1.cc -c 
	mv initialized1.o $(objdir)/

$(objdir)/initialized2.o: initialized2.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) initialized2.cc -c 
	mv initialized2.o $(objdir)/

$(objdir)/intercomm.o: intercomm.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) intercomm.cc -c 
	mv intercomm.o $(objdir)/

$(objdir)/interf.o: interf.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) interf.cc -c 
	mv interf.o $(objdir)/

$(objdir)/iprobe.o: iprobe.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) iprobe.cc -c 
	mv iprobe.o $(objdir)/

$(objdir)/isend.o: isend.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) isend.cc -c 
	mv isend.o $(objdir)/

$(objdir)/op_test.o: op_test.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) op_test.cc -c 
	mv op_test.o $(objdir)/

$(objdir)/pack_test.o: pack_test.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) pack_test.cc -c 
	mv pack_test.o $(objdir)/

$(objdir)/pcontrol.o: pcontrol.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) pcontrol.cc -c 
	mv pcontrol.o $(objdir)/

$(objdir)/probe.o: probe.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) probe.cc -c 
	mv probe.o $(objdir)/

$(objdir)/procname.o: procname.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) procname.cc -c 
	mv procname.o $(objdir)/

$(objdir)/rank_size.o: rank_size.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) rank_size.cc -c 
	mv rank_size.o $(objdir)/

$(objdir)/reduce.o: reduce.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) reduce.cc -c 
	mv reduce.o $(objdir)/

$(objdir)/reduce_scatter.o: reduce_scatter.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) reduce_scatter.cc -c 
	mv reduce_scatter.o $(objdir)/

$(objdir)/request1.o: request1.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) request1.cc -c 
	mv request1.o $(objdir)/

$(objdir)/rsend.o: rsend.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) rsend.cc -c 
	mv rsend.o $(objdir)/

$(objdir)/scan.o: scan.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) scan.cc -c 
	mv scan.o $(objdir)/

$(objdir)/scatter.o: scatter.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) scatter.cc -c 
	mv scatter.o $(objdir)/

$(objdir)/send.o: send.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) send.cc -c 
	mv send.o $(objdir)/

$(objdir)/sendrecv.o: sendrecv.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) sendrecv.cc -c 
	mv sendrecv.o $(objdir)/

$(objdir)/sendrecv_rep.o: sendrecv_rep.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) sendrecv_rep.cc -c 
	mv sendrecv_rep.o $(objdir)/

$(objdir)/split.o: split.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) split.cc -c 
	mv split.o $(objdir)/

$(objdir)/ssend.o: ssend.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) ssend.cc -c 
	mv ssend.o $(objdir)/

$(objdir)/start.o: start.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) start.cc -c 
	mv start.o $(objdir)/

$(objdir)/startall.o: startall.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) startall.cc -c 
	mv startall.o $(objdir)/

$(objdir)/status_test.o: status_test.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) status_test.cc -c 
	mv status_test.o $(objdir)/

$(objdir)/struct_gatherv.o: struct_gatherv.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) struct_gatherv.cc -c 
	mv struct_gatherv.o $(objdir)/

$(objdir)/test1.o: test1.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) test1.cc -c 
	mv test1.o $(objdir)/

$(objdir)/test3.o: test3.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) test3.cc -c 
	mv test3.o $(objdir)/

$(objdir)/testall.o: testall.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) testall.cc -c 
	mv testall.o $(objdir)/

$(objdir)/testany.o: testany.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) testany.cc -c 
	mv testany.o $(objdir)/

$(objdir)/testsome.o: testsome.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) testsome.cc -c 
	mv testsome.o $(objdir)/

$(objdir)/topo.o: topo.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) topo.cc -c 
	mv topo.o $(objdir)/

$(objdir)/waitall.o: waitall.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) waitall.cc -c 
	mv waitall.o $(objdir)/

$(objdir)/waitany.o: waitany.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) waitany.cc -c 
	mv waitany.o $(objdir)/

$(objdir)/waitsome.o: waitsome.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) waitsome.cc -c 
	mv waitsome.o $(objdir)/

$(objdir)/wtime.o: wtime.cc $(HDRS)
	$(CCC) $(CCFLAGS) $(COMPILE_OPT) wtime.cc -c 
	mv wtime.o $(objdir)/

###########################################################################
#		Misc	
###########################################################################

clean :
	rm -f $(objdir)/*
	rm -f $(bindir)/mpi2c++test
