#
# Petsc Makefile for netsolve
#
COMPONENT = PETSC
TYPE = iterative

info ::
	@echo "make tester, libfiles, clean_examples"
	@echo "set DEBUG_SWITCH=yes/no for debug code to be included"

NETSOLVE_LIB_FILES_for_PETSC = petsc_itmeth.o petsc_auxs.o petsc_matrix_auxs.o
NETSOLVE_TESTERS_for_PETSC = itmeth user
NETSOLVE_TESTER_FILES_for_PETSC = test_itmeth.o test_user.o

include ../../../../../conf/Makefile.inc
include ../../Makefile.env
include $(NETSOLVE_SPARSE_DIR)/Makefile.has
include $(NETSOLVE_SPARSE_DIR)/Makefile.inc
include Makefile.lib
include ../driver/Makefile.lib
include $(NETSOLVE_SPARSE_DIR)/Makefile.rules

# we don't load the petsc base file because that overrides some rules
include $(PETSC_DIR)/bmake/common_variables
include $(PETSC_DIR)/bmake/$(PETSC_ARCH)/base_variables
CFLAGS = $(GLOBAL_CFLAGS) $(PETSC_INCLUDE) $(CPPFLAGS)
CC=gcc
libfiles : libdir
	@$(MAKE) netsolvelib

include $(NETSOLVE_AUX_DIR)/Makefile.lib

include $(NETSOLVE_TEST_DIR)/Makefile.test
include $(NETSOLVE_TEST_DIR)/Makefile.lib
itmeth matprod user : libfiles $(NETSOLVE_TESTER_FILES_for_PETSC) \
		userfun.o \
		$(NETSOLVE_LIB_for_PETSC) $(PETSC_LIB_DEPEND) \
		$(NETSOLVE_LIB_for_AUX)
	rm -f $@
	$(PURIFY) \
	$(LINKER) $(LDFLAGS) -o $@ test_$@.o \
	    `if [ "$@" = "user" ] ; then echo userfun.o ; fi`\
	    $(NETSOLVE_LIB_for_PETSC) \
	    $(NETSOLVE_LIB_for_DRIVER_ITERATIVE_AUXS) \
	    $(NETSOLVE_LIB_for_AUX) $(NETSOLVE_LIB_for_TESTER) \
	    $(PETSC_LIB_LINK) $(MPI_LIB_LINK) \
	    $(LAPACK_LIB_LINK) $(BLAS_LIB_LINK) \
	    $(MORE_LIBS_TESTER_FILES) $(MORE_LIBS)
	chmod 755 $@

# dependencies on include files
$(NETSOLVE_TESTER_FILES_for_PETSC) $(NETSOLVE_LIB_FILES_for_PETSC) : \
		netsolve_petsc.h petsc_auxs.h \
		../aux/matrix_auxs.h ../aux/parallel_auxs.h
clean ::
	@/bin/rm -f itmeth user
include ../Makefile.clean
