# File: makefile
# For the sparse library and driver program.

include ../make.settings

DBLOBJS = matrix_common.o sparsematrix.o ccs.o crs.o harwell_boeing.o\
	 matrix.o dense_matrix.o matlab.o col_coord.o\
	 row_coord.o coord_ccs.o coord_crs.o

SINGLOBJS = sparsematrix_float.o ccs_float.o crs_float.o\
	 harwell_boeing_float.o matrix_float.o dense_matrix_float.o\
	 coord_float.o col_coord_float.o row_coord_float.o\
	coord_ccs_float.o coord_crs_float.o

LIBOBJS =  $(DBLOBJS) $(SINGLOBJS)

DRIVOBJS = driver.o main.o

ALLOBJS = $(LIBOJBS) $(DRIVOBJS)

CC=gcc

%.o: %.cc %.h
	$(CXX) -c $(INC) $(CXXFLAGS)  $< -o $@

%.o: %.c %.h
	$(CC) -g -c $(INC) $(CFLAGS) $< -o $@

sparse: $(DRIVOBJS) libsparse.a libmyutil.a
		$(CXX) -o sparse $(DRIVOBJS) $(LIBPATH) -lsparse $(LIBS)
		cp sparse $(BINDIR)/

libutil: libmyutil.a

libmyutil.a: util.o
	ar r libmyutil.a util.o
	ranlib libmyutil.a

lib: libsslib.a

eigs: libsparse.a eigs.o
	$(CXX) -o eigs eigs.cc $(LIBPATH) $(UTIL) -lsparse $(GSL)\
	 $(ARPACK) $(LAPACK) $(BLAS) $(ATLAS) $(F2C)
	cp eigs $(BINDIR)

libsparse.a: $(LIBOBJS)
	ar r libsparse.a $(LIBOBJS)
	ranlib libsparse.a
	cp libsparse.a $(BASEDIR)/lib

libsslib.a: libsparse.a matrix.o dense_matrix.o dense_matrix_float.o matrix_float.o
	ar r libsslib.a $(LIBOBJS) matrix.o dense_matrix.o
	ranlib libsslib.a
	cp libsslib.a $(BASEDIR)/lib
	cp libmyutil.a $(BASEDIR)/lib

sagelib: sslib_dccs.o
	ar r libsagesslib.a sslib_dccs.o

clean:
	rm -f *.o *.a *~

clean2: clean
	rm -f eigs sparse
