
##### User configurable options #####

MAKE                 = make --no-print-directory

MPI_CC               = /usr/bin/mpicc
MPI_F77              = /usr/bin/mpif77
MPI_CLINKER          = $(MPI_CC)
MPI_FLINKER          = $(MPI_F77)

DEBUG_LIBS           = 
MPI_INC              = 
MPI_LIBS             = 
CFLAGS               = -O2 -mtune=generic -fPIC -fstack-protector 
FFLAGS               = -O2 -mtune=generic -fPIC -fstack-protector 
MPE_INCDIR           = /usr/include/mpich2
MPE_LIBDIR           = /usr/lib64/mpich2
MPE_SBINDIR          = /usr/sbin
F2CMPI_LIBS          = -lmpe_f2cmpi
COLLCHK_LIBS         = -L$(MPE_LIBDIR) -lmpe_collchk $(MPI_LIBS)
COLLCHK_FLIBS        = -L$(MPE_LIBDIR) \
                       $(F2CMPI_LIBS) -lmpe_collchk \
                       $(MPI_LIBS)

C_INCS               = -I$(MPE_INCDIR) $(MPI_INC)
F_INCS               = -I$(MPE_INCDIR) $(MPI_INC)
LDFLAGS              = 
MPE_BUILD_FORTRAN2C  = yes

#### End User configurable options ###

SHELL         = /bin/sh
RM            = rm

VPATH=.:$(srcdir)

srcdir        = /home/builduser/svn-x86_64/pkgs/mpich2/BUILD/mpich2-1.0.4p1/src/mpe2/src/collchk/test

CC_FLAGS      = $(CFLAGS) $(C_INCS) $(MPE_COPTS)
FC_FLAGS      = $(FFLAGS) $(F_INCS) $(MPE_FOPTS)
CC_LDFLAGS    = $(LDFLAGS) $(CFLAGS) $(MPE_LDOPTS)
FC_LDFLAGS    = $(LDFLAGS) $(FFLAGS) $(MPE_LDOPTS)

.SUFFIXES: .c .f .o 

C_SRC         = wrong_composite.c wrong_scatterv.c \
                wrong_int_byte.c wrong_root.c \
                composite.c scatterv.c \
                time_bcast.c time_allreduce.c \
                time_alltoallv.c time_alltoallv0.c
F_SRC         = wrong_reals.f
C_OBJS        = $(C_SRC:.c=.o)
F_OBJS        = $(F_SRC:.f=.o)
C_EXECS       = $(C_OBJS:.o=)

OPT_C_EXECS   = time_bcast_nochk time_allreduce_nochk \
                time_alltoallv0_nochk time_alltoallv_nochk

OPT_F_EXECS   = wrong_reals wrong_reals_nochk

.c.o:
	$(MPI_CC) $(CC_FLAGS) -c $<

.f.o:
	$(MPI_F77) $(FC_FLAGS) -c $<

.o:
	$(MPI_CLINKER) $(CC_LDFLAGS) -o $@ $< $(COLLCHK_LIBS)

time_bcast_nochk: time_bcast.o
	$(MPI_CLINKER) $(CC_LDFLAGS) -o $@ $? $(MPI_LIBS)

time_allreduce_nochk: time_allreduce.o
	$(MPI_CLINKER) $(CC_LDFLAGS) -o $@ $? $(MPI_LIBS)

time_alltoallv_nochk: time_alltoallv.o
	$(MPI_CLINKER) $(CC_LDFLAGS) -o $@ $? $(MPI_LIBS)

time_alltoallv0_nochk: time_alltoallv0.o
	$(MPI_CLINKER) $(CC_LDFLAGS) -o $@ $? $(MPI_LIBS)

wrong_reals: wrong_reals.o
	$(MPI_FLINKER) $(FC_LDFLAGS) -o $@ $? $(COLLCHK_FLIBS)

wrong_reals_nochk: wrong_reals.o
	$(MPI_FLINKER) $(FC_LDFLAGS) -o $@ $? $(MPI_LIBS)

default: $(C_OBJS) $(C_EXECS) $(OPT_C_EXECS)

linktest: linktest_C

linktest_C:
	@-$(MPE_SBINDIR)/mpetestlink wrong_int_byte \
	  "*** Link C program with the MPI collective/datatype checking library ....."
	@-echo ; $(MAKE) clean

linktest_F77:
	@-if [ "$(MPE_BUILD_FORTRAN2C)" = "yes" ] ; then \
	    $(MPE_SBINDIR)/mpetestlink wrong_reals \
	    "*** Link F77 program with the MPI collective/datatype checking library ..." ; \
	    $(MAKE) clean ; \
	    echo ; \
	  fi


runtest_C:
	@-$(MPE_SBINDIR)/mpetestexec wrong_int_byte \
	  "*** Test C program with the MPI collective/datatype checking library ....."
	@-echo ; $(MAKE) clean

runtest_F77:
	@-if [ "$(MPE_BUILD_FORTRAN2C)" = "yes" ] ; then \
	    $(MPE_SBINDIR)/mpetestexec wrong_reals \
	    "*** Test F77 program with the MPI collective/datatype checking library ..." ; \
	    $(MAKE) clean ; \
	    echo ; \
	  fi

clean:
	@-$(RM) -f $(C_OBJS) $(F_OBJS) *.o
	@-$(RM) -f $(C_EXECS) $(OPT_C_EXECS) $(OPT_F_EXECS)

distclean: clean
	@-$(RM) -f Makefile
