#
#   COPYRIGHT U.S. GOVERNMENT 
#   
#   This software is distributed without charge and comes with
#   no warranty.
#
#   PRISM routine
#
#   Please feel free to send questions, comments, and problem reports
#   to prism@super.org. 
#
#
#   PURPOSE
#   =======
#   Makefile for creating MPI matrix multiplication (bimmer) test programs

ALL: default
##### User configurable options #####

ARCH        = $(PRISM_MPI_ARCH)
COMM        = $(PRISM_MPI_COMM)

include $(PRISM_MAKE_INCLUDE)Make-$(ARCH)-$(COMM).include
### End User configurable options ###

PRISM_INCLUDE = -I../include

CFLAGS  =  $(OPTFLAGS) $(PRISM_INCLUDE) $(MPI_INCLUDE) $(OTHER_DEFINES) $(PRISM_DEFINES)
CFLAGS_MC_TEST  =  $(CFLAGS) -DPRISM_TIME -DPRISM_MPI_COLL
CFLAGS_PC_TEST  =  $(CFLAGS) -DPRISM_TIME

# use testing version of mm so get timers
LIB_MC_TEST = ../lib/$(ARCH)/$(COMM)/libmmmt.a
LIB_PC_TEST = ../lib/$(ARCH)/$(COMM)/libmmpt.a

# what libraries the executable should depend on
LIBS_MC_TEST_DEPEND =  $(LIB_MC_TEST) ../lib/$(ARCH)/$(COMM)/libutilityt.a
LIBS_PC_TEST_DEPEND =  $(LIB_PC_TEST) ../lib/$(ARCH)/$(COMM)/libutilityt.a

LIBS_MC_TEST = $(LIBS_MC_TEST_DEPEND) $(LIB_PATH) $(BLAS_LIB) $(LAPACK_LIB) $(LIB_LIST)
LIBS_PC_TEST = $(LIBS_PC_TEST_DEPEND) $(LIB_PATH) $(BLAS_LIB) $(LAPACK_LIB) $(LIB_LIST)

EXECS_MC_TEST = prism_bimmer_test_mc
EXECS_PC_TEST = prism_bimmer_test_pc

EXECS_TEST = $(EXECS_MC_TEST) $(EXECS_PC_TEST)

OBJS_MC_TEST = prism_bimmer_test.o_mt \
                prism_v_error_chk.o_mt
OBJS_PC_TEST = prism_bimmer_test.o_pt \
                prism_v_error_chk.o_pt

.SUFFIXES: .c .o_mt .o_pt

default: mctest

all: mctest pctest

mctest: $(EXECS_MC_TEST)
pctest: $(EXECS_PC_TEST)

prism_bimmer_test_mc: $(OBJS_MC_TEST) $(LIBS_MC_TEST_DEPEND)
	$(CFLINKER) $(LFLAGS) -o $@ $(OBJS_MC_TEST) $(LIBS_MC_TEST)
prism_bimmer_test_pc: $(OBJS_PC_TEST) $(LIBS_PC_TEST_DEPEND)
	$(CFLINKER) $(LFLAGS) -o $@ $(OBJS_PC_TEST) $(LIBS_PC_TEST)

.c.o_mt:
	$(CC) $(CFLAGS_MC_TEST) -c $?
	mv $*.o $@
.c.o_pt:
	$(CC) $(CFLAGS_PC_TEST) -c $?
	mv $*.o $@

clean:
	/bin/rm -f *.o *.o_mt *.o_pt *~ PI* $(EXECS)

cleanobjs: 
	/bin/rm -f *.o *.o_mt *.o_pt PI*
