#
#   COPYRIGHT U.S. GOVERNMENT 
#   
#   This software is distributed without charge and comes with
#   no warranty.
#
#   Please feel free to send questions, comments, and problem reports
#   to prism@super.org. 
#
#
#   PURPOSE
#   =======
#   Makefile for creating PRISM utility library needed by BiMMeR software

##### 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 = $(PRISM_INCLUDE) $(MPI_INCLUDE) $(OTHER_DEFINES) $(PRISM_DEFINES) -DPRISM_BC_READY -DPRISM_SKEW_READY
CFLAGS_OPT = $(CFLAGS) $(OPTFLAGS)
CFLAGS_TEST = $(CFLAGS) $(OPTFLAGS)

LIB_PATH_O = ../lib/$(ARCH)/$(COMM)

LIB_OPT = $(LIB_PATH_O)/libutility.a
LIB_TEST = $(LIB_PATH_O)/libutilityt.a

# prism_v_layout is needed by mm_test so easiest to include in mm lib
OBJS_OPT = prism_v_free_matrix.o_o \
          prism_i_ldim.o_o prism_i_ldwk.o_o \
          prism_s_v_generror.o_o prism_s_m_d_alloc_matrix.o_o \
          prism_v_init_var.o_o prism_v_prt_m.o_o \
          prism_v_bc.o_o prism_v_skew.o_o prism_v_copy.o_o \
          prism_x_datatype.o_o prism_i_datatype_size.o_o prism_v_layout.o_o
OBJS_TEST = prism_v_free_matrix.o_t \
          prism_i_ldim.o_t prism_i_ldwk.o_t \
          prism_s_v_generror.o_t prism_s_m_d_alloc_matrix.o_t \
          prism_v_init_var.o_t prism_v_prt_m.o_t \
          prism_v_bc.o_t prism_v_skew.o_t prism_v_copy.o_t \
          prism_x_datatype.o_t prism_i_datatype_size.o_t prism_v_layout.o_t

.SUFFIXES: .c .o_o .o_t

default: opt
opt: $(LIB_OPT)
test: $(LIB_TEST)
all: opt test

.c.o_o:
	$(CC) $(CFLAGS_OPT) -c $?
	mv $*.o $@
.c.o_t:
	$(CC) $(CFLAGS_TEST) -c $?
	mv $*.o $@

$(LIB_OPT): $(LIB_PATH_O) $(OBJS_OPT) 
	-$(AR) $@ $(OBJS_OPT)
	$(RANLIB) $@
$(LIB_TEST): $(LIB_PATH_O) $(OBJS_TEST) 
	-$(AR) $@ $(OBJS_TEST)
	$(RANLIB) $@

$(LIB_PATH_O):
	mkdir -p $(LIB_PATH_O)

clean:
	/bin/rm -f *.o *.o_o *.o_t $(LIB_OPT) $(LIB_TEST) *~

cleanobjs:
	/bin/rm -f *.o *.o_o *.o_t
