#######################################################################
#                     SVDPACKC (Ver 1.0) Makefile                     #
#######################################################################
#                                                                     #
#      las1: Single-Vector Lanczos SVD via 2-Cyclic Eigensystems      #
#      las2: Single-Vector Lanczos SVD via   A'A    Eigensystems      #
#      bls1: Block         Lanczos SVD via 2-Cyclic Eigensystems      #
#      bls2: Block         Lanczos SVD via   A'A    Eigensystems      #
#      sis1: Subspace Iteration    SVD via 2_Cyclic Eigensystems      #
#      sis2: Subspace Iteration    SVD via   A'A    Eigensystems      #
#      tms1: Trace Minimization    SVD via 2_Cyclic Eigensystems      #
#      tms2: Trace Minimization    SVD via   A'A    Eigensystems      #
#                                                                     #
#######################################################################

ARCH = P4SSE2
LAPACK = /publi2/linux/lib/
INC    = -I/projects/textmine/Data/suvrit/include/ -I/public2/linux/include
CC    =	g++
#CFLAGS=	-c -O4 $(INC)
CFLAGS = -shared -c -O4 $(INC) -Wall -fPIC

LIB=	-lm #-L$(LAPACK) -llapack_$(ARCH)

OBJS = svdpack.o bls.o las.o sis.o tms.o\
	s_las1.o s_las2.o s_bls1.o s_bls2.o s_tms1.o\
	s_tms2.o s_sis1.o s_sis2.o s_runbls1.o s_runbls2.o\
	s_runlas1.o s_runlas2.o s_runsis1.o s_runsis2.o\
	s_runtms1.o s_runtms2.o driver.o s_opts.o

POBJS = main.o

all:	ssvd

ssvd: $(OBJS) $(POBJS)
	${CC} $(OBJS) $(POBJS) ${LIB} -o ssvd

driver.o: *.h

main.o: driver.h

s_opts.o: s_opts.h

svdpack.o: svdpack.h
bls.o:	bls.h svdpack.h
tms.o:  tms.h svdpack.h
las.o:  las.h svdpack.h
sis.o:  sis.h svdpack.h

s_las1.o:	s_las1.h svdpack.h las.h
s_las2.o:	s_las2.h svdpack.h las.h
s_runlas1.o: svdpack.h s_runlas1.h s_las1.h
s_runlas2.o: svdpack.h s_runlas2.h s_las2.h


s_bls1.o:	s_bls1.h svdpack.h bls.h
s_bls2.o:	s_bls2.h svdpack.h bls.h
s_runbls1.o: svdpack.h s_runbls1.h s_bls1.h
s_runbls2.o: svdpack.h s_runbls2.h s_bls2.h

s_sis1.o:	s_sis1.h svdpack.h sis.h
s_sis2.o:	s_sis2.h svdpack.h sis.h
s_runsis1.o: svdpack.h s_runsis1.h s_sis1.h
s_runsis2.o: svdpack.h s_runsis2.h s_sis2.h

s_tms1.o:	s_tms1.h svdpack.h tms.h
s_tms2.o:	s_tms2.h svdpack.h tms.h
s_runtms1.o: svdpack.h s_runtms1.h s_tms1.h
s_runtms2.o: svdpack.h s_runtms2.h s_tms2.h


lib: ssvd
	ar r libmyssvd.a $(OBJS)
	ranlib libmyssvd.a

slib: ssvd
	${CC} -shared libmyssvd.so.1 $(OBJS)
.cc.o:   $*.cc 
	${CC} ${CFLAGS} $*.cc

install: lib
	cp *.h /projects/textmine/Data/suvrit/include/ssvd
	cp libmyssvd.a /projects/textmine/Data/suvrit/lib/

clean:
	rm -f $(OBJS) $(POBJS) driver *~
