# Makefile for spmpdel library

include ../Config.mk

TARGET=lib$(LIBNAME).a

EIGENOBJS=
MATRIXOBJS=

ifeq ($(MATRIXLIB),SSL2)
	EIGENOBJS=ssl2_eigen.o indexx.o
	MATRIXOBJS=eigmatrix.o $(EIGENOBJS)
endif
ifeq ($(MATRIXLIB),LAPACK)
	EIGENOBJS=lapack_eigen.o indexx.o
	MATRIXOBJS=eigmatrix.o $(EIGENOBJS)
endif


all: $(TARGET)

install: $(TARGET)
	test -d $(DEST_LIB) || install -d $(DEST_LIB)
	test -d $(DEST_INC) || install -d $(DEST_INC)
	install -m 644 $(TARGET) $(DEST_LIB)
	install -m 644 $(MODS) $(MODINCS) $(DEST_INC)
	if [ X$(F90MODTYPE) = X"intel.d" ]; then \
		install -m 644 work.pc $(DEST_INC)/work.pc ;\
	fi


OBJS =	lumatrix_f77.o lumatrix.o \
	ae_module.o at_module.o ee_module.o esc_module.o c2ajcc.o \
	et_module.o \
	w_base_module.o w_integral_module.o w_deriv_module.o \
	w_spectrum_module.o  w_module.o \
	wa_base_module.o wa_integral_module.o wa_deriv_module.o \
	wa_spectrum_module.o wa_module.o \
	wt_module.o \
	at_ab_galerkin_ND.o at_ad_galerkin_DD.o at_af_galerkin_MM.o     \
	at_ah_galerkin_MMex.o at_ap_galerkin_DN.o at_aq_galerkin_RRSS.o \
	at_av_galerkin_NN.o et_galerkin_module.o wt_galerkin_module.o   \
	$(MATRIXOBJS)

$(TARGET): $(OBJS)
	$(AR) $(ARFLAGS) $@ $(OBJS)
	$(RANLIB) $@

$(OBJS): work.pcl

work.pcl: Makefile ../Config.mk
	sh ../chkpcl.sh $(FFLAGS) $(SYSFFLAGS)

clean:
	-rm -f $(MODS) *.o work.pc* *~ *.bak *.a eigmatrix.f90

# dependences

at_module.o: lumatrix.o

et_module.o: ae_module.o at_module.o lumatrix.o

w_integral_module.o: w_base_module.o
w_deriv_module.o: w_base_module.o
w_spectrum_module.o: w_base_module.o
w_module.o: w_spectrum_module.o w_integral_module.o \
	    w_deriv_module.o w_base_module.o 
wa_spectrum_module.o: w_base_module.o
wa_base_module.o: w_base_module.o
wa_integral_module.o: w_base_module.o
wa_deriv_module.o: wa_base_module.o w_base_module.o w_deriv_module.o
wa_module.o: wa_base_module.o w_base_module.o \
             wa_integral_module.o w_integral_module.o \
             wa_deriv_module.o w_deriv_module.o \
	     wa_spectrum_module.o w_spectrum_module.o

wt_module.o: wa_module.o at_module.o lumatrix.o

at_ab_galerkin_ND.o:at_module.o
at_ad_galerkin_DD.o:at_module.o
at_af_galerkin_MM.o:at_module.o
at_ah_galerkin_MMex.o:at_module.o
at_ap_galerkin_DN.o:at_module.o
at_aq_galerkin_RRSS.o:at_module.o
at_av_galerkin_NN.o:at_module.o
et_galerkin_module.o:et_module.o \
	at_ab_galerkin_ND.o at_ad_galerkin_DD.o at_af_galerkin_MM.o     \
	at_ah_galerkin_MMex.o at_ap_galerkin_DN.o at_aq_galerkin_RRSS.o \
	at_av_galerkin_NN.o
wt_galerkin_module.o:wt_module.o \
	at_ab_galerkin_ND.o at_ad_galerkin_DD.o at_af_galerkin_MM.o     \
	at_ah_galerkin_MMex.o at_ap_galerkin_DN.o at_aq_galerkin_RRSS.o \
	at_av_galerkin_NN.o

eigmatrix.f90: eigmatrix.g90
	$(CPP) -P -D $(MATRIXLIB) $< > $@

eigmatrix.o: $(EIGENOBJS)

ssl2_eigen.o: indexx.o
lapack_eigen.o: indexx.o
