HEADER    = ./
SUPERLU   = $(SUPERLU_LIB_LINK)
OLIBS     = $(LAPACK_LIB_LINK) $(ARPACK_LAPACK_LIB_LINK) $(BLAS_LIB_LINK)
ARPACK    = $(ARPACK_LIB_LINK)

FC        = g77
F_OPT_FLAGS = -O
FFLAGS    = $(F_OPT_FLAGS)

CC        = cc
C_OPT_FLAGS = -O
CFLAGS    = $(C_OPT_FLAGS) -I$(HEADER)

#.c.o:
#	$(CC) $(CFLAGS) -I$(HEADER) -c $< 
#.f.o:
#	$(FC) $(FFLAGS) -c $< 

all:           sstdrv dstdrv cstdrv zstdrv sgedrv dgedrv cgedrv zgedrv
single:        sstdrv sgedrv
double:        dstdrv dgedrv
complex:       cstdrv cgedrv
doublecomplex: zstdrv zgedrv
standard:      sstdrv dstdrv cstdrv zstdrv
general:       sgedrv dgedrv cgedrv zgedrv

victor: victor.o dspstev.o Dinterface.o Zinterface.o dmvm.o dreadhb.o
	$(FC) $(FFLAGS) -I$(HEADER) dstdrv.o dspstev.o Dinterface.o \
        Zinterface.o dmvm.o dreadhb.o $(SUPERLU) $(ARPACK) $(OLIBS) \
        -lm -o victor

#  --- STANDARD EIGENVALUE PROBLEMS ---

sstdrv: sstdrv.o sspstev.o Sinterface.o Cinterface.o smvm.o sreadhb.o 
	$(FC) $(FFLAGS) -I$(HEADER) sstdrv.o sspstev.o Sinterface.o \
        Cinterface.o smvm.o sreadhb.o $(SUPERLU) $(ARPACK) $(OLIBS) \
        -lm -o sstdrv

dstdrv: dstdrv.o dspstev.o Dinterface.o Zinterface.o dmvm.o dreadhb.o
	$(FC) $(FFLAGS) -I$(HEADER) dstdrv.o dspstev.o Dinterface.o \
        Zinterface.o dmvm.o dreadhb.o $(SUPERLU) $(ARPACK) $(OLIBS) \
        -lm -o dstdrv

cstdrv: cstdrv.o cspstev.o Cinterface.o cmvm.o sreadhb.o
	$(FC) $(FFLAGS) -I$(HEADER) cstdrv.o cspstev.o Cinterface.o cmvm.o \
	sreadhb.o $(SUPERLU) $(ARPACK) $(OLIBS) -lm -o cstdrv

zstdrv: zstdrv.o zspstev.o Zinterface.o zmvm.o dreadhb.o
	$(FC) $(FFLAGS) -I$(HEADER) zstdrv.o zspstev.o Zinterface.o zmvm.o \
        dreadhb.o $(SUPERLU) $(ARPACK) $(OLIBS) -lm -o zstdrv

# --- GENERALIZED EIGENVALUE PROBLEMS ---

sgedrv: sgedrv.o sspgeev.o Sinterface.o Cinterface.o smvm.o sreadhb.o \
	sshftab.o sshftab2.o snzcnt.o
	$(FC) $(FFLAGS) -I$(HEADER) sgedrv.o sspgeev.o Sinterface.o \
        Cinterface.o smvm.o sreadhb.o sshftab.o sshftab2.o snzcnt.o \
        $(SUPERLU) $(ARPACK) $(OLIBS) -lm -o sgedrv

dgedrv: dgedrv.o dspgeev.o Dinterface.o Zinterface.o dmvm.o dreadhb.o \
	dshftab.o dshftab2.o dnzcnt.o
	$(FC) $(FFLAGS) -I$(HEADER) dgedrv.o dspgeev.o Dinterface.o \
	Zinterface.o dmvm.o dreadhb.o dshftab.o dshftab2.o dnzcnt.o \
        $(SUPERLU) $(ARPACK) $(OLIBS) -lm -o dgedrv

cgedrv: cgedrv.o cspgeev.o Cinterface.o cmvm.o sreadhb.o cshftab.o cnzcnt.o
	$(FC) $(FFLAGS) -I$(HEADER) cgedrv.o cspgeev.o Cinterface.o cmvm.o \
        sreadhb.o cshftab.o cnzcnt.o $(SUPERLU) $(ARPACK) \
        $(OLIBS) -lm -o cgedrv

zgedrv: zgedrv.o zspgeev.o Zinterface.o zmvm.o dreadhb.o zshftab.o znzcnt.o 
	 $(FC) $(FFLAGS) -I$(HEADER) zgedrv.o zspgeev.o Zinterface.o zmvm.o \
         dreadhb.o zshftab.o znzcnt.o $(SUPERLU) $(ARPACK) \
         $(OLIBS) -lm -o zgedrv

clean: 
	/bin/rm -f *.o [s,d,c,z]stdrv [s,d,c,z]gedrv
