

SOURCES := \
   eigs/auxiliary_eigs.cpp \
   eigs/auxiliary_eigs_normal.cpp \
   eigs/convergence.cpp \
   eigs/correction.cpp \
   eigs/factorize.cpp \
   eigs/init.cpp \
   eigs/inner_solve.cpp \
   eigs/main_iter.cpp \
   eigs/ortho.cpp \
   eigs/primme_c.cpp \
   eigs/primme_f77.cpp \
   eigs/primme_interface.cpp \
   eigs/restart.cpp \
   eigs/solve_projection.cpp \
   eigs/update_projection.cpp \
   eigs/update_W.cpp \
   linalg/auxiliary.cpp \
   linalg/blaslapack.cpp \
   linalg/magma_wrapper.cpp \
   linalg/memman.cpp \
   linalg/wtime.cpp \
   svds/primme_svds_c.cpp \
   svds/primme_svds_f77.cpp \
   svds/primme_svds_interface.cpp

OBJS := $(patsubst %.cpp,%.o,$(SOURCES))

LAPACK_SOURCES = zhegv.cpp

LAPACK_OBJS = $(patsubst %.cpp,%.o,$(LAPACK_SOURCES))

INCLUDE_PRIMME = $(INCLUDE) -I../../inst/include/c_interface -Iinclude

#
# Compilation
#

%.o: %.c
	$(CC) $(CFLAGS) $(DEFINES) -c $< -o $@

$(OBJS): %.o: %.cpp
	$(CXX) $(CXXFLAGS) $(DEFINES) $(INCLUDE_PRIMME) -c $< -o $@

#
# Archive object files in the full library
#

libprimme.a: $(OBJS)
	$(AR) rv $@ $(OBJS);\
	$(RANLIB) $@

libprimmeext.a: $(LAPACK_OBJS)
	$(AR) rv $@ $(LAPACK_OBJS);\
	$(RANLIB) $@

clean:
	-@rm -f $(OBJS) $(LAPACK_OBJS)

.DELETE_ON_ERROR: $(OBJS) $(LAPACK_OBJS)
.PHONY: clean
